2012-05-09 5 views
2

ATIとNVIDIAの両方のグラフィックカードで動作するソフトウェアがあります。私は、ドライバのインストール前に、デバイスIDまたはグラフィックスカードのモデル名のどちらかを決定できるようにする必要があります。私たちがサポートしているグラフィックカードで起動できるハードドライブイメージを作成できます。最初の起動時にグラフィックカードを検出し、ドライバをインストールして再起動します。ターゲットプラットフォームはWinXPです。ドライバをインストールする前にC++でGPU情報を取得する方法

私はWMIを試してみましたが、デバイスIDを含まないディスプレイアダプタに関する情報を取得することができ、ドライバがインストールされる前にディスプレイアダプタには「ビデオコントローラ(VGA)」名前のように。

EnumDisplayDevicesは、ドライバがインストールされるまでデバイスを検出できません。

これは、新しいハードウェアウィザードが開いたときにグラフィックスカードの名前が分かっているようにする必要がありますが、その方法を見つけることができません。

アイデア?

EDITは - ここで私は私自身の答えを追加します、他のユーザーのための今後の参考のために、クエリ

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 | {$ _。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/en-us/library/windows/desktop/aa394587.aspx)には、ドライバがないPCIデバイスを検出できるはずだというメモがあります(USBデバイスでない場合) – Rup

答えて

2

です。

私の記事で述べたのとは異なり、WMIはアンインストールされたデバイスを実際に検出できます.Windows_PNPEntityを照会すると、デバイスIDを取得できます。

関連する問題