Функция 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 , если выполняется одно из следующих условий:

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

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

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

Требования

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

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

FLT_CALLBACK_DATA

FLT_IS_IRP_OPERATION

FltClearCancelCompletion

FltPerformAsynchronousIo

FltReadFile

FltSetCancelCompletion

FltWriteFile