KsCancelIo 関数 (ks.h)
KsCancelIo 関数は、指定したキャンセル リストのすべての IRP を取り消します。 一覧の IRP にキャンセル ルーチンがない場合は、キャンセル ビットのみが IRP に設定されます。 関数は、IRQ レベル DISPATCH_LEVEL以下で呼び出すことができます。
構文
KSDDKAPI VOID KsCancelIo(
[in, out] PLIST_ENTRY QueueHead,
[in] PKSPIN_LOCK SpinLock
);
パラメーター
[in, out] QueueHead
取り消す IRP を含むドライバーが管理するキューの先頭を指定します。
[in] SpinLock
キュー アクセスの呼び出し元によって割り当てられたスピン ロックを指します。 このポインターのコピーは、必要に応じてキャンセル ルーチンで使用するために、IRP のKSQUEUE_SPINLOCK_IRP_STORAGE (Irp) に保持されます。
戻り値
なし
解説
KsCancelIo は 、特定のドライバーが管理するキュー内のすべての IRP を取り消します。 IRP にキャンセル ルーチンがある場合は、キャンセル ルーチンが呼び出されます。 それ以外の場合、IRP のキャンセル フラグは TRUE に設定 されます。 IRP は、このルーチンによってキューから削除されません。 IRP で指定された取り消しルーチンまたはその他のドライバーが提供する機能によって IRP が確実に削除されるようにするのは、ドライバーの唯一の責任です。
取り消される IRP にドライバーが提供するキャンセル ルーチンがある場合は、KSQUEUE_SPINLOCK_IRP_STORAGEを呼び出すことによって、IRP からキャンセル スピン ロックを取得できます。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | ks.h (Ks.h を含む) |
Library | Ks.lib |
IRQL | < DISPATCH_LEVEL |