Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подпрограмма 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_VIRTUALIZATION_INFORMATION
Использование версий nt и Zw подпрограмм собственных системных служб