다음을 통해 공유


ZwOpenEvent 함수(wdm.h)

ZwOpenEvent 루틴은 지정된 원하는 액세스 권한이 있는 기존 명명된 이벤트 개체에 대한 핸들을 엽니다.

구문

NTSYSCALLAPI NTSTATUS ZwOpenEvent(
  [out] PHANDLE            EventHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

매개 변수

[out] EventHandle

이벤트 개체 핸들을 받을 변수에 대한 포인터입니다. 핸들에는 참조 수 및 보안 컨텍스트와 같은 부기 정보가 포함됩니다.

[in] DesiredAccess

이벤트 개체에 대해 원하는 액세스 형식을 나타내는 ACCESS_MASK 값입니다. 다음 표에는 이벤트별 ACCESS_MASK 값이 포함되어 있습니다.

원하는 액세스
EVENT_QUERY_STATE 이벤트 개체의 상태를 쿼리합니다.
EVENT_MODIFY_STATE 이벤트 개체의 상태를 수정합니다.
EVENT_ALL_ACCESS 이벤트 개체에 대해 가능한 모든 액세스 권한입니다.

[in] ObjectAttributes

호출자가 지정한 개체에 사용할 개체 특성 구조체에 대한 포인터입니다. 예를 들어 이러한 특성에는 ObjectName 및 핸들 특성이 포함됩니다. 이 매개 변수는 InitializeObjectAttributes 매크로를 호출하여 초기화됩니다.

반환 값

ZwOpenEvent는 STATUS_SUCCESS 또는 적절한 오류 상태 반환합니다. 이 루틴은 다음 오류 상태 코드 중 하나를 반환할 수 있습니다.

반환 코드 설명
STATUS_INSUFFICIENT_RESOURCES 이 함수에 필요한 리소스를 할당할 수 없습니다.
STATUS_INVALID_PARAMETER ObjectAttributes 구조체가 제공되지 않았거나 잘못된 매개 변수 값이 포함되어 있지 않습니다.
STATUS_OBJECT_NAME_INVALID ObjectAttributes 매개 변수에 잘못된 OBJECT_ATTRIBUTES 구조체에 ObjectName이 포함되어 있습니다.
STATUS_OBJECT_PATH_SYNTAX_BAD 개체 경로에 잘못된 구문이 포함되어 있습니다. 예를 들어 ObjectAttributes 매개 변수는 RootDirectory 멤버를 포함하지 않지만 OBJECT_ATTRIBUTES 구조체의 ObjectName 멤버는 빈 문자열이거나 OBJECT_NAME_PATH_SEPARATOR 문자로 시작되지 않습니다.
STATUS_OBJECT_PATH_NOT_FOUND 개체가 존재하지 않음을 나타내는 경로를 찾을 수 없습니다.
STATUS_OBJECT_NAME_NOT_FOUND 개체 이름이 없습니다. 개체가 존재하지 않음을 나타냅니다.
STATUS_PRIVILEGE_NOT_HELD 호출자에게 DesiredAccess 매개 변수에 지정된 액세스 권한이 있는 핸들을 만드는 데 필요한 권한이 없습니다.

설명

ZwOpenEvent 는 기존의 명명된 이벤트 개체를 열고 지정된 원하는 액세스 권한으로 개체에 대한 핸들을 만듭니다.

ZwOpenEvent는 알림 또는 동기화 이벤트를 열 수 있습니다.

이벤트는 실행을 조정하는 데 사용됩니다. 파일 시스템 드라이버는 이벤트를 사용하여 지정된 이벤트가 Signaled 상태로 설정될 때까지 호출자가 요청된 작업이 완료될 때까지 대기할 수 있도록 할 수 있습니다.

알림 이벤트를 사용하여 이벤트가 발생했음을 하나 이상의 실행 스레드에 알릴 수 있습니다. 동기화 이벤트는 관련이 없는 두 드라이버 간의 하드웨어 액세스 직렬화에 사용할 수 있습니다.

ZwOpenEvent 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwOpenEvent" 대신 "NtOpenEvent"라는 이름을 사용해야 합니다.

커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

ACCESS_MASK

InitializeObjectAttributes

IoCreateNotificationEvent

IoCreateSynchronizationEvent

KeClearEvent

KeResetEvent

KeSetEvent

KeWaitForSingleObject

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

ZwClose

ZwCreateEvent

ZwSetEvent

ZwWaitForSingleObject