функция обратного вызова RTL_QUERY_REGISTRY_ROUTINE (wdm.h)
Подпрограмма QueryRoutine предоставляет сведения о значении реестра, запрошенном в предыдущем вызове подпрограммы RtlQueryRegistryValues .
Синтаксис
RTL_QUERY_REGISTRY_ROUTINE RtlQueryRegistryRoutine;
NTSTATUS RtlQueryRegistryRoutine(
[in] PWSTR ValueName,
[in] ULONG ValueType,
[in] PVOID ValueData,
[in] ULONG ValueLength,
[in, optional] PVOID Context,
[in, optional] PVOID EntryContext
)
{...}
Параметры
[in] ValueName
Указывает раздел реестра, связанный с запрошенным значением реестра. Этот параметр является указателем на строку Юникода, завершающуюся null, которая содержит ключ.
[in] ValueType
Указывает тип значения реестра, хранящегося с указанным разделом реестра. Дополнительные сведения о типах значений реестра см. в определении параметра Type в KEY_VALUE_BASIC_INFORMATION.
[in] ValueData
Указатель на значение данных, связанное с указанным разделом реестра. Драйвер должен рассматривать это значение как доступное только для чтения. Дополнительные сведения о типе данных значений, на которые указывает ValueData , см. в определении параметра Type в KEY_VALUE_BASIC_INFORMATION.
[in] ValueLength
Указывает длину (в байтах) значения, на которое указывает ValueData .
[in, optional] Context
Задает значение параметра Context , указанное драйвером в предыдущем вызове RtlQueryRegistryValues.
[in, optional] EntryContext
Задает значение EntryContext в элементе массива QueryTable , заданное драйвером в предыдущем вызове RtlQueryRegistryValues.
Возвращаемое значение
QueryRoutine возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код состояния ошибки. Используйте только коды состояния, определенные в файле заголовка Ntstatus.h.
Комментарии
Драйвер режима ядра реализует подпрограмму QueryRoutine . Эта подпрограмма вызывается подпрограммой RtlQueryRegistryValues .
Чтобы получить сведения об одном или нескольких значениях реестра, драйвер вызывает RtlQueryRegistryValues и передает указатель в качестве входного параметра в массив RTL_QUERY_REGISTRY_TABLE структур. Каждая структура в этом массиве содержит указатель на реализованную драйвером подпрограмму QueryRoutine и запрос сведений о конкретном значении реестра. Для каждой структуры в массиве RtlQueryRegistryValues вызывает указанную подпрограмму QueryRoutine и передает ей набор параметров, содержащих запрошенные сведения о указанном значении реестра.
Дополнительные сведения о структуре RTL_QUERY_REGISTRY_TABLE см. в разделе RtlQueryRegistryValues.
Примеры
Чтобы определить подпрограмму обратного вызова QueryRoutine , необходимо сначала предоставить объявление функции, определяющее тип определяемой процедуры обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.
Например, чтобы определить подпрограмму обратного вызова QueryRoutine с именем MyQueryRoutine
, используйте тип RTL_QUERY_REGISTRY_ROUTINE, как показано в следующем примере кода:
RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;
Затем реализуйте процедуру обратного вызова следующим образом:
_Use_decl_annotations_
NTSTATUS
MyQueryRoutine(
PWSTR ValueName,
ULONG ValueType,
PVOID ValueData,
ULONG ValueLength,
PVOID Context,
PVOID EntryContext
)
{
// Function body
}
Тип функции RTL_QUERY_REGISTRY_ROUTINE определен в файле заголовка Wdm.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку _Use_decl_annotations_
в определение функции. Заметка _Use_decl_annotations_
гарантирует, что будут использоваться заметки, применяемые к типу функции RTL_QUERY_REGISTRY_ROUTINE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов WDM. Сведения о _Use_decl_annotations_
см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | Вызывается на PASSIVE_LEVEL. |