ZwOpenKey 함수(wdm.h)
ZwOpenKey 루틴은 기존 레지스트리 키를 엽니다.
구문
NTSYSAPI NTSTATUS ZwOpenKey(
[out] PHANDLE KeyHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes
);
매개 변수
[out] KeyHandle
키에 대한 핸들을 수신하는 HANDLE 변수에 대한 포인터입니다.
[in] DesiredAccess
개체에 대한 요청된 액세스를 결정하는 ACCESS_MASK 값을 지정합니다. 자세한 내용은 ZwCreateKey의 DesiredAccess 매개 변수를 참조하세요.
[in] ObjectAttributes
개체 이름 및 기타 특성을 지정하는 OBJECT_ATTRIBUTES 구조체에 대한 포인터입니다. InitializeObjectAttributes를 사용하여 이 구조를 초기화합니다. 호출자가 시스템 스레드 컨텍스트에서 실행되고 있지 않으면 InitializeObjectAttributes를 호출할 때 OBJ_KERNEL_HANDLE 특성을 설정해야 합니다.
반환 값
ZwOpenKey는 지정된 키가 열려 있으면 STATUS_SUCCESS 반환합니다. 그렇지 않으면 다음을 포함하여 오류 상태 반환할 수 있습니다.
STATUS_INVALID_HANDLE
STATUS_ACCESS_DENIED
설명
ZwOpenKey 는 호출자가 레지스트리 키를 조작하는 데 사용할 수 있는 핸들을 제공합니다. 루틴은 ZwCreateKey 기능의 하위 집합을 제공합니다. 자세한 내용은 드라이버에서 레지스트리 사용을 참조하세요.
지정된 키가 없으면 ZwOpenKey는 오류 상태 반환하고 키 핸들을 반환하지 않습니다.
KeyHandle이 가리키는 핸들이 더 이상 사용되지 않으면 드라이버는 ZwClose를 호출하여 닫아야 합니다.
ZwOpenKey 는 ObjectAttributes 매개 변수가 가리키는 구조의 보안 정보를 무시합니다.
호출자가 시스템 스레드 컨텍스트에서 실행되고 있지 않으면 호출자가 만드는 모든 핸들이 프라이빗 핸들인지 확인해야 합니다. 그렇지 않으면 드라이버가 실행 중인 컨텍스트의 프로세스에서 핸들에 액세스할 수 있습니다. 자세한 내용은 개체 핸들을 참조하세요.
레지스트리 키 작업에 대한 자세한 내용은 드라이버에서 레지스트리 사용을 참조하세요.
이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwOpenKey" 대신 "NtOpenKey"라는 이름을 사용해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 유니버설 |
헤더 | 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), ZwRegistryOpen(storport), ZwRegistryOpen(storport), ZwRegistryOpen(wdm) |