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

Следующий компонент объединения используется, когда поле MajorFunction структуры FLT_IO_PARAMETER_BLOCK для операции IRP_MJ_READ.

Синтаксис

typedef union _FLT_PARAMETERS {
  ...    ;
  struct {
    ULONG                   Length;
    ULONG POINTER_ALIGNMENT Key;
    LARGE_INTEGER           ByteOffset;
    PVOID                   ReadBuffer;
    PMDL                    MdlAddress;
  } Read;
  ...    ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

Участники

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

  • Длина: длина в байтах данных для чтения.

  • Ключ: значение ключа, связанное с блокировкой диапазона байтов в целевом файле.

  • ByteOffset: начальная смещение байтов в файле данных для чтения.

  • ReadBuffer: указатель на буфер, который получает данные, считываемые из файла. Этот элемент является необязательным и может иметь значение NULL, если MDL предоставляется в MdlAddress. См. Примечания.

  • MdlAddress: адрес списка дескрипторов памяти (MDL), описывающий буфер, на который указывает член ReadBuffer . Этот элемент является необязательным и может иметь значение NULL , если буфер предоставляется в ReadBuffer. См. Примечания.

Замечания

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

Если предоставляется буфер ReadBuffer и MdlAddress, рекомендуется использовать минифильтры MDL. Память, указывающая на то, что ReadBuffer указывает на то, что он является адресом пользовательского режима, доступ к которому осуществляется в контексте вызывающего процесса, или если он является адресом режима ядра.

Если мини-фильтр изменяет значение MdlAddress, то после обратного вызова после операции диспетчер фильтров освобождает MDL, хранящийся в MdlAddress, и восстановит предыдущее значение MdlAddress.

Если бит IRP_MN_COMPLETE задан в Iopb-MinorFunction>, то MdlAddress — это адрес для отправки в CcMdlReadComplete.

Если в Iopb-MinorFunction> установлен IRP_MN_MDL бит (а не IRP_MN_COMPLETE бит), то MdlAddress — это адрес для отправки в CcMdlRead.

IRP_MJ_READ может быть операцией на основе IRP или быстрой операцией ввода-вывода.

Требования

Тип требования Требование
Верхний колонтитул 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

FltReadFile

IRP_MJ_READ

ZwReadFile