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 네이티브 시스템 서비스 루틴의 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) |
추가 정보
KEY_VIRTUALIZATION_INFORMATION