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 | 「解説」を参照してください。 |