Функция 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 |