IoCsqRemoveIrp 関数 (wdm.h)
IoCsqRemoveIrp ルーチンは、キューから特定の IRP を削除します。
構文
PIRP IoCsqRemoveIrp(
[in, out] PIO_CSQ Csq,
[in, out] PIO_CSQ_IRP_CONTEXT Context
);
パラメーター
[in, out] Csq
ドライバーのキャンセル セーフ IRP キューの IO_CSQ 構造体へのポインター。 この構造体は、 IoCsqInitialize または IoCsqInitializeEx によって初期化されている必要があります。
[in, out] Context
削除する IRP を識別する IO_CSQ_IRP_CONTEXT 構造体へのポインター。 IO_CSQ_IRP_CONTEXT構造体は、IRP がキューに最初に挿入されるときに、IoCsqInsertIrp または IoCsqInsertIrpEx によって初期化されます。
戻り値
このルーチンは、キューから削除された IRP へのポインターを返します。IRP が取り消された場合は NULL を 返します。
注釈
IoCsqRemoveIrp は、キューのディスパッチ ルーチンを使用して IRP を削除します。 IoCsqRemoveIrp ルーチン:
- キューの CsqAcquireLock ルーチンを呼び出して、キューをロックします。
- IrpContext パラメーターを使用して削除する IRP を決定し、キューの CsqRemoveIrp ルーチンを呼び出してその IRP を削除します。
- キューの CsqReleaseLock ルーチンを 呼び出して、キューのロックを解除します。
IoCsqXxx ルーチンは、IRP の DriverContext[3] メンバーを使用して IRP コンテキスト情報を保持します。 これらのルーチンを使用して IRP をキューに入れるドライバーは、そのメンバーを未使用のままにしておく必要があります。
IoCsqRemoveIrp の呼び出し元は、IRQL <= DISPATCH_LEVELで実行されている必要があります。 ドライバーのコールバック ルーチンは、その IRQL で正しく動作する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP 以降のバージョンの Windows で使用できます。 Windows 2000 および Windows 98/Me でも動作する必要があるドライバーは、代わりに Csq.lib にリンクしてルーチンを使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (「解説」セクションを参照) |