KeInitializeEvent 함수(wdm.h)

KeInitializeEvent 루틴은 이벤트 개체를 동기화(단일 웨이터) 또는 알림 유형 이벤트로 초기화하고 신호 또는 신호되지 않은 상태로 설정합니다.

구문

void KeInitializeEvent(
  [out] PRKEVENT   Event,
  [in]  EVENT_TYPE Type,
  [in]  BOOLEAN    State
);

매개 변수

[out] Event

호출자가 스토리지를 제공하는 이벤트 개체에 대한 포인터입니다.

[in] Type

NotificationEvent 또는 SynchronizationEvent 이벤트 유형을 지정합니다.

[in] State

이벤트의 초기 상태를 지정합니다. TRUE 는 신호 상태를 나타냅니다.

반환 값

없음

설명

이벤트 개체의 스토리지는 드라이버에서 만든 디바이스 개체의 디바이스 확장, 드라이버에서 만든 컨트롤러 개체의 컨트롤러 확장 또는 호출자가 할당한 비페이지 풀에 상주해야 합니다. 스택에 이벤트를 할당하는 경우 KeWaitForSingleObject, KeWaitForMutexObject 또는 KeWaitForMultipleObjects를 호출할 때 KernelMode 대기를 지정해야 합니다. KernelMode 대기 중에 이벤트가 포함된 스택은 페이징되지 않습니다.

드라이버는 일반적으로 NotificationEvent 를 사용하여 I/O 작업이 완료되기를 기다립니다. 알림 이벤트가 신호 상태로 설정되면 이벤트가 신호 상태로 설정되기를 기다리는 모든 스레드가 실행될 수 있습니다. 스레드가 KeResetEvent 또는 KeClearEvent 를 호출하여 이벤트를 신호되지 않은 상태로 설정할 때까지 이벤트는 신호 상태로 유지됩니다.

SynchronizationEvent자동 집합 또는 자동 클리어링 이벤트라고도 합니다. 이러한 이벤트가 설정되면 단일 대기 스레드를 실행할 수 있게 됩니다. 커널은 대기가 충족될 때마다 이벤트를 신호되지 않은 상태로 자동으로 다시 설정합니다. 드라이버는 동기화 이벤트를 사용하여 여러 스레드의 작업을 동기화하는 데 사용되는 공유 리소스를 보호할 수 있습니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000부터 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 모든 수준
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), IoAllocateIrpSignalEventInCompletion(wdm), IoAllocateIrpSignalEventInCompletion2(wdm), IoAllocateIrpSignalEventInCompletion3(wdm), IoAllocateIrpSignalEventInCompletionTimeout(wdm), IoBuildDeviceControlWait(wdm), IoBuildDeviceControlWaitTimeout(wdm), IoBuildDeviceIoControlSetEvent(wdm), IoBuildFsdIrpSignalEventInCompletion(wdm), IoBuildFsdIrpSignalEventInCompletion2(wdm), IoBuildFsdIrpSignalEventInCompletion3(wdm), IoBuildFsdIrpSignalEventInCompletionTimeout(wdm), IoBuildSynchronousFsdRequestWait(wdm), IoBuildSynchronousFsdRequestWaitTimeout(wdm), PendedCompletedRequest(wdm), PendedCompletedRequestEx(wdm), SignalEventInCompletion(wdm), SignalEventInCompletion3(wdm), StartDeviceWait(wdm), StartDeviceWait2(wdm)

추가 정보

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject