Функция 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.
- Для операции ввода-вывода не указана процедура отмены.
- Операция ввода-вывода уже отменена.
Чтобы указать подпрограмму отмены для операции ввода-вывода, вызовите Метод FltSetCancelCompletion.
Чтобы очистить подпрограмму отмены, заданную для операции ввода-вывода, вызовите Метод FltClearCancelCompletion.
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Верхняя часть | fltkernel.h (включая FltKernel.h) |
Библиотека | FltMgr.lib |
IRQL | <= DISPATCH_LEVEL |