次の方法で共有


KsAddIrpToCancelableQueue 関数 (ks.h)

KsAddIrpToCancelableQueue 関数は、取り消し可能な IRP のキューに IRP を追加し、IRP を取り消せるようにします。 IRP が以前に取り消された状態に設定されていた場合、KsAddIrpToCancelableQueue 関数は、その IRP の取り消しを完了します。

構文

KSDDKAPI VOID KsAddIrpToCancelableQueue(
  [in, out]      PLIST_ENTRY           QueueHead,
  [in]           PKSPIN_LOCK           SpinLock,
  [in]           PIRP                  Irp,
  [in]           KSLIST_ENTRY_LOCATION ListLocation,
  [in, optional] PDRIVER_CANCEL        DriverCancel
);

パラメーター

[in, out] QueueHead

IRP を追加するキューのヘッドのドライバー割り当て記憶域を指定します。

[in] SpinLock

QueueHead で指定されたキューへのキュー アクセスのドライバーのスピン ロックポイントします。 このポインターのコピーは、必要に応じてキャンセル ルーチンで使用するために IRP のKSQUEUE_SPINLOCK_IRP_STORAGE (Irp) に保持されます。

[in] Irp

QueueHead で指定されたキューに追加する IRP指定します。

[in] ListLocation

この IRP をキューの先頭または末尾に配置するかどうかを示します。 この値は KsListEntryTail または KsListEntryHead である必要があります。

[in, optional] DriverCancel

使用するドライバー指定のキャンセル ルーチンを指定する省略可能なパラメーター。 これが NULL 場合は、標準 KsCancelRoutine が使用されます。

戻り値

何一つ

備考

このルーチンが呼び出されたときに IRP がキャンセル状態になった場合、KsAddIrpToCancelableQueue は、DriverCancelで指定されたキャンセル ルーチンをすぐに呼び出します。または、既定のストリーミングキャンセル ルーチンが呼び出 DriverCancel でルーチンが指定されていない場合。

KsAddIrpToCancelableQueue 関数を使用すると、取り消しリストに配置される前や、リスト間で移動された場合でも、IRP を取り消すことができます。 この関数は、ドライバーによって割り当てられたキューとキュー内のすべてのエントリがシステム常駐であるか、常駐ストレージから割り当てられている場合を除き、IRQ レベルDISPATCH_LEVEL以下で呼び出すことができます。

この関数は、リストに項目を追加するためにキャンセル スピン ロックを使用しません。 リストへのアクセスは、提供されたスピン ロックを使用して同期され、Irp->CancelRoutine のアトミック操作に依存します。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー ks.h (Ks.h を含む)
ライブラリ Ks.lib