次の方法で共有


EVT_WDF_TIMER コールバック関数 (wdftimer.h)

[KMDF と UMDF に適用]

指定した期間が経過すると、 EvtTimerFunc イベント コールバック関数が呼び出されます。

構文

EVT_WDF_TIMER EvtWdfTimer;

void EvtWdfTimer(
  [in] WDFTIMER Timer
)
{...}

パラメーター

[in] Timer

WdfTimerCreate の以前の呼び出しから取得されたフレームワーク タイマー オブジェクトへのハンドル。

戻り値

なし

解説

EvtTimerFunc コールバック関数を登録し、フレームワークがこの関数を呼び出す前に経過する期間を指定するには、ドライバーで WdfTimerCreate を呼び出す必要があります。

バージョン 1.9 より前の KMDF バージョンでは、フレームワークは段階的プロシージャ呼び出し (DPC) として EvtTimerFunc コールバック関数を実装します。 したがって、期間が経過すると、システムは EvtTimerFunc コールバック関数の呼び出しを DPC キューに追加します。 システムは、キューの前面に到達し、IRQL DISPATCH_LEVELで実行されている CPU が使用可能になると、IRQL < = DISPATCH_LEVEL で EvtTimerFunc コールバック関数を呼び出します。

KMDF バージョン 1.9 以降では、フレームワークは既定で EvtTimerFunc コールバック関数を DPC として実装します。 または、ドライバーがタイマー オブジェクトの実行レベルを WdfExecutionLevelPassive に設定した場合、フレームワークは IRQL = PASSIVE_LEVELの作業項目から EvtTimerFunc コールバック関数を呼び出します。

注意

PASSIVE_LEVELで実行されている EvtTimerFunc コールバック関数が WdfObjectDelete を呼び出すと、デッドロックが発生します。 代わりに、デバイスが削除されたときに親がタイマーを自動的に削除するまで待つか、または早期に削除する必要がある場合は、タイマー コールバックから作業項目をスケジュールしてタイマーを削除します。

UMDF バージョン 2.0 以降では、UMDF ドライバーの EvtTimerFunc コールバック関数は常にPASSIVE_LEVELで実行されます。

フレームワーク タイマー オブジェクトの詳細については、「タイマーの 使用」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.0
最小 UMDF バージョン 2.0
Header wdftimer.h (Wdf.h を含む)
IRQL 「解説」を参照してください。

こちらもご覧ください

WdfTimerCreate