Поделиться через


Функция ZwQueryValueKey (wdm.h)

Подпрограмма ZwQueryValueKey возвращает запись значения для раздела реестра.

Синтаксис

NTSYSAPI NTSTATUS ZwQueryValueKey(
  [in]            HANDLE                      KeyHandle,
  [in]            PUNICODE_STRING             ValueName,
  [in]            KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
  [out, optional] PVOID                       KeyValueInformation,
  [in]            ULONG                       Length,
  [out]           PULONG                      ResultLength
);

Параметры

[in] KeyHandle

Дескриптор к ключу для чтения записей значений. Этот дескриптор создается путем успешного вызова ZwCreateKey или ZwOpenKey.

[in] ValueName

Указатель на имя записи значения для получения данных.

[in] KeyValueInformationClass

Значение KEY_VALUE_INFORMATION_CLASS , определяющее тип сведений, возвращаемых в буфере KeyValueInformation .

[out, optional] KeyValueInformation

Указатель на буфер, выделенный вызывающим объектом, который получает запрошенные сведения.

[in] Length

Указывает размер (в байтах) буфера KeyValueInformation .

[out] ResultLength

Указатель на переменную, которая получает размер (в байтах) сведений о ключе. Если подпрограмма ZwQueryValueKey возвращает STATUS_SUCCESS, вызывающие методы могут использовать значение этой переменной для определения объема возвращаемых данных. Если подпрограмма возвращает STATUS_BUFFER_OVERFLOW или STATUS_BUFFER_TOO_SMALL, вызывающие абоненты могут использовать значение этой переменной для определения размера буфера, необходимого для хранения сведений о ключе.

Возвращаемое значение

ZwQueryValueKey возвращает STATUS_SUCCESS при успешном выполнении или соответствующий код ошибки при сбое. Возможные значения кода ошибки:

Код возврата Описание
STATUS_OBJECT_NAME_NOT_FOUND Значение реестра недоступно.
STATUS_BUFFER_OVERFLOW Предоставленный буфер слишком мал, и в него записаны только частичные данные. Для параметра ResultLength задан минимальный размер, необходимый для хранения запрошенных сведений.
STATUS_BUFFER_TOO_SMALL Предоставленный буфер слишком мал, и никакие данные не были записаны в буфер. Для параметра ResultLength задан минимальный размер, необходимый для хранения запрошенных сведений.
STATUS_INVALID_PARAMETER Параметр KeyInformationClass не является допустимым KEY_VALUE_INFORMATION_CLASS значением.

Комментарии

Ключ KeyHandle, переданный в ZwQueryValueKey, должен быть открыт с KEY_QUERY_VALUE доступом. Это достигается путем передачи KEY_QUERY_VALUE, KEY_READ или KEY_ALL_ACCESS в качестве параметра DesiredAccessв ZwCreateKey или ZwOpenKey.

Дополнительные сведения о работе с разделами реестра см. в статье Использование реестра в драйвере.

Если вызов этой функции выполняется в пользовательском режиме, следует использовать имя NtQueryValueKey вместо ZwQueryValueKey. Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы Собственные системные службы Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями подпрограмм NtXxx и ZwXxx см. в разделе Использование версий NT и Zw подпрограмм собственных системных служб.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI HwStorPortProhibitedDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm)

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

KEY_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_INFORMATION_CLASS

KEY_VALUE_PARTIAL_INFORMATION

Использование версий nt и Zw собственных системных служб

ZwCreateKey

ZwEnumerateValueKey

ZwOpenKey