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


Функция 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.
  • Для операции ввода-вывода не указана подпрограмма отмены.
  • Операция ввода-вывода уже отменена.
Чтобы определить, представляет ли данная структура данных обратного вызова операцию ввода-вывода на основе IRP, используйте макрос FLT_IS_IRP_OPERATION.

Чтобы указать подпрограмму отмены для операции ввода-вывода, вызовите FltSetCancelCompletion.

Чтобы очистить подпрограмму отмены, установленную для операции ввода-вывода, вызовите FltClearCancelCompletion.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка fltkernel.h (include FltKernel.h)
библиотеки FltMgr.lib
IRQL <= DISPATCH_LEVEL

См. также

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile