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 成員中的標識碼稱為檔案識別碼。 檔案標識碼的支持是文件系統特定的。 檔案標識碼不保證在一段時間內是唯一的,因為文件系統可以自由重複使用。 在某些情況下,檔案的檔案標識碼可能會隨著時間而變更。
在 FAT 檔案系統中,檔案識別碼是從包含目錄的第一個叢集產生,以及檔案項目目錄中的位元組位移。 某些重組產品會變更此位元組位移。 (Windows 現成的重組不會。) 因此,FAT 檔案識別符可能會隨著時間而變更。 在 FAT 檔案系統中重新命名檔案也可以變更檔案識別碼,但只有在新檔名超過舊檔名時。
在NTFS檔案系統中,檔案會保留相同的檔案識別碼,直到刪除為止。 您可以使用 ReplaceFile 函式,以另一個檔案取代一個檔案,而不需變更檔案識別碼。 不過,取代檔案的檔案標識符,而不是已取代的檔案,會保留為所產生檔案的檔案標識碼。
並非所有文件系統都可以記錄建立和上次存取時間,而且並非所有文件系統都以相同的方式記錄它們。 例如,在 Windows FAT 檔系統上,建立時間的解析度為 10 毫秒、寫入時間解析度為 2 秒,而存取時間的解析度為 1 天, (存取日期) 。 在NTFS檔系統上,存取時間的解析度為1小時。 如需詳細資訊,請參閱 檔案時間。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | fileapi.h (包含 Windows.h) |