2012-11-28 47 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的簽名匹配。