2012-05-09 36 views
2

我們有一款軟件可以在幾種不同的顯卡上運行,包括ATI和NVIDIA。我需要能夠在其驅動程序安裝之前確定設備ID或型號名稱,以便我可以創建一個可以使用我們支持的任何顯卡啓動的硬盤驅動器映像,在第一次啓動時檢測顯卡,安裝驅動程序然後重新啓動。目標平臺是WinXP。如何在安裝驅動程序之前獲取C++中的GPU信息

我試過使用WMI,但只能檢索有關顯示適配器的信息,它不包括設備ID,並且在安裝驅動程序之前顯示適配器只具有通用數據,如「視頻控制器(VGA)」爲名字等等。

EnumDisplayDevices在安裝驅動程序之後才能檢測到設備。

這一定是可能的,因爲當新的硬件嚮導打開它知道圖形卡的名稱,但我只是無法找到一種方法。

任何想法?

編輯 - 這裏的查詢

ExecQuery(bstr_t("WQL"),bstr_t("SELECT * FROM Win32_PnPEntity WHERE DeviceID LIKE 'PCI\\VEN'"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); 
+2

你在WMI中查詢什麼?你是否從一般的PNP設備列表中獲得更多信息?例如在PowerShell中'Get-WmiObject Win32_PNPEntity | Where {{_。DeviceID.StartsWith(「PCI \ VEN_10DE」) - 或$ _。DeviceID.StartsWith(「PCI \ VEN_1002」)}' – Rup

+0

我試過了: ExecQuery(bstr_t 「WQL」),bstr_t(「SELECT * FROM Win32_PnPEntity WHERE DeviceID LIKE'PCI \\ VEN'」),WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,NULL,&pEnumerator); 但是這沒有返回任何結果(即在查詢返回0之後調用Next()),所以我認爲這隻在安裝驅動程序後才起作用。 –

+1

但是,這應該會爲其他PCI設備返回大量結果。 [有關MSDN上的WMI示例列表](http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa394587.aspx)上有一些說明,指出您應該能夠檢測缺少驅動程序的PCI設備(如果不是USB設備) – Rup

回答

2

對於其他用戶,我會加上我自己的答案將來參考。

與我在文章中所說的相反,WMI實際上可以檢測卸載的設備,通過查詢Win32_PNPEntity,您可以獲取其設備ID。

相關問題