如何使用Delphi7查找Windows中存在具有特定编号(0..n)的(物理)磁盘?
计算机上有磁盘0、磁盘1、,。。。(正如我们在计算机管理中看到的)。这些(物理)磁盘可能有分区,也可能没有分区,也可能没有分区,等等。我想知道这台计算机上是否存在一个带有特定编号的磁盘(无论磁盘上有什么)。 此功能必须在Windows>=XP的任何计算机上正常工作,并且必须尽可能快(小于1秒)。 如果磁盘没有装入卷,则带有GetDriveType和DeviceIoControl(…IOCTL_STORAGE_GET_DEVICE_NUMBER…)/DiskSize/DiskFree的简单枚举“A”…'Z”没有帮助。 我正在使用Delphi 7。使用如何使用Delphi7查找Windows中存在具有特定编号(0..n)的(物理)磁盘?,windows,delphi,delphi-7,disk,Windows,Delphi,Delphi 7,Disk,计算机上有磁盘0、磁盘1、,。。。(正如我们在计算机管理中看到的)。这些(物理)磁盘可能有分区,也可能没有分区,也可能没有分区,等等。我想知道这台计算机上是否存在一个带有特定编号的磁盘(无论磁盘上有什么)。 此功能必须在Windows>=XP的任何计算机上正常工作,并且必须尽可能快(小于1秒)。 如果磁盘没有装入卷,则带有GetDriveType和DeviceIoControl(…IOCTL_STORAGE_GET_DEVICE_NUMBER…)/DiskSize/DiskFree的简单枚举“A
CreateFile()
打开“\\.\PhysicalDriveX”
作为文件名,其中X
是所需的数字,并查看它是否成功。即使失败,您仍然可以检查错误是否是由于设备不存在或不可访问(这意味着它存在)。您可以使用WMI
这个问题就像
从Win32\U磁盘驱动器中选择*
获取基本信息谢谢。这是个好主意。但是“您仍然可以检查错误是否是由于设备不存在或不可访问(这意味着它存在)”是什么意思?如果CreateFile返回无效的\u句柄\u值,是否必须使用其他命令/函数?如果是,哪些..?:“如果函数失败,返回值
无效\u HANDLE\u value
。要获取扩展错误信息,请调用”。您可以检查诸如ERROR\u PATH\u NOT\u FOUND
和ERROR\u FILE\u NOT\u FOUND
之类的错误。我已经知道GetLastError,但我认为可能有一个更优雅的解决方案。嗯,那就只好这样了。。非常感谢。