小编Har*_*rce的帖子

Delphi - 如何获取USB移动硬盘和记忆棒的列表?

在我的应用程序(Delphi)中,我需要列出所有USB存储设备.这些可以是闪存棒外部存储驱动器.

有一种Jvcl成分JvDriveCombo,它具有DriveType性能-问题是,如果我选择DriveType := Fixed,除了外部驱动器的话,它也列出了内部驱动器(C:\,D:\等).但是,我只想列出外部驱动器.

我相信有DeviceIoControl功能(我在MSDN上看到它),但我不知道如何使用它.

我想知道是否有人可以用正确的方式/代码来帮助我列出USB存储设备?

谢谢.

编辑:

我刚刚找到了一些示例代码并在此处发布:

uses .... jwawinbase, JwaWinIoctl;

procedure TForm1.Button1Click(Sender: TObject);
var
  DriveCmdStr: string;
  DriveHandle: THandle;
  ADriveLetter: string;
  hp: STORAGE_HOTPLUG_INFO;
  rlen: DWORD;
begin

  ADriveLetter := 'H';
  DriveCmdStr := Format('\\.\%s:', [ADriveLetter]);
  DriveHandle := CreateFile(PChar(DriveCmdStr), GENERIC_READ, FILE_SHARE_WRITE,
    nil, OPEN_EXISTING, 0, 0);

  if DriveHandle = INVALID_HANDLE_VALUE then
    Exit;

  DeviceIoControl(DriveHandle, IOCTL_STORAGE_GET_HOTPLUG_INFO, nil, 0, @hp,
    SizeOf(hp), @rlen, nil);

  CloseHandle(DriveHandle);

  if hp.MediaRemovable then
    showmessage('media removable');

end;
Run Code Online (Sandbox Code Playgroud)

现在我想知道如何枚举所有的驱动器号.哪个是最有效的功能?

delphi usb drives external hard-drive

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

delphi ×1

drives ×1

external ×1

hard-drive ×1

usb ×1