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
값 정보를 원하는 하위 키의 인덱스(0부터 시작)입니다.
[in] KeyValueInformationClass
KeyValueInformation 버퍼에서 반환되는 정보의 유형을 결정하는 KEY_VALUE_INFORMATION_CLASS 값을 지정합니다.
[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 반환합니다. |
설명
ZwEnumerateValueKey에 전달된 KeyHandle은 KEY_QUERY_VALUE 액세스 권한으로 열려 있어야 합니다. 이 작업은 KEY_QUERY_VALUE, KEY_READ 또는 KEY_ALL_ACCESS DesiredAccess 매개 변수로 ZwCreateKey 또는 ZwOpenKey에 전달하여 수행됩니다.
인덱스는 단순히 값 항목이 있는 하위 키 중에서 선택하는 방법입니다. 동일한 인덱스가 있는 ZwEnumerateValueKey에 대한 두 번의 호출은 동일한 결과를 반환하도록 보장되지 않습니다.
레지스트리 키 작업에 대한 자세한 내용은 드라이버에서 레지스트리 사용을 참조하세요.
이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwEnumerateValueKey" 대신 "NtEnumerateValueKey" 이름을 사용해야 합니다.
커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxx 및 ZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 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) |