fltQueueGenericWorkItem 函数 (fltkernel.h)

FltQueueGenericWorkItem 将不与特定 I/O 操作关联的工作项发布到工作队列。

语法

NTSTATUS FLTAPI FltQueueGenericWorkItem(
  [in]           PFLT_GENERIC_WORKITEM         FltWorkItem,
  [in]           PVOID                         FltObject,
  [in]           PFLT_GENERIC_WORKITEM_ROUTINE WorkerRoutine,
  [in]           WORK_QUEUE_TYPE               QueueType,
  [in, optional] PVOID                         Context
);

参数

[in] FltWorkItem

指向要添加到工作队列的工作项的指针。 工作项必须已通过调用 FltAllocateGenericWorkItem 进行分配。

[in] FltObject

调用方 (PFLT_FILTER) 或实例 (PFLT_INSTANCE) 指针的不透明筛选器。

[in] WorkerRoutine

指向调用方提供的辅助角色例程的指针。 此例程的声明如下:

typedef VOID
(*PFLT_GENERIC_WORKITEM_ROUTINE) (
 _In_ PFLT_GENERIC_WORKITEM FltWorkItem,
 _In_ PVOID FltObject,
 _In_opt_ PVOID Context
      );

FltWorkItem

指向泛型工作项结构的不透明指针。

FltObject

作为 FltQueueGenericWorkItemFltObject 参数传递的不透明筛选器指针。

上下文

作为 FltQueueGenericWorkItem 的 Context 参数传递的上下文信息指针。 此参数是可选的。

[in] QueueType

指定要插入 FltWorkItem 指向的工作项的队列。 QueueType 可以是以下任一项:

含义
CriticalWorkQueue 将工作项插入队列中,具有实时优先级属性的系统线程从该队列中处理工作项。
DelayedWorkQueue 将工作项插入队列中,具有可变优先级属性的系统线程从该队列中处理工作项。
 

QueueTypeHyperCriticalWorkQueue 保留供系统使用。

[in, optional] Context

指向要作为 WorkerRoutine 参数中指定的回调例程的 Context 参数传递的调用方定义的上下文信息的指针。 此参数可选。

返回值

FltQueueGenericWorkItem 返回STATUS_SUCCESS或相应的 NTSTATUS 值,如以下值之一:

返回代码 说明
STATUS_FLT_DELETING_OBJECT
正在卸载微筛选器驱动程序。 这是错误代码。

注解

FltQueueGenericWorkItem 将不与特定 I/O 操作关联的工作项插入到系统工作队列中。 指定的 WorkerRoutine 回调例程在 IRQL PASSIVE_LEVEL的系统线程上下文中调用。

若要分配工作项,请调用 FltAllocateGenericWorkItem

若要在不再需要工作项时释放它,请调用 FltFreeGenericWorkItem

要求

要求
目标平台 通用
标头 fltkernel.h (包括 Fltkernel.h)
Library FltMgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

另请参阅

FltAllocateGenericWorkItem

FltFreeGenericWorkItem