我得到了一系列我在计算机中获得的所有驱动程序然后我得到了他们的类型以排除CD驱动器但我想删除虚拟驱动器,因为我返回真正的CD驱动器和虚拟驱动器(作为闪存,USB ...)?
答案 0 :(得分:2)
SCSI
,IDE
驱动程序(类似字典)的列表(包含 Virtual CloneDrive 等字符串)然后,您可以获取与CDROM驱动器关联的关联SCSI或IDE控制器,并在虚拟驱动器控制器列表中搜索,以确定驱动器是否为虚拟驱动器。
答案 1 :(得分:0)
我不确定这是否会有所帮助,但作为替代方案,您可以尝试测试驱动器是否准备就绪。如果没有准备好,空CD和空USB设备将返回false。这是从列表中删除未准备好的驱动器的好方法。
function IsDriveReady( const ADrive: string ): boolean;
{ Checks if a local drive is ready. Drive must be a valid local drive (A:\ to Z:\). }
var
ErrorMode: word; // current error mode
DriveNum: integer; // zero based number of drive
begin
Result := False;
// Get zero based drive number
DriveNum := GetDriveNumber( ADrive );
if DriveNum = -1 then
exit;
ErrorMode := Windows.SetErrorMode( Windows.SEM_FAILCRITICALERRORS );
try
// DiskSize requires 1 based drive numbers
// returns -1 for invalid drives
if SysUtils.DiskSize( DriveNum + 1 ) <> -1 then
Result := True;
finally
Windows.SetErrorMode( ErrorMode );
end;
end;