FltCbdqRemoveNextIo 関数 (fltkernel.h)
FltCbdqRemoveNextIo は 、ミニフィルター ドライバーのコールバック データ キュー内の次に一致する項目を削除します。
構文
PFLT_CALLBACK_DATA FLTAPI FltCbdqRemoveNextIo(
[in, out] PFLT_CALLBACK_DATA_QUEUE Cbdq,
[in, optional] PVOID PeekContext
);
パラメーター
[in, out] Cbdq
キャンセル セーフなコールバック データ キューへのポインター。 このキューは 、FltCbdqInitialize を呼び出して初期化されている必要があります。
[in, optional] PeekContext
一致する項目を識別する呼び出し元定義情報へのポインター。 このパラメーターは省略可能であり、 NULL にすることができます。
戻り値
FltCbdqRemoveNextIo は、キューから削除されたアイテムのコールバック データ (FLT_CALLBACK_DATA) 構造体へのポインターを返します。一致する項目が見つからなかった場合は NULL を 返します。 FltCbdqRemoveNextIo は、まだ取り消されていない I/O 操作の項目のみを返します。
注釈
FltCbdqRemoveNextIo は、 ミニフィルター ドライバーのコールバック データ キューから次に一致する項目を削除します。
ミニフィルター ドライバーは 、FltCbdqXxx ルーチンを使用して、IRP ベースの I/O 操作のコールバック データ キューを実装できます。 これらのルーチンを使用することで、ミニフィルター ドライバーはキューをキャンセルセーフにすることができます。システムは、ミニフィルター ドライバーの I/O 取り消しを透過的に処理します。
FltCbdqXxx ルーチンは、IRP ベースの I/O 操作にのみ使用できます。 特定のコールバック データ (FLT_CALLBACK_DATA) 構造体が IRP ベースの I/O 操作を表すかどうかを判断するには、 FLT_IS_IRP_OPERATION マクロを使用します。
コールバック データ キューは、 FltCbdqInitialize によって初期化されます。 FltCbdqRemoveNextIo は、キューのディスパッチ テーブルで提供されるルーチンを使用してキューをロックし、キューから次に一致する項目を削除します。 削除操作自体は、ミニフィルター ドライバーの CbdqRemoveIo コールバック ルーチンによって実行されます。
FltCbdqRemoveNextIo は 、キューの CbdqPeekNextIo コールバック ルーチンを使用して、一致する項目のキューをスキャンします。 PeekContext パラメーターは、一致する項目をループ処理するために、CbdqPeekNextIo コールバック ルーチンに渡されます。 PeekContext の意味と、特定の PeekContext に一致する項目の条件は、ミニフィルター ドライバーに完全に依存します。
キューがミューテックス オブジェクトまたはリソース変数ではなくスピン ロックによって保護されている場合、FltCbdqRemoveNextIo の呼び出し元は IRQL <= DISPATCH_LEVELで実行できます。 ミューテックスまたはリソースを使用する場合、呼び出し元は IRQL <= APC_LEVELで実行されている必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
Header | fltkernel.h (Fltkernel.h を含む) |
IRQL | 「解説」を参照してください。 |