функция обратного вызова 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.

См. также раздел

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues