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 也稱為自動重設或自動清除事件。 設定這類事件時,單一等候線程就有資格執行。 核心會在每次滿足等候時,自動將事件重設為未發出訊號的狀態。 驅動程式可能會使用同步處理事件來保護用於同步處理數個線程作業的共享資源。
如需事件對象的詳細資訊,請參閱 Event Objects。