ntifs.h) (FILE_BOTH_DIR_INFORMATION 结构

FILE_BOTH_DIR_INFORMATION 结构用于查询目录中文件的详细信息。

语法

typedef struct _FILE_BOTH_DIR_INFORMATION {
  ULONG         NextEntryOffset;
  ULONG         FileIndex;
  LARGE_INTEGER CreationTime;
  LARGE_INTEGER LastAccessTime;
  LARGE_INTEGER LastWriteTime;
  LARGE_INTEGER ChangeTime;
  LARGE_INTEGER EndOfFile;
  LARGE_INTEGER AllocationSize;
  ULONG         FileAttributes;
  ULONG         FileNameLength;
  ULONG         EaSize;
  CCHAR         ShortNameLength;
  WCHAR         ShortName[12];
  WCHAR         FileName[1];
} FILE_BOTH_DIR_INFORMATION, *PFILE_BOTH_DIR_INFORMATION;

成员

NextEntryOffset

如果缓冲区中存在多个条目,则下一个FILE_BOTH_DIR_INFORMATION项的字节偏移量。 如果此成员后面没有其他条目,则此成员为零。

FileIndex

文件在父目录中的字节偏移量。 对于文件系统(如 NTFS),此成员未定义,其中文件在父目录中的位置不是固定的,可以随时更改以保持排序顺序。

CreationTime

文件的创建时间。

LastAccessTime

上次访问文件的时间。

LastWriteTime

上次将信息写入文件的时间。

ChangeTime

上次更改文件的时间。

EndOfFile

绝对新的文件结尾位置,作为文件开头的字节偏移量。 EndOfFile 指定到文件末尾的字节偏移量。 由于此值从零开始,因此它实际上引用文件中的第一个可用字节。 换句话说, EndOfFile 是紧随文件中最后一个有效字节之后的字节的偏移量。

AllocationSize

文件分配大小(以字节为单位)。 通常,此值是基础物理设备的扇区或群集大小的倍数。

FileAttributes

文件属性,可以是以下各项的任意有效组合:

  • FILE_ATTRIBUTE_READONLY
  • FILE_ATTRIBUTE_HIDDEN
  • FILE_ATTRIBUTE_SYSTEM
  • FILE_ATTRIBUTE_DIRECTORY
  • FILE_ATTRIBUTE_ARCHIVE
  • FILE_ATTRIBUTE_DEVICE
  • FILE_ATTRIBUTE_NORMAL
  • FILE_ATTRIBUTE_TEMPORARY
  • FILE_ATTRIBUTE_SPARSE_FILE
  • FILE_ATTRIBUTE_REPARSE_POINT
  • FILE_ATTRIBUTE_COMPRESSED
  • FILE_ATTRIBUTE_OFFLINE
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED
  • FILE_ATTRIBUTE_ENCRYPTED

FileNameLength

指定文件名字符串的长度(以字节为单位)。

EaSize

文件的扩展属性 (EA) 的组合长度(以字节为单位)。

ShortNameLength

指定短文件名字符串的长度(以字节为单位)。

ShortName[12]

包含文件的短 (8.3) 名称的 Unicode 字符串。

FileName[1]

指定文件名字符串的第一个字符。 这在内存中后跟字符串的其余部分。

注解

可以通过以下任一方式查询此信息:

  • 调用 ZwQueryDirectoryFile,将 FileBothDirectoryInformation 作为 FileInformationClass 的值传递,并将调用方分配的FILE_BOTH_DIR_INFORMATION结构化缓冲区作为 FileInformation 的值传递。

  • 创建包含主函数代码IRP_MJ_DIRECTORY_CONTROL和次要函数代码IRP_MN_QUERY_DIRECTORY的 IRP。

查询此信息不需要任何特定的访问权限。

所有日期和时间均采用绝对系统时间格式。 绝对系统时间是自 1601 年初以来的 100 纳秒间隔数。

此结构必须在 LONGLONG (8 字节) 边界上对齐。 如果缓冲区包含其中两个或更多个结构,则每个条目中的 NextEntryOffset 值(最后一个除外)位于 8 字节边界上。

要求

要求
Header ntifs.h (包括 Ntifs.h、Fltkernel.h)

另请参阅

FsRtlNotifyFullChangeDirectory

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile