Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Delphi7查找Windows中存在具有特定编号(0..n)的(物理)磁盘?_Windows_Delphi_Delphi 7_Disk - Fatal编程技术网

如何使用Delphi7查找Windows中存在具有特定编号(0..n)的(物理)磁盘?

如何使用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

计算机上有磁盘0、磁盘1、,。。。(正如我们在计算机管理中看到的)。这些(物理)磁盘可能有分区,也可能没有分区,也可能没有分区,等等。我想知道这台计算机上是否存在一个带有特定编号的磁盘(无论磁盘上有什么)。 此功能必须在Windows>=XP的任何计算机上正常工作,并且必须尽可能快(小于1秒)。 如果磁盘没有装入卷,则带有GetDriveType和DeviceIoControl(…IOCTL_STORAGE_GET_DEVICE_NUMBER…)/DiskSize/DiskFree的简单枚举“A”…'Z”没有帮助。 我正在使用Delphi 7。

使用
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,但我认为可能有一个更优雅的解决方案。嗯,那就只好这样了。。非常感谢。