FILE_ID_ALL_EXTD_DIR_INFORMATION结构 (ntifs.h)

FILE_ID_ALL_EXTD_DIR_INFORMATION 结构用于查询目录中文件的 64 位和 128 位文件引用编号信息。

语法

typedef struct _FILE_ID_ALL_EXTD_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;
  ULONG         ReparsePointTag;
  LARGE_INTEGER FileId;
  FILE_ID_128   FileId128;
  WCHAR         FileName[1];
} FILE_ID_ALL_EXTD_DIR_INFORMATION, *PFILE_ID_ALL_EXTD_DIR_INFORMATION;

成员

NextEntryOffset

如果缓冲区中存在多个条目,则下一个 FILE_ID_64_EXTD_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_NORMAL
  • FILE_ATTRIBUTE_TEMPORARY
  • FILE_ATTRIBUTE_COMPRESSED

FileNameLength

指定文件名字符串的长度。

EaSize

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

ReparsePointTag

重新分析点的标记值。

FileId

文件的 64 位文件引用编号。 此数字由文件系统生成并分配给文件。

FileId128

文件的 128 位文件引用号。 此数字由文件系统生成并分配给文件。

FileName[1]

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

言论

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

  • 调用 ZwQueryDirectoryFile,将 FileIdAllExtdDirectoryInformation 作为 fileInformation Class 的值传递,并将调用方分配的、FILE_ID_ALL_EXTD_DIR_INFORMATION结构化缓冲区作为 fileInformation的值传递。

  • 使用主要函数代码 IRP_MJ_DIRECTORY_CONTROL 和次要函数代码IRP_MN_QUERY_DIRECTORY创建 IRP。

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

文件引用编号(也称为文件 ID)保证仅在静态文件系统中是唯一的。 随着时间的推移,它们不一定是唯一的,因为文件系统可以自由重复使用它们。 它们也不能保证保持不变。 例如,FAT 文件系统从磁盘上文件目录条目记录(DIRENT)的字节偏移量生成文件的文件引用号。 碎片整理可以更改此字节偏移量。 因此,FAT 文件引用编号可能会随时间而变化。

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

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

要求

要求 价值
最低支持的客户端 Windows 11 版本 23H2
标头 ntifs.h

另请参阅

FILE_INFORMATION_CLASS

FsRtlNotifyFullChangeDirectory

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile