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 NULLFltCbdqRemoveNextIo 仅返回尚未取消的 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 匹配的条件完全依赖于微型筛选器驱动程序。

如果队列受 旋转锁保护,而不是 互斥体对象资源变量,则可以在 IRQL <= DISPATCH_LEVEL 上运行 FltCbdqRemoveNextIo 的调用方。 如果使用互斥体或资源,则调用方必须在 IRQL <= APC_LEVEL运行。

要求

要求 价值
目标平台 普遍
标头 fltkernel.h (包括 Fltkernel.h)
IRQL 请参阅“备注”部分。

另请参阅

FLT_CALLBACK_DATA

FLT_CALLBACK_DATA_QUEUE

FLT_IS_IRP_OPERATION

FltCbdqDisable

FltCbdqEnable

FltCbdqInitialize

FltCbdqInsertIo

FltCbdqRemoveIo