Функция FltCancelIo (fltkernel.h)
Подпрограмма FltCancelIo отменяет операцию ввода-вывода.
Синтаксис
BOOLEAN FLTAPI FltCancelIo(
[in] PFLT_CALLBACK_DATA CallbackData
);
Параметры
[in] CallbackData
Указатель на структуру данных обратного вызова (FLT_CALLBACK_DATA) для операции ввода-вывода.
Возвращаемое значение
FltCancelIo возвращает TRUE, если операция ввода-вывода была успешно отменена. В противном случае возвращается FALSE.
Замечания
Минифильтратор, который инициирует операцию ввода-вывода, вызывая подпрограмму, например FltPerformAsynchronousIo может отменить операцию, вызвав FltCancelIo. Операция должна быть операцией ввода-вывода на основе IRP, она не должна быть размещена в собственной рабочей очереди драйвера минифильтратора, и она не должна быть завершена.
Если IRP имеет подпрограмму отмены, FltCancelIo задает бит отмены IRP и вызывает подпрограмму отмены.
Если У IRP нет подпрограммы отмены, поэтому IRP не является отменяемым, FltCancelIo задает бит отмены IRP и возвращает FALSE. IRP следует отменить позже, когда он становится отмененным.
Если драйвер минифильтра, который не инициировал операцию ввода-вывода на основе IRP, вызывает FltCancelIo, результаты непредсказуемы. Например, IRP может быть завершен с кодом NTSTATUS успешно, несмотря на то, что был установлен его бит отмены.
FltCancelIo возвращает FALSE, если одно из следующих условий имеет значение true:
- Операция не является операцией ввода-вывода на основе IRP.
- Для операции ввода-вывода не указана подпрограмма отмены.
- Операция ввода-вывода уже отменена.
Чтобы указать подпрограмму отмены для операции ввода-вывода, вызовите FltSetCancelCompletion.
Чтобы очистить подпрограмму отмены, установленную для операции ввода-вывода, вызовите FltClearCancelCompletion.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | fltkernel.h (include FltKernel.h) |
библиотеки | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |