IoCreateNotificationEvent 함수(wdm.h)

IoCreateNotificationEvent 루틴은 하나 이상의 실행 스레드에 이벤트가 발생했음을 알리는 데 사용되는 명명된 알림 이벤트를 만들거나 엽니다.

구문

PKEVENT IoCreateNotificationEvent(
  [in]  PUNICODE_STRING EventName,
  [out] PHANDLE         EventHandle
);

매개 변수

[in] EventName

이벤트 이름을 지정하는 null로 종료된 유니코드 문자열을 포함하는 버퍼에 대한 포인터입니다.

[out] EventHandle

이벤트 개체에 대한 커널 핸들을 반환할 위치에 대한 포인터입니다.

반환 값

IoCreateNotificationEvent 는 생성되거나 열린 이벤트 개체에 대한 포인터를 반환하거나 이벤트 개체를 만들거나 열 수 없는 경우 NULL 을 반환합니다.

설명

이벤트 개체가 아직 없는 경우 IoCreateNotificationEvent 는 이벤트 개체를 만들고 열고 상태를 Signaled로 설정합니다.

이벤트 개체가 이미 있는 경우 IoCreateNotificationEvent 는 이벤트 개체를 엽니다.

알림 이벤트와 동기화 이벤트는 모두 실행을 조정하는 데 사용됩니다. 그러나 동기화 이벤트 자체를 다시 설정하는 동안 드라이버가 KeClearEvent 또는 KeResetEvent를 호출할 때까지 알림 이벤트는 Signaled 상태로 유지됩니다.

알림 이벤트에서 동기화하려면 다음을 수행합니다.

  1. IoCreateNotificationEvent 를 사용하여 알림 이벤트를 엽니다. EventName 문자열을 사용하여 이벤트를 식별합니다.
  2. IoCreateNotificationEvent 에서 반환된 PKEVENT를 사용하여 KeWaitForSingleObject를 호출하여 이벤트가 신호를 받을 때까지 기다립니다. 두 개 이상의 실행 스레드가 지정된 알림 이벤트를 기다릴 수 있습니다. 중단 대신 폴링하려면 KeWaitForSingleObject 에 시간 제한을 0으로 지정합니다.
  3. 이벤트에 대한 액세스가 더 이상 필요하지 않은 경우 ZwClose 를 사용하여 알림 이벤트에 대한 핸들을 닫습니다.

이벤트 개체를 공유하는 두 가지 주요 메서드는 다음과 같습니다.

  • 사용자 모드 애플리케이션은 이벤트 개체를 만들고 드라이버에 IOCTL을 전송하여 개체에 핸들을 드라이버에 전달합니다. 드라이버는 이벤트 개체를 만든 프로세스의 컨텍스트에서 IOCTL을 처리해야 하며 ObReferenceObjectByHandle을 호출하여 핸들의 유효성을 검사해야 합니다. 이 메서드는 사용자와 커널 모드 간에 이벤트 개체를 공유하는 데 권장되는 방법입니다.

  • 드라이버는 전역 \BaseNamedObjects 개체 디렉터리에 명명된 이벤트 개체를 만듭니다. 사용자 모드에서 커널 모드 이벤트에 액세스하려면 이름 Global\\Xxx 를 사용합니다. 보안 설정은 애플리케이션이 이벤트를 열지 못하게 할 수 있습니다. \\BaseNamedObjects 개체 디렉터리는 Microsoft Win32 하위 시스템이 초기화될 때까지 만들어지지 않으므로 부팅 시 로드된 드라이버는 DriverEntry 루틴의 \\BaseNamedObjects 디렉터리에 이벤트 개체를 만들 수 없습니다.

이벤트에 대한 자세한 내용은 이벤트 개체를 참조하세요.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), IrqlIoPassive4(wdm)

참조

IoCreateSynchronizationEvent

KeClearEvent

KeResetEvent

KeSetEvent

KeWaitForSingleObject

RtlInitUnicodeString

ZwClose