次の方法で共有


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

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

手記

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

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

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

必要条件

要件 価値
ターゲット プラットフォーム 万国
最小 KMDF バージョン 1.0
UMDF の最小バージョン する 2.0
ヘッダー wdftimer.h (Wdf.h を含む)
IRQL 「解説」セクションを参照してください。

関連項目

WdfTimerCreate