C++ 名称映射--\\.\PhysicalDrive到\\.\SCSI

C++ 名称映射--\\.\PhysicalDrive到\\.\SCSI,c++,c,windows,winapi,C++,C,Windows,Winapi,我正在用C/C++在windows中开发,我想知道是否有可能通过\\.\PhysicalDrive\.\SCSI获得合适的设备名 例如,知道如何获得\\。\PhysicalDrive0与\\相同。\SCSI0看看我在回答中发布的代码。问题的作者多次修改了问题的文本,文本的最后一个版本也不清楚原来的问题是什么 在可以下载的C源代码示例中,我展示了如何使用不同的Windows API获取有关本地驱动器的多种信息。您需要的重要内容是一些名称转换,如DeviceType和DeviceNumber(由IO

我正在用C/C++在windows中开发,我想知道是否有可能通过
\\.\PhysicalDrive
\.\SCSI获得合适的设备名


例如,知道如何获得
\\。\PhysicalDrive0
\\相同。\SCSI0

看看我在回答中发布的代码。问题的作者多次修改了问题的文本,文本的最后一个版本也不清楚原来的问题是什么

在可以下载的C源代码示例中,我展示了如何使用不同的Windows API获取有关本地驱动器的多种信息。您需要的重要内容是一些名称转换,如DeviceType和DeviceNumber(由
IOCTL\u STORAGE\u GET\u DEVICE\u NUMBER
接收),如下所示

DeviceType: 7, DeviceNumber: 5, PartitionNumber: 1
在操作系统中是唯一的,可用于识别相同的设备。您可以在控制代码文档中找到对语句的引用:

中的值 存储\设备\编号结构为 保证保持不变,直到 设备已卸下或系统已关闭 重新启动。这并不能保证是正确的 跨设备持续重新启动或 系统重新启动


通过这种方式,您可以比较
\\.\SCSI0
设备和
\\.\PhysicalDrive0
并找出对应关系。

Oleg,非常感谢您的回复。我会尽快尝试。为
\.\SCSI
设备获取
STORAGE\u DEVICE\u NUMBER
数据似乎不是一项简单的任务,因为
IOCTL\u STORAGE\u get\u DEVICE\u NUMBER
失败,GetLastError说ERROR\u INVALID\u FUNCTION.@Ilya Matvejchikov:可能你的意思是
\.\SCSI0
\.\SCSI1
\\.\SCSI
?。在此之前,我建议您使用检查计算机上存在哪些设备。开始时查看
GLOBAL???
。@Oleg:是的,你是对的,我的意思是
\\。\SCSI0
。WinObj说我有两个SCSI设备——Scsi0:->\Device\Ide\IdePort0和Scsi1:->\Device\Ide\IdePort1@IlyaMatvejchikov:如果
\\.\SCSI0:
设备返回
错误\u无效\u函数
IOCTL\u存储\u获取\u设备\u编号
,则它不支持该请求。我真的不明白为什么需要使用IDE驱动器的SCSI模拟来访问它?你最初的目标是什么?您希望获得关于这些设备的哪些信息?您想使用硬盘还是通用SCSI设备?