次の方法で共有


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 は、自動設定イベントまたは自動クリア イベントとも呼ばれます。 このようなイベントが設定されると、1 つの待機中のスレッドが実行の対象になります。 カーネルは、待機が満たされるたびに、イベントをシグナル化されていない状態に自動的にリセットします。 ドライバーは、同期イベントを使用して、複数のスレッドの操作の同期に使用される共有リソースを保護する場合があります。

イベント オブジェクトの詳細については、「 イベント オブジェクト」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library 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), SignalEventInCompletion2(wdm), SignalEventInCompletion3(wdm)StartDeviceWait(wdm)StartDeviceWait2(wdm)

こちらもご覧ください

KeClearEvent

KeReadStateEvent

KeResetEvent

KeSetEvent

KeWaitForMultipleObjects

KeWaitForSingleObject