KeSetTimer 関数 (wdm.h)

KeSetTimer ルーチンは、タイマー オブジェクトをシグナル状態に設定する絶対間隔または相対間隔を設定し、必要に応じて、その間隔の有効期限が切れたときに実行される CustomTimerDpc ルーチンを提供します。

構文

BOOLEAN KeSetTimer(
  [in, out]      PKTIMER       Timer,
  [in]           LARGE_INTEGER DueTime,
  [in, optional] PKDPC         Dpc
);

パラメーター

[in, out] Timer

KeInitializeTimer または KeInitializeTimerEx で初期化されたタイマー オブジェクトへのポインター。

[in] DueTime

タイマーの有効期限が切れる絶対時間または相対時間を指定します。 DueTime パラメーターの値が負の場合、有効期限は現在のシステム時刻に対して相対的になります。 それ以外の場合、有効期限は絶対です。 有効期限は、システム時間単位 (100 ナノ秒間隔) で表されます。 絶対有効期限は、システム時刻の変更を追跡します。相対有効期限は、システム時刻の変更の影響を受けません。

[in, optional] Dpc

KeInitializeDpc によって初期化された DPC オブジェクトへのポインター。 このパラメーターは省略できます。

戻り値

タイマー オブジェクトがシステム タイマー キューに既に存在する場合、 KeSetTimerTRUE を返します。

注釈

KeSetTimer ルーチンは、次の処理を行います。

  • 有効期限を計算します。

  • タイマーを非シグナル状態に設定します。

  • タイマー オブジェクトをシステム タイマー キューに挿入します。

タイマー オブジェクトが既にタイマー キューに存在していた場合は、新しい有効期限に設定される前に暗黙的に取り消されます。 以前に指定した DueTime の有効期限が切れる前に KeSetTimer を呼び出すと、タイマーと、前の呼び出しに関連付けられている Dpc への呼び出し (存在する場合) の両方が取り消されます。

Dpc パラメーターを指定すると、DPC オブジェクトがタイマー オブジェクトに関連付けられます。 タイマーが期限切れになると、タイマー オブジェクトはシステム タイマー キューから削除され、その状態は signaled に設定されます。 DPC オブジェクトが設定されたときにタイマーに関連付けられた場合、DPC オブジェクトはシステム DPC キューに挿入され、タイマー間隔の経過後に条件が許可されるとすぐに実行されます。

有効期限はシステム クロックに対して測定され、オペレーティング システムがタイマーの有効期限を検出できる精度は、システム クロックの粒度によって制限されます。 詳細については、「タイマーの 精度」を参照してください。

特定の時点でキューに入ることができるのは、特定の DPC オブジェクトのインスタンス化を 1 つだけです。 潜在的な競合状態を回避するために、 KeSetTimer に渡された DPC を KeInsertQueueDpc に渡さないでください。

ドライバーは 、アンロード ルーチンでアクティブなタイマーを取り消す必要があります。 KeCancelTimer を使用して、タイマーを取り消します。

KeSetTimer の呼び出し元は、タイマーの有効期限を 1 つ指定できます。 定期的なタイマーを設定するには、 KeSetTimerEx を使用します

タイマー オブジェクトの詳細については、「 タイマー オブジェクトと DPC」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 以降で使用できます。
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL <= DISPATCH_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm)

こちらもご覧ください

KeCancelTimer

KeInitializeDpc

KeInitializeTimer

KeInitializeTimerEx

KeReadStateTimer

KeSetTimerEx

KeWaitForMultipleObjects