Функция FltQueueGenericWorkItem (fltkernel.h)

FltQueueGenericWorkItem отправляет рабочий элемент, не связанный с определенной операцией ввода-вывода, в рабочую очередь.

Синтаксис

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

Указатель непрозрачного фильтра, переданный в качестве параметра FltObjectобъекта FltQueueGenericWorkItem.

Контекст

Указатель на сведения о контексте, переданный в качестве параметра Contextобъекта FltQueueGenericWorkItem. Этот параметр является необязательным.

[in] QueueType

Указывает очередь, в которую будет вставляться рабочий элемент, на который указывает FltWorkItem . QueueType может иметь один из следующих вариантов:

Значение Значение
CriticalWorkQueue Вставьте рабочий элемент в очередь, из которой системный поток с атрибутом приоритета в режиме реального времени обрабатывает рабочий элемент.
DelayedWorkQueue Вставьте рабочий элемент в очередь, из которой системный поток с переменным атрибутом приоритета обрабатывает рабочий элемент.
 

Значение QueueTypeHyperCriticalWorkQueue зарезервировано для использования системой.

[in, optional] Context

Указатель на определяемые вызывающим объектом сведения о контексте, передаваемые в качестве параметра Context подпрограммы обратного вызова, указанной в параметре WorkerRoutine . Этот параметр является необязательным.

Возвращаемое значение

FltQueueGenericWorkItem возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:

Код возврата Описание
STATUS_FLT_DELETING_OBJECT
Драйвер минифильтра выгружается. Это код ошибки.

Комментарии

FltQueueGenericWorkItem вставляет рабочий элемент, не связанный с определенной операцией ввода-вывода, в системную рабочую очередь. Указанная подпрограмма обратного вызова WorkerRoutine вызывается в контексте системного потока на PASSIVE_LEVEL IRQL.

Чтобы выделить рабочий элемент, вызовите FltAllocateGenericWorkItem.

Чтобы освободить рабочий элемент, когда он больше не нужен, вызовите FltFreeGenericWorkItem.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
DLL Fltmgr.sys
IRQL <= DISPATCH_LEVEL

См. также раздел

FltAllocateGenericWorkItem

FltFreeGenericWorkItem