要获得我使用的序列号和轮胎类型IOCTL_STORAGE_QUERY_PROPERTY。但是,STORAGE_DEVICE_DESCRIPTOR它不包含正确的信息。至于序列号,据我了解,事情是这样的:原则上它可能不在某些磁盘上,同一组字节可以有不同的解释(如果有的话,有没有通用的方法?)。该字段BusType还显示了 RAID 总线的类型,尽管事实上我有 NVM Express。如何获取正确的信息?该解决方案应该可以在 Windows XP 下运行。
要获得我使用的序列号和轮胎类型IOCTL_STORAGE_QUERY_PROPERTY。但是,STORAGE_DEVICE_DESCRIPTOR它不包含正确的信息。至于序列号,据我了解,事情是这样的:原则上它可能不在某些磁盘上,同一组字节可以有不同的解释(如果有的话,有没有通用的方法?)。该字段BusType还显示了 RAID 总线的类型,尽管事实上我有 NVM Express。如何获取正确的信息?该解决方案应该可以在 Windows XP 下运行。
我不知道通用方法,但是对于任何支持 ATA-2 命令集的硬盘驱动器,返回序列号的 IDENTIFY DEVICE 命令应该可以工作。这里不可能对字节进行不同的解释,因为实际上只有 ANSI 字符。当然,该命令只返回缝合到设备中的内容。可能只是垃圾而不是唯一编号,就像 SMBIOS 表中著名的“由 OEM 填充”一样。根据一台设备的错误结果,不能断定该方法不起作用。您需要拥有几种不同的设备并对其进行试验。
这是获取序列号的示例代码(需要管理员权限):
对于 NVM Express 驱动器,驱动程序可以工作在 ATA 仿真模式,然后设备可以响应 IDENTIFY DEVICE 命令,但在检查功能时不返回 CAP_ATA_ID_CMD 标志。(NVM Express 有自己的命令系统,也有 IDENTIFY 命令,但格式不同。)如果需要处理这种情况,最好不进行初步检查就立即发送命令并查看错误代码。
来源