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

Драйвер минифильтра вызывает FltSetCancelCompletion , чтобы указать процедуру отмены, вызываемую при отмене заданной операции ввода-вывода.

Синтаксис

NTSTATUS FLTAPI FltSetCancelCompletion(
  [in] PFLT_CALLBACK_DATA              CallbackData,
  [in] PFLT_COMPLETE_CANCELED_CALLBACK CanceledCallback
);

Параметры

[in] CallbackData

Указатель на структуру данных обратного вызова (FLT_CALLBACK_DATA) для операции ввода-вывода. Операция должна быть операцией ввода-вывода на основе IRP и не должна быть операцией ввода-вывода подкачки. Чтобы определить, представляет ли данная структура данных обратного вызова операцию ввода-вывода на основе IRP, используйте макрос FLT_IS_IRP_OPERATION . Этот параметр является обязательным и не может иметь значение NULL.

[in] CanceledCallback

Указатель на предоставленную вызывающим абонентом процедуру отмены. Диспетчер фильтров вызывает эту подпрограмму, если операция ввода-вывода, представленная CallbackData , отменена.

Эта подпрограмма объявляется следующим образом:

typedef VOID
(*PFLT_COMPLETE_CANCELED_CALLBACK) (
      IN PFLT_CALLBACK_DATA CallbackData
      );

CallbackData

Указатель на структуру FLT_CALLBACK_DATA для операции ввода-вывода.

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

FltSetCancelCompletion возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS.

Комментарии

FltSetCancelCompletion задает подпрограмму отмены для операции ввода-вывода на основе IRP, которая должна быть помещена в рабочую очередь.

Драйверы минифильтра обычно вызывают FltSetCancelCompletion для операции ввода-вывода непосредственно перед вызовом FltQueueDeferredIoWorkItem для отправки операции в рабочую очередь.

Не вызывайте FltSetCancelCompletion для любых операций ввода-вывода, которые должны быть размещены в очереди данных обратного вызова с отменой безопасности с помощью процедур FltCbdqXxx .

Диспетчер фильтров вызывает подпрограмму CanceledCallback , не удерживая блокировку отмены вращения системы или не выполняя другую синхронизацию. Все необходимые синхронизации должны предоставляться самим драйвером минифильтра.

Чтобы отменить операцию ввода-вывода, вызовите Метод FltCancelIo.

Требования

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

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

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltCancelIo

FltClearCancelCompletion

FltQueueDeferredIoWorkItem