【问题标题】:Windows XP: can I look up the name of a generic driver?Windows XP:我可以查找通用驱动程序的名称吗?
【发布时间】:2011-05-02 20:06:37
【问题描述】:

我继承了 USB 类兼容的音频驱动程序。在WinXP、Win7等环境下运行良好。

我发现在意大利 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. 如果我继续使用这个字符串比较,注册表中是否有地方可以找到通用驱动程序的名称?

【问题讨论】:

    标签: windows winapi registry device-driver


    【解决方案1】:

    您可以使用SPDRP_SERVICE 然后从HKLM\SYSTEM\CurrentControlSet\services\<service name>\ImagePath 查找驱动程序

    【讨论】:

    • 这似乎做到了。事实上,我认为我可以依赖服务名称 usbaudio 并检查它,而不是查找驱动程序名称本身的额外步骤。谢谢!
    猜你喜欢
    • 2011-01-16
    • 2018-09-19
    • 2020-01-31
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多