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 にリンクしてルーチンを使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (「解説」セクションを参照) |