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


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

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

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

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

  • FLT_PREOP_SUCCESS_WITH_CALLBACK (все типы операций)

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

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

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

Этот раздел состоит из следующих частей.

Возврат FLT_PREOP_SUCCESS_WITH_CALLBACK

Возврат FLT_PREOP_SUCCESS_NO_CALLBACK

Возврат FLT_PREOP_SYNCHRONIZE