2011-05-02 52 views
1

我已經繼承了USB類兼容音頻驅動程序。它在WinXP,Win7等中正常工作。Windows XP:我可以查找通用驅動程序的名稱嗎?

我發現在意大利的XP機器上(我還沒有檢查過其他語言),它無法運行。我們的安裝人員(主要是)這樣的:

... 
SetupDiGetDeviceRegistryProperty(info, &data, SPDRP_DEVICEDESC, &type, (BYTE *)name, sizeof(name) ; 
... 
if(0 == wcsicmp(name, "USB Audio Device")) { 
    ... 
    // install our driver 
} 

所以,如果我們有合適的設備(USB\VID_0a73),如果安裝了通用驅動程序(「USB音頻設備」),那麼我們繼續前進,我們的安裝。但是在意大利機器上,通用名稱是「USB揚聲器」。我們的比較失敗,我們不安裝。在我看來,Windows必須從註冊表中的某個地方提取該名稱。我可能應該從同一個地方拉出來,然後和硬件線串比較。

我看到這個名字:

HKLM\Software\Microsoft\Window NT\CurrentVersion\drivers.desc: wdmaud.drv == USB Speakers 
  1. 是否有更好的方法來檢測,如果當前安裝的驅動程序是通用的一個?
  2. 如果我留在這個字符串比較有沒有在註冊表中找到通用驅動程序的名稱?

回答

1

你可以使用SPDRP_SERVICE然後從HKLM\SYSTEM\CurrentControlSet\services\<service name>\ImagePath

+1

這似乎做查找驅動程序。事實上,我認爲我可以依靠服務名稱_usbaudio_並只需檢查它,而不是查找驅動程序名稱本身的額外步驟。謝謝! – halm 2011-05-02 22:15:01

相關問題