2011-10-19 66 views

回答

5

我討厭組件所以這裏是一些代碼

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; 
+0

完美運作。謝謝。 – ivarec

+0

如何將此代碼用於驅動器(如c:\,d:\和...)?有可能幫助我嗎? (^_^) –

+1

@ShaahinAshayeri關於createfile使用\\。\ C: – opc0de

2

你嘗試RawDiskAccess組件,源德爾福7 here

+0

看起來很有希望,但不與2010年德爾福編譯要去嘗試修復源。 – ivarec

2

做原始讀取訪問時,閱讀它,就像任何其他磁盤。你只需要第一個扇區

對於德爾福,你可以看看:

http://www.torry.net/pages.php?id=253

訪問物理磁盤(可能爲你工作) 原始磁盤訪問(可能爲你工作) TDiskIO(太舊,只能在W9X)

+0

這些組件不會在Delphi 2010上編譯(可能所有Delphis都在2009以上),並且移植它們給我很難。如果沒有提出其他解決方案,我會直接嘗試通過Windows API,並在工作時發佈並回答它。 – ivarec

1

我們有RawDisk產品,它提供的讀寫訪問在XP,Vista和Windows 7的原始分區使用Windows API時(存在一定的安全限制和原始磁盤,您可以繞過這些限制)。代碼適用於從Delphi 5到Delphi XE的所有版本的Delphi(XE2支持將在幾天內添加)。

相關問題