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 待機中、イベントを含むスタックはページングされません。
ドライバーは通常、I/O 操作が完了するまで待機するために、NotificationEvent を使用します。 通知イベントがシグナル状態に設定されると、イベントがシグナル状態に設定されるのを待機していたすべてのスレッドが実行の対象になります。 スレッドが KeResetEvent 呼び出すか、KeClearEvent を して非シグナル状態にイベントを設定するまで、イベントはシグナル状態のままになります。
SynchronizationEvent は、自動設定 または自動クリア イベント とも呼ばれます。 このようなイベントが設定されると、1 つの待機中のスレッドが実行の対象になります。 カーネルは、待機が満たされるたびに、イベントを自動的に通知されない状態にリセットします。 ドライバーは、同期イベントを使用して、複数のスレッドの操作の同期に使用される共有リソースを保護する場合があります。
イベント オブジェクトの詳細については、「イベント オブジェクトの 」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | 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), IoAllocate IrpSignalEventInCompletionTimeout(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) |
関連項目
KeReadStateEvent の
KeResetEvent の
KeWaitForMultipleObjects の
KeWaitForSingleObject を する