Функция ZwEnumerateValueKey (wdm.h)
Подпрограмма ZwEnumerateValueKey получает сведения о записях значений открытого ключа.
Синтаксис
NTSYSAPI NTSTATUS ZwEnumerateValueKey(
[in] HANDLE KeyHandle,
[in] ULONG Index,
[in] KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
[out, optional] PVOID KeyValueInformation,
[in] ULONG Length,
[out] PULONG ResultLength
);
Параметры
[in] KeyHandle
Выполните обработку раздела реестра, для которого требуется перечислить записи значений. При успешном вызове ZwCreateKey или ZwOpenKey создается этот дескриптор.
[in] Index
Отсчитываемый от нуля индекс подраздела, для которого требуется получить сведения о значении.
[in] KeyValueInformationClass
Задает значение KEY_VALUE_INFORMATION_CLASS , определяющее тип сведений, возвращаемых в буфере KeyValueInformation .
[out, optional] KeyValueInformation
Указатель на буфер, выделенный вызывающим объектом, который получает запрошенные сведения.
[in] Length
Указывает размер (в байтах) буфера KeyValueInformation .
[out] ResultLength
Указатель на переменную, которая получает размер (в байтах) сведений о значении. Если эта подпрограмма возвращает STATUS_SUCCESS, переменная указывает объем возвращаемых данных. Если эта подпрограмма возвращает STATUS_BUFFER_OVERFLOW или STATUS_BUFFER_TOO_SMALL, переменная указывает размер буфера, необходимый для хранения сведений о значении.
Возвращаемое значение
ZwEnumerateValueKey возвращает STATUS_SUCCESS при успешном выполнении или соответствующий код ошибки при сбое. Возможные значения кода ошибки:
Код возврата | Описание |
---|---|
STATUS_BUFFER_OVERFLOW | Предоставленный буфер слишком мал, и в буфер были записаны только частичные данные. *Для параметра ResultLength задан минимальный размер, необходимый для хранения запрошенной информации. |
STATUS_BUFFER_TOO_SMALL | Предоставленный буфер слишком мал, и данные не были записаны в буфер. *Для параметра ResultLength задан минимальный размер, необходимый для хранения запрошенной информации. |
STATUS_INVALID_PARAMETER | Параметр KeyInformationClass не является допустимым KEY_VALUE_INFORMATION_CLASS значением. |
STATUS_NO_MORE_ENTRIES | Значение Index выходит за пределы диапазона для раздела реестра, указанного keyHandle. Например, если ключ содержит n подразделов, то для любого значения, превышающего n–1, подпрограмма возвращает STATUS_NO_MORE_ENTRIES. |
Комментарии
Объект KeyHandle, переданный в ZwEnumerateValueKey, должен быть открыт с KEY_QUERY_VALUE доступа. Это достигается путем передачи KEY_QUERY_VALUE, KEY_READ или KEY_ALL_ACCESS в качестве параметра DesiredAccess в ZwCreateKey или ZwOpenKey.
Индекс — это просто способ выбора подразделов с записями значений. Два вызова ZwEnumerateValueKey с одинаковым индексом не гарантированно возвращают одинаковые результаты.
Дополнительные сведения о работе с разделами реестра см. в разделе Использование реестра в драйвере.
Если вызов этой функции происходит в пользовательском режиме, следует использовать имя NtEnumerateValueKey вместо ZwEnumerateValueKey.
Для вызовов из драйверов режима ядра версии NtXxx и ZwXxx подпрограммы собственных системных служб Windows могут вести себя по-разному, так как они обрабатывают и интерпретируют входные параметры. Дополнительные сведения о связи между версиями процедуры NtXxx и ZwXxx см. в разделе Использование версий Nt и Zw для процедур собственных системных служб.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h) |
Библиотека | 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(wdm) |
См. также раздел
Использование версий Nt и Zw собственных процедур системных служб