Функция 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, например одно из следующих значений:
Код возврата | Описание |
---|---|
|
Драйвер минифильтра выгружается. Это код ошибки. |
Комментарии
FltQueueGenericWorkItem вставляет рабочий элемент, не связанный с определенной операцией ввода-вывода, в системную рабочую очередь. Указанная подпрограмма обратного вызова WorkerRoutine вызывается в контексте системного потока на PASSIVE_LEVEL IRQL.
Чтобы выделить рабочий элемент, вызовите FltAllocateGenericWorkItem.
Чтобы освободить рабочий элемент, когда он больше не нужен, вызовите FltFreeGenericWorkItem.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая Fltkernel.h) |
Библиотека | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |