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 从队列中删除的项的) 结构;如果未找到匹配项,则返回 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 的条件完全取决于微筛选器驱动程序。

如果队列受 自旋锁(而不是 互斥对象资源变量)的保护, 则 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