FILE_OBJECTID_INFORMATION 结构 (ntifs.h)

FILE_OBJECTID_INFORMATION 结构用于查询 NTFS 卷上目录中文件的对象 ID 信息。

语法

typedef struct _FILE_OBJECTID_INFORMATION {
  LONGLONG FileReference;
  UCHAR    ObjectId[16];
  union {
    struct {
      UCHAR BirthVolumeId[16];
      UCHAR BirthObjectId[16];
      UCHAR DomainId[16];
    } DUMMYSTRUCTNAME;
    UCHAR ExtendedInfo[48];
  } DUMMYUNIONNAME;
} FILE_OBJECTID_INFORMATION, *PFILE_OBJECTID_INFORMATION;

成员

FileReference

文件的 8 字节文件引用号。 NTFS 生成此数字,并在创建文件时自动将其分配给文件。

ObjectId[16]

文件的 16 字节文件对象 ID。 NTFS 会生成此数字,并应驱动程序或应用程序的请求将其分配给文件。 保证文件对象 ID 仅在文件所在的卷中是唯一的。

DUMMYUNIONNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BirthVolumeId[16]

创建对象标识符时文件所在的卷的对象标识符;如果卷当时没有对象标识符,则为零。 复制操作、移动操作或其他文件操作之后, BirthVolumeId 可能与对象当前所在的卷的对象标识符不同。

DUMMYUNIONNAME.DUMMYSTRUCTNAME.BirthObjectId[16]

文件创建时的对象标识符。 复制操作后,移动操作或其他文件操作 BirthObjectId 可能与 ObjectId 成员的当前值不同。

DUMMYUNIONNAME.DUMMYSTRUCTNAME.DomainId[16]

保留;必须为零。

DUMMYUNIONNAME.ExtendedInfo[48]

用户提供的数据。 可以使用它来包含 BirthVolumeIDBirthObjectIDDomainID 成员,也可以定义不同的数据结构。

注解

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

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

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

无需特殊访问权限即可查询此信息。

支持文件引用编号和文件对象 ID 是特定于文件系统的:

  • 文件对象 ID 仅在 NTFS 卷上受支持。 NTFS 允许按对象 ID 和文件引用号打开文件。
  • ReFS 不支持对象 ID。 ReFS 使用 128 位文件 ID,因此在按 ID 打开时无法完全区分文件 ID 与对象 ID。 (文件 ID 在 NTFS 上为 64 位,因此很容易与对象 ID 区分开来。NTFS 还同时支持按 128 位 ID 打开:如果高 64 位为零,则将低 64 位视为文件 ID;否则,128 位值被视为对象 ID.)

应测试使用文件对象 ID 的文件系统筛选器驱动程序与 DFS、复制器服务和分布式链接跟踪服务的互操作性,所有这些都使用和操作文件对象 ID。

此结构必须在 4 字节的长 () 边界上对齐。

要求

要求
最低受支持的客户端 Windows 2000
标头 ntifs.h (包括 Ntifs.h、Fltkernel.h)

另请参阅

FILE_INTERNAL_INFORMATION

IRP_MJ_DIRECTORY_CONTROL

ZwQueryDirectoryFile