2011-01-09 58 views
1

(這個問題是一個惡棍......它可能需要使用NTFS和/或使用NT本地API的知識;被警告。):)看看兩個手柄是硬連接到同一個文件

如果我給了兩個HANDLE到兩個文件,我怎麼能明確(不只是很有可能)找出兩個HANDLE是否屬於完全相同的文件和磁盤上的流?

這意味着,例如檢查8個字節的NTFS文件ID是不夠的,因爲具有相同文件ID的兩個HANDLE可以指向同一文件的不同數據流,並且我需要找出如果這兩個流真的是相同的,只是名稱不同(硬鏈接)。

(有什麼用?這樣一來,如果我想在一個文件夾內的所有文件進行操作,我不做操作兩次與不同名稱的相同數據流。)

回答

1

這需要GetFileInformationByHandleEx(),請求FileStreamInfo。這返回流名稱。

此警告在SDK文檔中應注意: 表現略有不同的 不同的操作系統版本

某些文件的信息類。 這些類別受 底層驅動程序支持,並且它們返回的任何 信息都受 操作系統 版本之間的更改支持。

避免依靠恢復程序中(或應該)隨時可用的信息。

+1

還值得注意的是,GetFileInformationByHandleEx僅在Vista和更高版本上可用。 (XP不會很快死掉,IMO。:)) – 2011-01-09 08:27:50

相關問題