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 参数传递的不透明筛选器指针。

上下文

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

[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)
FltMgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

另请参阅

FltAllocateGenericWorkItem

FltFreeGenericWorkItem