IRP_MJ_READ联合FLT_PARAMETERS

当作的 FLT_IO_PARAMETER_BLOCK 结构的 MajorFunction 字段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:指向接收从文件读取数据的缓冲区的指针。 此成员是可选的,如果 MdlAddress 中提供了 MDL,则该成员可以为 NULL。 请参阅 “备注”。

  • MdlAddress:描述 ReadBuffer 成员指向的缓冲区的内存描述符列表(MDL)的地址。 此成员是可选的,如果 ReadBuffer 中提供了缓冲区,则可以为 NULL。 请参阅 “备注”。

注解

IRP_MJ_READ作的 FLT_PARAMETERS 结构包含回调数据(FLT_CALLBACK_DATA)结构表示的读取作的参数。 它包含在FLT_IO_PARAMETER_BLOCK结构中。

如果同时提供 ReadBufferMdlAddress 缓冲区,建议使用 MDL。 ReadBuffer 指向的内存在调用进程的上下文中访问用户模式地址时或者它是内核模式地址时有效。

如果微型筛选器更改 MdlAddress 的值,则在其后作回调之后,筛选器管理器将释放当前存储在 MdlAddress 中的 MDL 并还原 MdlAddress 的上一个值。

如果在 Iopb-MinorFunction> 中设置了IRP_MN_COMPLETE位, 则 MdlAddress 是发送到 CcMdlReadComplete 的地址。

如果在 Iopb-MinorFunction> 中设置了IRP_MN_MDL位(而不是IRP_MN_COMPLETE位),则 MdlAddress 是发送到 CcMdlRead 的地址。

IRP_MJ_READ可以是基于 IRP 的作或快速 I/O作。

要求

要求类型 要求
标题 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

FltReadFile

IRP_MJ_READ

ZwReadFile