다음을 통해 공유


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 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 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)

추가 정보

KEY_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_PARTIAL_INFORMATION

네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용

ZwClose

ZwCreateKey

ZwOpenKey

ZwQueryValueKey