Windows XP: могу ли я найти название универсального драйвера?

Я унаследовал аудиодрайвер, совместимый с классом 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 Audio Device»), мы устанавливаем наше. Однако на итальянской машине общее название «USB-динамики». Наше сравнение терпит неудачу, и мы не устанавливаем. Мне кажется, что Windows должна тянуть это имя откуда-то из реестра. Я, вероятно, должен взять из того же места и сравнить с ним, а не с зашитой струной.

Я вижу это имя в:

HKLM\Software\Microsoft\Window NT\CurrentVersion\drivers.desc: wdmaud.drv == USB Speakers  
  1. Есть ли лучший способ определить, является ли текущий установленный драйвер универсальным?
  2. Если я останусь с этой строкой, сравните, есть ли в реестре место, где можно найти имя универсального драйвера?

person halm    schedule 02.05.2011    source источник


Ответы (1)


Вы можете использовать SPDRP_SERVICE, а затем найти драйвер из HKLM\SYSTEM\CurrentControlSet\services\<service name>\ImagePath

person Erik    schedule 02.05.2011
comment
Кажется, это так. На самом деле, я думаю, что могу полагаться на имя службы usbaudio и просто проверять его, а не дополнительный шаг по поиску самого имени драйвера. Спасибо! - person halm; 03.05.2011