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 |