1
我的問題是:如果此文件(非常重要)很小(少於一個羣集,只有幾個字節),如何獲得文件磁盤偏移量。FSCTL_GET_RETRIEVAL_POINTERS NT文件系統上很小文件上的故障
目前我使用這個Windows API函數:
DeviceIOControl(FileHandle, FSCTL_GET_RETRIEVAL_POINTERS, @InBuffer, SizeOf(InBuffer), @OutBuffer, SizeOf(OutBuffer), Num, Nil);
FirsExtent.Start := OutBuffer.Pair[0].LogicalCluster ;
它的工作原理完美比集羣更大的文件,但它只是失敗,較小的文件,因爲它總是返回一個空抵消。
小文件的步驟是什麼?它們位於NTFS捲上的位置?是否有另一種方法來了解文件偏移量?這種凌辱似乎沒有任何記錄。
注意:該問題被標記爲Delphi,但C++示例或示例也將被讚賞。
* * *記錄:「在支持的文件系統上,FSCTL_GET_RETRIEVAL_POINTERS操作返回非居民數據的範圍位置。居民數據從不具有範圍位置。」 – wj32 2011-12-30 20:57:49
呃,我想要問一個惱人的問題「爲什麼?」的衝動。 – OnTheFly 2011-12-31 12:24:43
「因爲」:我的十六進制編輯器有一個磁盤編輯器,結合一個特殊的文件資源管理器(它使用DeviceIOControl),可以在編輯卷時知道您正在編輯的內容(參見http://www.iceberg-softwares的.com /博客/的index.php?類別= 1) – az01 2011-12-31 15:44:09