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