ZwOpenKeyEx 함수(wdm.h)

ZwOpenKeyEx 루틴은 기존 레지스트리 키를 엽니다.

구문

NTSYSAPI NTSTATUS ZwOpenKeyEx(
  [out] PHANDLE            KeyHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes,
  [in]  ULONG              OpenOptions
);

매개 변수

[out] KeyHandle

루틴이 키에 핸들을 쓰는 HANDLE 변수에 대한 포인터입니다.

[in] DesiredAccess

호출자가 요청하는 키에 대한 액세스 유형을 지정합니다. 이 매개 변수는 ACCESS_MASK 값입니다. 자세한 내용은 ZwCreateKey 루틴의 DesiredAccess 매개 변수에 대한 설명을 참조하세요.

[in] ObjectAttributes

열려는 키의 개체 특성에 대한 포인터입니다. 이 매개 변수는 InitializeObjectAttributes 루틴에서 이전에 초기화해야 하는 OBJECT_ATTRIBUTES 구조를 가리킵니다. 호출자는 InitializeObjectAttributes 호출에서 레지스트리 키의 이름을 ObjectName 매개 변수로 지정해야 합니다. 호출자가 시스템 스레드 컨텍스트에서 실행되고 있지 않으면 InitializeObjectAttributes를 호출할 때 OBJ_KERNEL_HANDLE 특성을 설정해야 합니다.

[in] OpenOptions

키를 열 때 적용할 옵션을 지정합니다. 이 매개 변수를 0으로 설정하거나 다음 REG_OPTION_XXX 플래그 비트 중 하나 이상의 비트 OR로 설정합니다.

OpenOptions 플래그 Description
REG_OPTION_OPEN_LINK 키는 기호 링크입니다. 이 플래그는 디바이스 및 중간 드라이버에서 사용되지 않습니다.
REG_OPTION_BACKUP_RESTORE 키는 백업 및 복원 작업을 허용하는 특별한 권한으로 열어야 합니다. 이 플래그는 디바이스 및 중간 드라이버에서 사용되지 않습니다.

반환 값

ZwOpenKeyEx 는 호출이 키를 여는 데 성공하면 STATUS_SUCCESS 반환합니다. 가능한 오류 반환 값은 다음과 같습니다.

반환 코드 설명
STATUS_INVALID_PARAMETER_4
OpenOptions 매개 변수는 잘못된 옵션을 지정합니다.
STATUS_OBJECT_PATH_SYNTAX_BAD
개체 특성의 레지스트리 경로가 잘못되었습니다.
STATUS_OBJECT_NAME_NOT_FOUND
개체 특성의 레지스트리 키 이름을 찾을 수 없습니다.
STATUS_OBJECT_TYPE_MISMATCH
명명된 레지스트리 키는 기호 링크이지만 REG_OPTION_OPEN_LINK 플래그 비트는 OpenOptions에서 설정되지 않습니다.
STATUS_ACCESS_DENIED
호출자에게 명명된 레지스트리 키에 대한 핸들을 여는 데 필요한 액세스 권한이 없습니다.
STATUS_INSUFFICIENT_RESOURCES
메모리 할당 작업이 실패했습니다.

설명

이 루틴은 호출자가 레지스트리 키에 액세스할 수 있는 핸들을 제공합니다. 지정된 키가 없으면 루틴은 오류 상태 값을 반환하고 키 핸들을 제공하지 않습니다.

ZwOpenKey 루틴은 ZwOpenKeyEx와 비슷하지만 OpenOptions 매개 변수를 허용하지 않습니다. ZwOpenKeyExOpenOptions 매개 변수를 사용하면 호출자가 기호 링크인 키를 열거나 백업 및 복원 작업을 위한 키를 열 수 있습니다. OpenOptions = 0을 사용하여 ZwOpenKeyEx를 호출하는 것은 ZwOpenKey 호출과 동일합니다.

KeyHandle이 가리키는 핸들이 더 이상 사용되지 않으면 드라이버는 ZwClose를 호출하여 닫아야 합니다.

ZwOpenKeyExObjectAttributes 매개 변수가 가리키는 구조체의 보안 정보를 무시합니다.

커널 모드 호출자가 시스템 스레드 컨텍스트에서 실행되고 있지 않으면 커널 핸들을 만드는 핸들이 있는지 확인해야 합니다. 그렇지 않으면 드라이버가 실행 중인 컨텍스트의 프로세스에서 핸들에 액세스할 수 있습니다. 자세한 내용은 개체 핸들을 참조하세요.

커널 모드에서 레지스트리 키를 사용하는 방법에 대한 자세한 내용은 드라이버에서 레지스트리 사용을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 및 이후 버전의 Windows에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

ACCESS_MASK

InitializeObjectAttributes

OBJECT_ATTRIBUTES

ZwClose

ZwOpenKey