KeCancelTimer ルーチンは、タイマー間隔が設定されている場合は期限切れになる前にタイマー オブジェクトをデキューします。
構文
BOOLEAN KeCancelTimer(
[in, out] PKTIMER unnamedParam1
);
パラメーター
[in, out] unnamedParam1
初期化されたタイマー オブジェクトへのポインター。呼び出し元がストレージを提供します。
戻り値
指定したタイマー オブジェクトがシステム タイマー キュー内にある場合は、KeCancelTimer TRUE 返します。
備考
タイマー オブジェクトが現在システム タイマー キューにある場合は、キューから削除されます。 DPC オブジェクトがタイマーに関連付けられている場合も取り消されます。 それ以外の場合、操作は実行されません。
タイマーがまだタイマー キューにある場合、ルーチンは true 返します。 非期限タイマーは、有効期限が切れるとすぐにシステム キューから削除されます。 したがって、非周期タイマーの場合、KeCancelTimer は、タイマー DPC がキューに登録されている場合 FALSE を返します。 定期的なタイマーは常にタイマー キュー内に存在するため、KeCancelTimer は常に定期的なタイマー TRUE を返します。
既に実行されている DPC は完了まで実行されることに注意してください。 ドライバーは、DPC によって使用されるリソースを解放する前に、DPC が完了していることを確認する必要があります。 非永続タイマーの場合は、イベント オブジェクトなどの同期プリミティブを使用して、ドライバーと DPC の間で同期できます。 ドライバーは、KeCancelTimer のリターン コードを確認して、DPC が実行されているかどうかを確認できます。 その場合、DPC は終了する前にイベントを通知でき、ドライバーはそのイベントが通知されない状態にリセットされるのを待つことができます。
KeCancelTimer 定期的なタイマーの場合、常に TRUE 返されるため、ドライバーは別の手法を使用して DPC が完了するまで待機する必要があります。 KeFlushQueuedDpcs ルーチンを使用して、DPC が実行されるまでブロックします。
ドライバーは、グローバル変数またはドライバー オブジェクト拡張機能に格納されているデータに対して同期する必要はありません。 システムは、これらのリージョン 割り当てを解除する前に、自動的に KeFlushQueuedDpcs を呼び出します。
タイマー オブジェクトの詳細については、「タイマー オブジェクトと DPC を参照してください。
必要条件
| 要件 | 価値 |
|---|---|
| サポートされる最小クライアント | Windows 2000 以降で使用できます。 |
| ターゲット プラットフォーム の | 万国 |
| ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
| ライブラリ | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | <= DISPATCH_LEVEL |
| DDI コンプライアンス規則 を する | HwStorPortProhibitedDDIs(storport), IrqlKeDispatchLte(wdm) |
関連項目
KeInitializeTimer の
KeReadStateTimer の