我一直在搞乱Windows API(我被告知远离WMI因为它不可靠),试图获取我的HD和连接的USB设备的设备序列号。但似乎大多数功能都是为了访问卷序列ID而不是实际制造商的唯一设备序列号。这些卷序列似乎是根据驱动器格式化的最后日期和时间计算的。
嗯,这对我想要开发的应用程序不起作用 - 如果设备被格式化并且相同的信息被复制到该设备,那么当他们启动我的应用程序时,它需要能够处理内部信息(通过序列号识别)属于该设备,如果我使用卷序列ID将丢失。
我查看了http://www.winsim.com/diskid32/的代码,但这似乎只是返回卷序列ID。编辑:实际上,这个值与音量序列不同,您可以在下面的输出中看到:
Vol Name is Hellblazer Vol Serial is 3358611714 Max Filelength is 255 chars Filesystem is NTFS 202020202020202020205a204339464a38305345 Z9CJF08ES
第一位代码中的序列(使用GetVolumeInformation)是在命令提示符下键入“vol”时为驱动器获取的十六进制值的十进制版本 - 因此这是卷序列。以下数字是从DeviceIoControl(hwDrive, IOCTL_STORAGE_QUERY_PROPERTY...
返回的数字。它与 diskid32 的程序员为我的驱动器获取的ID相同,但与下面的实际序列不同。令人费解的。
对于USB驱动器:
使用PSP_DEVICE_INTERFACE_DETAIL_DATA
结构,我可以访问GUID设备枚举,对于我的USB驱动器看起来像这样:
?\ \ USBSTOR#磁盘&安培; ven_toshiba&安培; prod_mk5059gsxp&安培; rev_gn00#203216187542_ _ &安培; 0#{53f563 07-b6bf-11d0-94f2-00a0c91efb8b}
该部分设备信息是串行的,据说是:
203216187542_ _ 的
此外,我加载了diskpart.exe(一个cmd行分区程序)并查看了我的系统硬盘驱动器和外部USB驱动器的驱动器详细信息,它们都没有匹配我上面得到的任何值:
TOSHIBA MK5055GSXF ATA Device Disk ID:00005B9E
TOSHIBA MK5059GSXP USB设备磁盘ID:51260D08
这可能会发生什么?在哪里,如何获取实际设备的实际制造序列号?
非常感谢任何帮助!