Функция 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 (include Fltkernel.h) |
библиотеки | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= DISPATCH_LEVEL |