IoCsqRemoveNextIrp 関数 (wdm.h)
IoCsqRemoveNextIrp ルーチンは、キュー内の次の一致する IRP を削除します。
構文
PIRP IoCsqRemoveNextIrp(
[in, out] PIO_CSQ Csq,
[in, optional] PVOID PeekContext
);
パラメーター
[in, out] Csq
キャンセル セーフ IRP キューのドライバーのディスパッチ テーブルへのポインター。 ディスパッチ テーブルは、IoCsqInitializeによって初期化する必要があります。
[in, optional] PeekContext
ドライバー定義のコンテキスト値へのポインター。 IoCsqRemoveNextIrp は、ドライバーの CsqPeekNextIrp ルーチンにこのパラメーターを渡します。 詳細については、次の「解説」セクションを参照してください。
戻り値
このルーチンは、キュー内の次に一致する IRP へのポインターを返すか、使用できる IRP がなくなった場合は NULL を します。 このルーチンは、まだ取り消されていない IRP のみを返します。
備考
IoCsqRemoveNextIrp は、キューのディスパッチ ルーチンを使用して IRP を削除します。 IoCsqRemoveNextIrp ルーチン:
- キューの CsqAcquireLock ルーチンを呼び出して、キューをロックします。
- キューの CsqPeekNextIrp ルーチンを呼び出して、キュー内の次の一致する IRP を検索します。 IoCsqRemoveNextIrp は、PeekContext パラメーターの値 CsqPeekNextIrpの PeekContext パラメーターとして渡します。 CsqPeekNextIrp は、次に一致する IRP へのポインターを返します。一致する IRP がない場合は NULL を します。
- CsqPeekNextIrp の戻り値が非NULLの場合、IoCsqRemoveNextIrp キューの CsqRemoveIrp ルーチンを呼び出して IRP を削除します。
- キューの CsqReleaseLock ルーチンを呼び出して、キューのロックを解除します。
IoCsqXxxルーチン IRP の DriverContext[3] メンバーを使用して IRP コンテキスト情報を保持します。 これらのルーチンを使用して IRP をキューに入れるドライバーは、そのメンバーを未使用のままにする必要があります。
IoCsqRemoveNextIrp の呼び出し元は、IRQL <= DISPATCH_LEVELで実行されている必要があります。 ドライバーのコールバック ルーチンは、その IRQL で正しく動作する必要があります。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows XP 以降のバージョンの Windows で使用できます。 Windows 2000 および Windows 98/Me でも動作する必要があるドライバーは、代わりに Csq.lib にリンクしてルーチンを使用できます。 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (「解説」セクションを参照) |
関連項目
IoCsqInitializeEx の
IoCsqInsertIrp の
IoCsqInsertIrpEx の