BY_HANDLE_FILE_INFORMATION 结构 (fileapi.h)
包含 GetFileInformationByHandle 函数检索的信息。
语法
typedef struct _BY_HANDLE_FILE_INFORMATION {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD dwVolumeSerialNumber;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD nNumberOfLinks;
DWORD nFileIndexHigh;
DWORD nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
成员
dwFileAttributes
文件属性。 有关可能的值及其说明,请参阅 文件属性常量。
ftCreationTime
FILETIME 结构,指定何时创建文件或目录。 如果基础文件系统不支持创建时间,则此成员为零 (0) 。
ftLastAccessTime
FILETIME 结构。 对于文件, 结构指定最后一次读取或写入文件的时间。 对于目录,结构指定何时创建目录。 对于文件和目录,指定的日期是正确的,但一天中的时间始终设置为午夜。 如果基础文件系统不支持上次访问时间,则此成员为零 (0) 。
ftLastWriteTime
FILETIME 结构。 对于文件, 结构指定最后一次写入文件的时间。 对于目录,结构指定何时创建目录。 如果基础文件系统不支持上次写入时间,则此成员为零 (0) 。
dwVolumeSerialNumber
包含文件的卷的序列号。
nFileSizeHigh
文件大小的高阶部分。
nFileSizeLow
文件大小的低序部分。
nNumberOfLinks
指向此文件的链接数。 对于 FAT 文件系统,此成员始终为 1。 对于 NTFS 文件系统,它可以超过 1。
nFileIndexHigh
与文件关联的唯一标识符的高阶部分。 有关详细信息,请参阅 nFileIndexLow。
nFileIndexLow
与文件关联的唯一标识符的低序部分。
标识符 () 高低部分,卷序列号唯一标识单台计算机上的文件。 若要确定两个打开的句柄是否表示同一文件,请组合每个文件的标识符和卷序列号并进行比较。
随 Windows Server 2012 引入的 ReFS 文件系统包含 128 位文件标识符。 若要检索 128 位文件标识符,请使用 GetFileInformationByHandleEx 函数和 FileIdInfo 检索 FILE_ID_INFO 结构。 不保证此结构中的 64 位标识符在 ReFS 上是唯一的。
注解
存储在 nFileIndexHigh 和 nFileIndexLow 成员中的标识符称为文件 ID。 对文件 ID 的支持特定于文件系统。 不保证文件 ID 随时间推移是唯一的,因为文件系统可以自由重复使用它们。 在某些情况下,文件的文件 ID 可能会随时间而更改。
在 FAT 文件系统中,文件 ID 是从包含目录的第一个群集和文件条目目录中的字节偏移量生成的。 某些碎片整理产品会更改此字节偏移量。 (Windows 内置碎片整理不会。) 因此,FAT 文件 ID 可能会随时间而更改。 重命名 FAT 文件系统中的文件也可以更改文件 ID,但前提是新文件名比旧文件名长。
在 NTFS 文件系统中,文件将保留相同的文件 ID,直到被删除。 可以使用 ReplaceFile 函数将一个文件替换为另一个文件,而无需更改文件 ID。 但是,替换文件(而不是被替换的文件)的文件 ID 将保留为生成的文件的文件 ID。
并非所有文件系统都可以记录创建和上次访问时间,并非所有文件系统都以相同的方式记录它们。 例如,在 Windows FAT 文件系统上,创建时间的分辨率为 10 毫秒,写入时间的分辨率为 2 秒,访问时间的分辨率为 1 天, (访问日期) 。 在 NTFS 文件系统上,访问时间的分辨率为 1 小时。 有关详细信息,请参阅文件时间。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | fileapi.h (包括 Windows.h) |