我正在处理包含专有文件系统的USB存储设备。因此,我需要读取这些设备的512字节块来实现此文件系统的查看器。
我应该怎么做?使用Delphi是否有一些材料?
答案 0 :(得分:7)
我讨厌组件,所以这里有一些代码
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;
答案 1 :(得分:2)
您是否尝试了RawDiskAccess组件,Delphi 7的来源here
答案 2 :(得分:2)
在执行原始读取访问时,就像任何其他磁盘一样读取它。你只需要第一个部门
对于Delphi,您可以查看:
http://www.torry.net/pages.php?id=253
物理磁盘访问(可能适合您) 原始磁盘访问(可能适合您) TDiskIO(太旧了,仅适用于w9x)
答案 3 :(得分:1)
我们有RawDisk产品,它提供对XP,Vista和Windows 7下原始分区的读写访问权限(使用Windows API时存在某些安全限制,而RawDisk允许您绕过这些限制)。代码适用于从Delphi 5到Delphi XE的所有Delphi版本(XE2支持将在几天内添加)。