FLT_PARAMETERS для объединения IRP_MJ_MDL_READ
Следующий FLT_PARAMETERS член профсоюза используется при FLT_IO_PARAMETER_BLOCK. MajorFunction IRP_MJ_MDL_READ.
Синтаксис
typedef union _FLT_PARAMETERS {
... ;
struct {
LARGE_INTEGER FileOffset;
ULONG POINTER_ALIGNMENT Length;
ULONG POINTER_ALIGNMENT Key;
PMDL *MdlChain;
} MdlRead;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Участники
MdlRead: структура, содержащая следующие элементы.
FileOffset: запуск байтов в кэшированном файле.
Длина: длина данных в байтах для чтения из кэшированного файла.
Ключ: значение ключа, связанное с блокировкой диапазона байтов в целевом файле. Если диапазон для чтения перекрывается или является подрангом исключительно заблокированного диапазона в файле, этот параметр должен быть ключом для этой эксклюзивной блокировки. Монопольная блокировка должна храниться родительским процессом вызывающего потока; в противном случае этот параметр игнорируется.
MdlChain: указатель на переменную, которая получает указатель на цепочку одного или нескольких списков дескрипторов памяти (MDL), описывающих страницы, содержащие данные для чтения.
Замечания
IRP_MJ_MDL_READ — это быстрая операция ввода-вывода. Это то же самое, что и IRP_MJ_READ + IRP_MN_MDL, за исключением следующей разницы:
- Операция на основе IRP настраивает кэширование в файле, если он еще не кэширован перед выполнением работы MDL.
- Операция быстрого ввода-вывода завершается ошибкой, если файл еще не кэширован.
Структура FLT_PARAMETERS для операций IRP_MJ_MDL_READ содержит параметры для быстрой операции ввода-вывода MdlRead. Операция представлена структурой (FLT_CALLBACK_DATA) с параметрами операции в структуре FLT_IO_PARAMETER_BLOCK, на которую указывает Iopb.
Если быстрый запрос ввода-вывода IRP_MJ_MDL_READ завершается сбоем, издатель ввода-вывода определяет, как повторно выполнить запрос. Например, запрос может быть перезаписанным как операция на основе IRP с помощью IRP_MJ_READ + IRP_MN_MDL .
Требования
Тип требования | Требование |
---|---|
Верхний колонтитул | Fltkernel.h (include Fltkernel.h) |