IRP_MJ_PREPARE_MDL_WRITE联合FLT_PARAMETERS

以下 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是快速 I/O作。 它执行与 IRP_MJ_WRITE + IRP_MN_MDL相同的作,但以下差异除外:

  • 基于 IRP 的作在执行 MDL 工作之前尚未缓存,则会在文件上设置缓存。
  • 如果文件尚未缓存,快速 IO作将失败。

IRP_MJ_PREPARE_MDL_WRITE作的 FLT_PARAMETERS 结构包含快速 I/O PrepareMdlWrite 作的参数。 该作由回调数据(FLT_CALLBACK_DATA)结构表示。 它包含在FLT_IO_PARAMETER_BLOCK结构中,Iopb 指向FLT_IO_PARAMETER_BLOCK结构中的作参数。

如果快速 I/O IRP_MJ_PREPARE_MDL_WRITE请求失败,I/O 的颁发者将决定如何重新发出请求。 例如,可以使用 IRP_MJ_WRITE + IRP_MN_MDL 作为基于 IRP 的作重新发出请求。

要求

要求类型 要求
标题 Fltkernel.h (包括 Fltkernel.h

另请参阅

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS