次の方法で共有


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で実行されている必要があります。

必要条件

要件 価値
ターゲット プラットフォーム 万国
ヘッダー fltkernel.h (Fltkernel.h を含む)
IRQL 「解説」セクションを参照してください。

関連項目

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo する

FltCbdqRemoveIo する