IRP_MJ_DIRECTORY_CONTROL union 的FLT_PARAMETERS

IRP_MJ_DIRECTORY_CONTROL操作的FLT_IO_PARAMETER_BLOCK结构的 MajorFunction 字段时使用的联合组件。

语法

typedef union _FLT_PARAMETERS {
  ...   ;
  union {
    struct {
      ULONG                   Length;
      PUNICODE_STRING         FileName;
      FILE_INFORMATION_CLASS  FileInformationClass;
      ULONG POINTER_ALIGNMENT FileIndex;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } QueryDirectory;
    struct {
      ULONG                   Length;
      ULONG POINTER_ALIGNMENT CompletionFilter;
      ULONG                   Spare1;
      ULONG POINTER_ALIGNMENT Spare2;
      PVOID                   DirectoryBuffer;
      PMDL                    MdlAddress;
    } NotifyDirectory;
  } DirectoryControl;
  ...   ;
} FLT_PARAMETERS, *PFLT_PARAMETERS;

成员

  • DirectoryControl:包含以下成员的结构。

  • QueryDirectory:用于IRP_MN_QUERY_DIRECTORY操作的联合组件。

  • 长度QueryDirectory.DirectoryBuffer 成员指向的缓冲区的长度(以字节为单位)。

  • FileName:指向包含指定目录中文件名称的 UNICODE_STRING 结构的指针。

  • FileInformationClass:指定下面所述的值之一。

    含义
    FileBothDirectoryInformation 返回每个文件的 FILE_BOTH_DIR_INFORMATION 结构。
    FileDirectoryInformation 返回每个文件的 FILE_DIRECTORY_INFORMATION 结构。
    FileFullDirectoryInformation 返回每个文件的 FILE_FULL_DIR_INFORMATION 结构。
    FileIdBothDirectoryInformation 返回每个文件的 FILE_ID_BOTH_DIR_INFORMATION 结构。
    FileIdFullDirectoryInformation 返回每个文件的 FILE_ID_FULL_DIR_INFORMATION 结构。
    FileNamesInformation 返回每个文件的 FILE_NAMES_INFORMATION 结构。
    FileObjectIdInformation 返回每个文件的 FILE_OBJECTID_INFORMATION 结构。
    FileReparsePointInformation 返回目录的单个 FILE_REPARSE_POINT_INFORMATION 结构。
  • FileIndex:目录扫描开始位置的文件的索引。 如果未设置SL_INDEX_SPECIFIED标志,则忽略。 不能在任何 Win32 函数或内核模式支持例程中指定此参数。 目前,它仅由 NT 虚拟 DOS 计算机 (NTVDM) 使用,而 NTVDM 仅存在于基于 NT 的 32 位操作系统上。 请注意,对于文件系统(如 NTFS),文件索引未定义,其中文件在父目录中的位置不是固定的,可以随时更改以保持排序顺序。

  • DirectoryBuffer:指向调用方提供的输出缓冲区的指针,该缓冲区接收有关目录内容的请求信息。 此成员是可选的,如果 QueryDirectory.MdlAddress 中提供了 MDL,则该成员可以为 NULL。 请参阅备注

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

  • NotifyDirectory:用于IRP_MN_NOTIFY_CHANGE_DIRECTORY操作的联合组件。

  • 长度NotifyDirectory.DirectoryBuffer 成员指向的缓冲区的长度(以字节为单位)。

  • CompletionFilter:标志的位掩码,这些标志指定应导致通知列表中的 IRP 完成的文件或目录的更改类型。 可能的标志值如下所述。

    标志 含义
    FILE_NOTIFY_CHANGE_FILE_NAME 已在此目录中添加、删除或重命名文件。
    FILE_NOTIFY_CHANGE_DIR_NAME 已创建、删除或重命名子目录。
    FILE_NOTIFY_CHANGE_NAME 此目录的名称已更改。
    FILE_NOTIFY_CHANGE_ATTRIBUTES 此文件的某个属性的值(例如上次访问时间)已更改。
    FILE_NOTIFY_CHANGE_SIZE 此文件的大小已更改。
    FILE_NOTIFY_CHANGE_LAST_WRITE 此文件的上次修改时间已更改。
    FILE_NOTIFY_CHANGE_LAST_ACCESS 此文件的上次访问时间已更改。
    FILE_NOTIFY_CHANGE_CREATION 此文件的创建时间已更改。
    FILE_NOTIFY_CHANGE_EA 此文件的扩展属性已修改。
    FILE_NOTIFY_CHANGE_SECURITY 此文件的安全信息已更改。
    FILE_NOTIFY_CHANGE_STREAM_NAME 已在此目录中添加、删除或重命名文件流。
    FILE_NOTIFY_CHANGE_STREAM_SIZE 此文件流的大小已更改。
    FILE_NOTIFY_CHANGE_STREAM_WRITE 此文件流的数据已更改。
  • 备用 1:当前未使用。

  • 备用 2:当前未使用。

  • DirectoryBuffer:指向调用方提供的输出缓冲区的指针,该缓冲区接收有关目录内容的请求信息。 此成员是可选的,如果 NotifyDirectory.MdlAddress 中提供了 MDL,则该成员可以为 NULL。 请参阅备注

  • MdlAddress:描述 NotifyDirectory.DirectoryBuffer 成员指向的缓冲区的 MDL 的地址。 此成员是可选的,如果在 NotifyDirectory.DirectoryBuffer 中提供了缓冲区,则该成员可以为 NULL。 请参阅备注

注解

IRP_MJ_DIRECTORY_CONTROL操作的 FLT_PARAMETERS 结构包含基于 IRP 的目录控制信息操作的参数,该操作由回调数据 (FLT_CALLBACK_DATA) 结构表示。 它包含在FLT_IO_PARAMETER_BLOCK结构中。

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

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

IRP_MJ_DIRECTORY_CONTROL是基于 IRP 的操作。

要求

要求类型 要求
标头 Fltkernel.h (包括 Fltkernel.h)

另请参阅

FILE_BOTH_DIR_INFORMATION

FILE_DIRECTORY_INFORMATION

FILE_FULL_DIR_INFORMATION

FILE_ID_BOTH_DIR_INFORMATION

FILE_ID_FULL_DIR_INFORMATION

FILE_NAMES_INFORMATION

FILE_OBJECTID_INFORMATION

FILE_REPARSE_POINT_INFORMATION

FLT_CALLBACK_DATA

FLT_IO_PARAMETER_BLOCK

FLT_IS_FASTIO_OPERATION

FLT_IS_FS_FILTER_OPERATION

FLT_IS_IRP_OPERATION

FLT_PARAMETERS

FltNotifyFilterChangeDirectory

FsRtlNotifyFilterChangeDirectory

FsRtlNotifyFilterReportChange

FsRtlNotifyFullChangeDirectory

FsRtlNotifyFullReportChange

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile