如何使用Delphi从USB存储设备读取原始块?

时间:2011-10-19 19:03:09

标签: delphi filesystems usb

我正在处理包含专有文件系统的USB存储设备。因此,我需要读取这些设备的512字节块来实现此文件系统的查看器。

我应该怎么做?使用Delphi是否有一些材料?

4 个答案:

答案 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支持将在几天内添加)。