次の方法で共有


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

こちらもご覧ください

KsAddIrpToCancelableQueue