2012-11-28 48 views
1

作为机器识别系统的一部分,我正在寻找Win32_DiskDrive的签名。现在在两台客户的机器上,我看到这个字段有一个随机值。我认为这是由于没有检查发货代码中的HRESULT。磁盘的随机值签名

什么会导致机器没有有效的签名?

WQL查询:SELECT标题,的DeviceID,签名,TotalSectors FROM Win32_DiskDrive

更新:

这现在已经看到了3台机器,一个在中国,一个在东欧,一个在加拿大。当我说它返回一个随机值时,我的意思是每次查询时都会返回一个不同的随机值。等待客户尝试使用diskpart并查看uniqueid被请求时的含义。

+0

不知道这是否是更多的超级用户问题 – Thomas

+0

该问题与GPT而不是MBR分区风格有关。当我完成我的问题时,将提供更完整的答案。 – Thomas

+0

尽管我可以看到人们可能会认为这个问题是关于通用硬件的,但我发现这个问题和任何SQL问题没有区别。 WQL是开发人员用来获取有关所用机器信息的工具。 – Thomas

回答

1

我找不到确定签名为空的方法。

我的解决办法是通过对磁盘分区进行迭代推动

wstring partionquery= L"ASSOCIATORS of {Win32_DiskDrive.DeviceID='"; 
partionquery += disk_deviceid; 
partionquery += L"'} WHERE AssocClass = Win32_DiskDriveToDiskPartition"; 

检索类型值,看看它是否与“GPT”开头,如果是的话,请拨打DeviceIoControl的与IOCTL_DISK_GET_PARTITION_INFO_EX。这提供了GPT分区的GUID签名。

在我的测试中,每个分区在磁盘上给出相同的签名,并且它与在diskpart中显示为uniqueid的签名匹配。