共用方式為


KeInitializeEvent 函式 (wdm.h)

KeInitializeEvent 例程會將事件物件初始化為同步處理(單一等候者)或通知類型事件,並將其設定為已發出訊號或未收到訊號的狀態。

語法

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

參數

[out] Event

事件物件的指標,呼叫端會為其提供記憶體。

[in] Type

指定事件類型,NotificationEventSynchronizationEvent

[in] State

指定事件的初始狀態。 TRUE 表示訊號狀態。

傳回值

沒有

言論

事件物件的記憶體必須常駐:在驅動程式所建立裝置對象的裝置延伸、驅動程式建立控制器物件的控制器擴充功能,或呼叫端所配置的非分頁集區中。 如果您在堆棧上配置事件,則必須在 呼叫 keWaitForSingleObjectKeWaitForMutexObjectKeWaitForMultipleObjects時,指定 KernelMode 等候。 在 KernelMode 等候期間,將不會分頁包含事件的堆疊。

驅動程式通常會使用 NotificationEvent 等候 I/O 作業完成。 當通知事件設定為訊號狀態時,等候事件設定為訊號狀態的所有線程都有資格執行。 事件會維持在訊號狀態,直到線程呼叫 KeResetEventKeClearEvent,以設定未收到訊號狀態的事件為止。

SynchronizationEvent 也稱為 自動重設自動清除 事件。 設定這類事件時,單一等候線程就有資格執行。 每次滿足等候時,核心會自動將事件重設為未收到訊號的狀態。 驅動程式可能會使用同步處理事件來保護用於同步處理數個線程作業的共享資源。

如需事件物件的詳細資訊,請參閱 事件物件

要求

要求 價值
最低支援的用戶端 從 Windows 2000 開始提供。
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何層級
DDI 合規性規則 HwStorPortProhibitedDIS(storport)IoAllocateIrpSignalEventInCompletion(wdm)IoAllocateIrpIoAllocateIrpSignalEventInCompletion3(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)SignalEventInCompletion2(wdm)SignalEventInCompletion3(wdm)StartDeviceWait(wdm)StartDeviceWait2(wdm)

另請參閱

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject