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

KeyInformation 버퍼에서 반환되는 정보의 형식을 결정하는 KEY_INFORMATION_CLASS 값을 지정합니다.

[out, optional] KeyInformation

요청된 정보를 수신하는 호출자가 할당한 버퍼에 대한 포인터입니다.

[in] Length

KeyInformation 버퍼의 크기(바이트)를 지정합니다.

[out] ResultLength

요청된 키 정보의 크기(바이트)를 수신하는 변수에 대한 포인터입니다. ZwQueryKey가 STATUS_SUCCESS 반환하는 경우 변수에는 반환되는 데이터의 양이 포함됩니다. ZwQueryKey가 STATUS_BUFFER_OVERFLOW 또는 STATUS_BUFFER_TOO_SMALL 반환하는 경우 변수 값을 사용하여 필요한 버퍼 크기를 확인할 수 있습니다.

반환 값

ZwQueryKey 는 성공 시 STATUS_SUCCESS 반환하거나 실패 시 적절한 오류 코드를 반환합니다. 가능한 오류 코드 값은 다음과 같습니다.

반환 코드 설명
STATUS_BUFFER_OVERFLOW 제공된 버퍼가 너무 작고 부분 데이터만 버퍼에 기록되었습니다. *ResultLength 는 요청된 정보를 보유하는 데 필요한 최소 크기로 설정됩니다.
STATUS_BUFFER_TOO_SMALL 제공된 버퍼가 너무 작아서 버퍼에 데이터가 기록되지 않았습니다. *ResultLength 는 요청된 정보를 보유하는 데 필요한 최소 크기로 설정됩니다.
STATUS_INVALID_PARAMETER KeyInformationClass 매개 변수가 유효한 KEY_INFORMATION_CLASS 값이 아닙니다.

설명

ZwQueryKey에 전달된 KeyHandle은 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"라는 이름을 사용해야 합니다.

커널 모드 드라이버에서 호출하는 경우 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_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