FLT_PARAMETERS для объединения IRP_MJ_WRITE
Следующий компонент объединения используется, когда поле MajorFunction структуры FLT_IO_PARAMETER_BLOCK для операции IRP_MJ_WRITE.
Синтаксис
typedef union _FLT_PARAMETERS {
... ;
struct {
ULONG Length;
ULONG Key;
LARGE_INTEGER ByteOffset;
PVOID WriteBuffer;
PMDL MdlAddress;
} Write;
... ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;
Участники
Запись: структура, содержащая следующие элементы.
Длина: длина( в байтах) записываемых данных.
Ключ: значение ключа, связанное с блокировкой диапазона байтов в целевом файле.
ByteOffset: начальная смещение байтов в файле записываемых данных.
WriteBuffer: указатель на буфер, содержащий данные для записи в файл. Этот элемент является необязательным и может иметь значение NULL, если MDL предоставляется в MdlAddress. См. Примечания.
MdlAddress: адрес списка дескрипторов памяти (MDL), описывающий буфер, на который указывает член WriteBuffer . Этот элемент является необязательным и может иметь значение NULL , если буфер указан в WriteBuffer. См. Примечания.
Замечания
Структура FLT_PARAMETERS для операций IRP_MJ_WRITE содержит параметры для операции записи, представленной структурой данных обратного вызова (FLT_CALLBACK_DATA). Он содержится в FLT_IO_PARAMETER_BLOCK структуре.
Если предоставляется буфер WriteBuffer и MdlAddress, рекомендуется использовать минифильтры MDL. Память, на которую указывает WriteBuffer , является допустимой, если он является адресом пользовательского режима, доступ к которому осуществляется в контексте вызывающего процесса, или если он является адресом режима ядра.
Если мини-фильтр изменяет значение MdlAddress, то после обратного вызова после операции диспетчер фильтров освобождает MDL, хранящийся в MdlAddress, и восстановит предыдущее значение MdlAddress.
Если бит IRP_MN_COMPLETE задан в Iopb-MinorFunction>, то MdlAddress — это адрес для отправки в CcMdlReadComplete.
Если в Iopb-MinorFunction> установлен IRP_MN_MDL бит (а не IRP_MN_COMPLETE бит), то MdlAddress — это адрес для отправки в CcPrepareMdlWrite.
IRP_MJ_WRITE может быть операцией на основе IRP или быстрой операцией ввода-вывода.
Требования
Тип требования | Требование |
---|---|
Верхний колонтитул | Fltkernel.h (include Fltkernel.h) |