我正在處理包含專有文件系統的USB存儲設備。所以,我需要讀取這些設備的512字節塊來實現此文件系統的查看器。如何使用Delphi從USB存儲設備讀取原始數據塊?
我應該怎麼辦?有沒有使用Delphi的一些材料?
我正在處理包含專有文件系統的USB存儲設備。所以,我需要讀取這些設備的512字節塊來實現此文件系統的查看器。如何使用Delphi從USB存儲設備讀取原始數據塊?
我應該怎麼辦?有沒有使用Delphi的一些材料?
我討厭組件所以這裏是一些代碼
var
RawMBR : array [0..511] of byte;
btsIO : DWORD;
begin
hDevice := CreateFile('\\.\PHYSICALDRIVE1', GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
if hDevice <> INVALID_HANDLE_VALUE then
begin
SetFilePointer(hDevice,512 * 0,nil,FILE_BEGIN); // replace 0 with sector that you wish to read
ReadFile(hDevice, RawMBR[0], 512, btsIO, nil);
CloseHandle(hDevice);
end;
end;
做原始讀取訪問時,閱讀它,就像任何其他磁盤。你只需要第一個扇區
對於德爾福,你可以看看:
http://www.torry.net/pages.php?id=253
訪問物理磁盤(可能爲你工作) 原始磁盤訪問(可能爲你工作) TDiskIO(太舊,只能在W9X)
這些組件不會在Delphi 2010上編譯(可能所有Delphis都在2009以上),並且移植它們給我很難。如果沒有提出其他解決方案,我會直接嘗試通過Windows API,並在工作時發佈並回答它。 – ivarec
我們有RawDisk產品,它提供的讀寫訪問在XP,Vista和Windows 7的原始分區使用Windows API時(存在一定的安全限制和原始磁盤,您可以繞過這些限制)。代碼適用於從Delphi 5到Delphi XE的所有版本的Delphi(XE2支持將在幾天內添加)。
完美運作。謝謝。 – ivarec
如何將此代碼用於驅動器(如c:\,d:\和...)?有可能幫助我嗎? (^_^) –
@ShaahinAshayeri關於createfile使用\\。\ C: – opc0de