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


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

Подпрограмма ZwQueryKey содержит сведения о классе раздела реестра и количестве и размерах его вложенных ключей.

Синтаксис

NTSYSAPI NTSTATUS ZwQueryKey(
  [in]            HANDLE                KeyHandle,
  [in]            KEY_INFORMATION_CLASS KeyInformationClass,
  [out, optional] PVOID                 KeyInformation,
  [in]            ULONG                 Length,
  [out]           PULONG                ResultLength
);

Параметры

[in] KeyHandle

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

[in] KeyInformationClass

Задает значение KEY_INFORMATION_CLASS , определяющее тип информации, возвращаемой в буфере KeyInformation .

[out, optional] KeyInformation

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

[in] Length

Задает размер буфера KeyInformation в байтах.

[out] ResultLength

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

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

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

Код возврата Description
STATUS_BUFFER_OVERFLOW Предоставленный буфер слишком мал, и в буфер записываются только частичные данные. * ResultLength имеет минимальный размер, необходимый для хранения запрошенных сведений.
STATUS_BUFFER_TOO_SMALL Предоставленный буфер слишком мал, и данные не записываются в буфер. * ResultLength имеет минимальный размер, необходимый для хранения запрошенных сведений.
СТАТУС_НЕДЕЙСТВИТЕЛЬНЫЙ_ПАРАМЕТР Параметр KeyInformationClass не является допустимым значением KEY_INFORMATION_CLASS .

Замечания

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

Если KeyInformationClass является KeyNameInformation или KeyHandleTagsInformation, требование KEY_QUERY_VALUE не применяется.

ZwQueryKey можно использовать для получения сведений, которые можно использовать для выделения буферов для хранения данных реестра, таких как максимальный размер записей значений ключа или имена вложенных ключей или количество вложенных ключей. Например, можно вызвать ZwQueryKey, использовать возвращаемые сведения, чтобы выделить буфер для подраздела, вызвать ZwEnumerateKey, чтобы получить имя подраздела, и передать это имя в подпрограмму реестра RtlXxx.

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

Если вызов этой функции происходит в пользовательском режиме, вместо ZwQueryKey следует использовать имя NtQueryKey.

Для вызовов драйверов в режиме ядра NtXxx и ZwXxx версии подпрограммы Windows Native System Services могут вести себя по-разному в том, как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между NtXxx и ZwXxx версиями подпрограммы см. в разделе Using Nt and Zw Versions of the Native System Services Routines.

Требования

Требование Ценность
целевая платформа Всеобщий
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI HwStorPortProhibitedDDIs(storport), IrqlZwPassive(wdm), PowerIrpDDis(wdm), ZwRegistryCreate(storport), ZwRegistryCreate(storport), ZwRegistryCreate(wdm), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen (zwRegistryOpen)

См. также

KEY_BASIC_INFORMATION

KEY_CACHED_INFORMATION

KEY_FULL_INFORMATION

KEY_INFORMATION_CLASS

KEY_NAME_INFORMATION

KEY_NODE_INFORMATION

KEY_VIRTUALIZATION_INFORMATION

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

ZwClose

ZwEnumerateKey

ZwOpenKey