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


FLT_PARAMETERS для объединения IRP_MJ_PREPARE_MDL_WRITE

Следующий FLT_PARAMETERS член профсоюза используется при FLT_IO_PARAMETER_BLOCK. MajorFunction IRP_MJ_PREPARE_MDL_WRITE.

Синтаксис

typedef union _FLT_PARAMETERS {
  ...    ;
  struct {
    LARGE_INTEGER           FileOffset;
    ULONG POINTER_ALIGNMENT Length;
    ULONG POINTER_ALIGNMENT Key;
    PMDL                    *MdlChain;
  } PrepareMdlWrite;
  ...    ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Участники

  • PrepareMdlWrite: структура, содержащая следующие элементы.

  • FileOffset: запуск байтов в кэшированном файле.

  • Длина: длина (в байтах) данных для записи в кэшированный файл.

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

  • MdlChain: указатель на переменную, которая получает указатель на цепочку одного или нескольких списков дескрипторов памяти (MDL), описывающих страницы, содержащие данные для записи.

Замечания

IRP_MJ_PREPARE_MDL_WRITE — это быстрая операция ввода-вывода. Это то же самое, что и IRP_MJ_WRITE + IRP_MN_MDL, за исключением следующей разницы:

  • Операция на основе IRP настраивает кэширование в файле, если он еще не кэширован перед выполнением работы MDL.
  • Операция быстрого ввода-вывода завершается ошибкой, если файл еще не кэширован.

Структура FLT_PARAMETERS для операций IRP_MJ_PREPARE_MDL_WRITE содержит параметры для быстрой операции ввода-вывода PrepareMdlWrite . Операция представлена структурой обратного вызова (FLT_CALLBACK_DATA). Он содержится в структуре FLT_IO_PARAMETER_BLOCK с параметрами операции в структуре FLT_IO_PARAMETER_BLOCK, на которую указывает Iopb.

Если быстрый запрос ввода-вывода IRP_MJ_PREPARE_MDL_WRITE завершается сбоем, издатель ввода-вывода определяет, как повторно выполнить запрос. Например, запрос может быть перезаписанным как операция на основе IRP с помощью IRP_MJ_WRITE + IRP_MN_MDL .

Требования

Тип требования Требование
Верхний колонтитул Fltkernel.h (include Fltkernel.h)

См. также

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS