다음을 통해 공유


ZwQueryValueKey 함수(wdm.h)

ZwQueryValueKey 루틴은 레지스트리 키에 대한 값 항목을 반환합니다.

구문

NTSYSAPI NTSTATUS ZwQueryValueKey(
  [in]            HANDLE                      KeyHandle,
  [in]            PUNICODE_STRING             ValueName,
  [in]            KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
  [out, optional] PVOID                       KeyValueInformation,
  [in]            ULONG                       Length,
  [out]           PULONG                      ResultLength
);

매개 변수

[in] KeyHandle

값 항목을 읽을 키에 대한 핸들입니다. 이 핸들은 ZwCreateKey 또는 ZwOpenKey성공적으로 호출하여 만듭니다.

[in] ValueName

데이터를 가져올 값 항목의 이름에 대한 포인터입니다.

[in] KeyValueInformationClass

KeyValueInformation 버퍼에서 반환되는 정보의 형식을 결정하는 KEY_VALUE_INFORMATION_CLASS 값입니다.

[out, optional] KeyValueInformation

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

[in] Length

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

[out] ResultLength

키 정보의 크기(바이트)를 수신하는 변수에 대한 포인터입니다. ZwQueryValueKey 루틴이 STATUS_SUCCESS 반환하는 경우 호출자는 이 변수의 값을 사용하여 반환되는 데이터의 양을 결정할 수 있습니다. 루틴이 STATUS_BUFFER_OVERFLOW 또는 STATUS_BUFFER_TOO_SMALL 반환하는 경우 호출자는 이 변수의 값을 사용하여 키 정보를 보유하는 데 필요한 버퍼 크기를 결정할 수 있습니다.

반환 값

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

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

설명

ZwQueryValueKey에 전달된 KeyHandle은 KEY_QUERY_VALUE 액세스 권한으로 열렸어야 합니다. 이 작업은 KEY_QUERY_VALUE, KEY_READ 또는 KEY_ALL_ACCESS DesiredAccess 매개 변수로 ZwCreateKey 또는 ZwOpenKey 에 전달하여 수행 됩니다.

레지스트리 키 작업에 대한 자세한 내용은 드라이버에서 레지스트리 사용을 참조하세요.

이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwQueryValueKey" 대신 "NtQueryValueKey"라는 이름을 사용해야 합니다. 커널 모드 드라이버에서 호출하는 경우 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_INFORMATION_CLASS

KEY_VALUE_PARTIAL_INFORMATION

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

ZwCreateKey

ZwEnumerateValueKey

ZwOpenKey