Передача операций ввода-вывода по стеку экземпляров драйвера минифильтра

Когда подпрограмма предварительного вызова или рабочая подпрограмма драйвера минифильтра возвращает операцию ввода-вывода диспетчеру фильтров, диспетчер фильтров отправляет операцию драйверам минифильтров ниже текущего драйвера минифильтра в стеке экземпляров минифильтра, а также устаревшим фильтрам и файловой системе для дальнейшей обработки.

Подпрограмма обратного вызова перед выполнением драйвера минифильтра возвращает операцию ввода-вывода диспетчеру фильтров для дальнейшей обработки, возвращая одно из следующих значений состояния:

  • FLT_PREOP_SUCCESS_NO_CALLBACK (все виды операций)

  • FLT_PREOP_SUCCESS_WITH_CALLBACK (для всех типов операций)

  • FLT_PREOP_SYNCHRONIZE (только операции ввода-вывода на основе IRP)

Заметка Хотя FLT_PREOP_SYNCHRONIZE следует возвращать только для операций ввода-вывода на основе IRP, можно вернуть это значение состояния для других типов операций. Если он возвращается для операции ввода-вывода, которая не является операцией ввода-вывода на основе IRP, диспетчер фильтров обрабатывает это возвращаемое значение, как если бы это было FLT_PREOP_SUCCESS_WITH_CALLBACK.

Кроме того, рабочая процедура для операции, которая была отложена в подпрограмме обратного вызова предоперации, возвращает операцию I/O диспетчеру фильтров, передав одно из предыдущих значений статуса в параметре CallbackStatus при вызове FltCompletePendedPreOperation, чтобы возобновить обработку для отложенной операции I/O.

В этом разделе приведено следующее:

Возврат FLT_PREOP_SUCCESS_WITH_CALLBACK

Возвращение значения FLT_PREOP_SUCCESS_NO_CALLBACK

Возврат FLT_PREOP_SYNCHRONIZE