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]
用户提供的数据。 可以使用它来包含 BirthVolumeID、 BirthObjectID 和 DomainID 成员,也可以定义不同的数据结构。
注解
可以通过以下任一方式查询此信息:
调用 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) |