Поделиться через


Функция 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) для элемента, который был удален из очереди, или значение NULL , если соответствующие элементы не найдены. FltCbdqRemoveNextIo возвращает только элементы для операций ввода-вывода, которые еще не отменены.

Комментарии

FltCbdqRemoveNextIo удаляет следующий соответствующий элемент из очереди обратного вызова драйвера минифильтра.

Драйверы минифильтров могут использовать подпрограммы FltCbdqXxx для реализации очереди данных обратного вызова для операций ввода-вывода на основе IRP. Используя эти подпрограммы, драйверы минифильтра могут сделать свои очереди отменяемыми; система прозрачно обрабатывает отмену ввода-вывода для драйверов минифильтра.

Подпрограммы FltCbdqXxx можно использовать только для операций ввода-вывода на основе IRP. Чтобы определить, представляет ли данная структура данных обратного вызова (FLT_CALLBACK_DATA) операцию ввода-вывода на основе IRP, используйте макрос 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