mips如何測試?在開發中,有時候我們需要獲取唯一标識本機的序列号,你可能會想到如下幾種,今天小編就來說說關于mips如何測試?下面更多詳細答案一起來看看吧!
在開發中,有時候我們需要獲取唯一标識本機的序列号,你可能會想到如下幾種
1) MAC地址
2) CPU ID
3) 硬盤ID
MAC地址因為MAC地址可能會被修改,而且本機可能會有多張網卡,同時網卡的數量會随着網卡被啟用或禁用而發生變化,所以暫時就不考慮使用MAC地址作為本機硬件标識了。
CPU ID這個看起來不錯,但是有個問題:CPU廠商有時候為了規避隐私問題,會對同一批次的CPU打上同一個ID,這樣就不能通過CPU ID唯一的标識機器了。
硬盤ID每一塊硬盤在出廠的時候,廠商會燒錄一個唯一的ID到硬盤中,這個标識通常可以獲取到,并且可以作為機器ID,但是在比較老的硬盤上可能沒有這個ID,另外在虛拟機中,也可能是獲取不到硬盤ID的。哎,這種方法也是個問題。
綜合以上的描述,我建議使用多種方法聯合起來對機器進行标識,防止其中一個标識因無法獲取而無法最終實現硬件唯一性标識。
下面我們通過WMI的方法來獲取硬件序列号,這裡以CPU ID為例。
WMIWMI(Windows Management Instrumentation,Windows 管理規範)是一項核心的 Windows 管理技術;用戶可以使用 WMI 管理本地和遠程計算機。
WMI初始化在使用WMI進行WQL語句查詢之前,我們需要對WMI基礎設施進行初始化。一般包含如下幾個步驟:
1) COM庫初始化(CoInitializeEx)
2) COM庫安全機制初始化(CoInitializeSecurity)
3) 創建IWbemLocator接口實例(CoCreateInstance)
4) 連接至WMI服務(ConnectServer)
5) 設定請求代理的安全級别(CoSetProxyBlanket)
以下是具體代碼片段
使用WQL進行查詢WMI支持WQL語句查詢,這個WQL非常類似SQL,例如,查詢CPU信息的語句如下:
SELECT * FROM win32_Processor
讀取CPU ID的步驟如下1) 執行WQL查詢語句(ExecQuery)
此調用會創建一個IEnumWbemClassObject接口的枚舉器實例,後面會用到這個枚舉器
2) 枚舉CPU個數(Next),返回一個IWbemClassObject對象代表當前CPU
3) 調用IWbemClassObject對象的Get方法獲取具體的屬性,例如CPU ID。
4) 釋放IWbemClassObject對象
5) 當枚舉完畢,釋放IEnumWbemClassObject對象
具體代碼片段如下:
WMI釋放當不再使用WMI組件的時候,一定要記得釋放相關的接口實例,以及COM庫,避免資源洩漏。
總結1) WMI的好處在于統一的接口和調用方式,操作系統直接在底層提供了支持,不需要我們深入到硬件層面去了解各種不同的硬件信息。
2) 不好的地方:WMI調用,特别是初始化的時候,需要的時間比較長,這個對于性能敏感及要求快速獲取相關信息的應用來說,需要慎重考慮。
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!