winapi - Windows XP: Kan jeg slå op navnet på en generisk driver?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har arvet en USB-klasse kompatibel lyddriver. Det virker fint i WinXP, Win7 osv.


Jeg finder det på en italiensk XP-maskine (jeg har endnu ikke kontrolleret andre sprog) det fejler at løbe. Vores installatør har (i det væsentlige) dette:


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


Så hvis vi har den rigtige enhed (USBVID\_0a73), og hvis den generiske driver ('USB Audio Device') er installeret, så går vi videre og installerer vores. Men på den italienske maskine er det generiske navn 'USB-højttalere'. Vores sammenligning fejler og vi installerer ikke. Det forekommer mig, at Windows skal trække det navn fra et eller andet sted i registreringsdatabasen. Jeg skulle nok trække fra det samme sted og sammenligne imod det i stedet for en hardwired streng.


Jeg kan se dette navn i:


HKLMSoftwareMicrosoftWindow NTCurrentVersiondrivers.desc: wdmaud.drv == USB Speakers  



  1. Er der en bedre måde at opdage, hvis den aktuelt installerede driver er den generiske?

  2. Hvis jeg forbliver med denne streng, er der et sted i registreringsdatabasen for at finde navnet på den generiske driver?


Bedste reference


Du kunne bruge SPDRP\_SERVICE og derefter kigge føreren fra HKLMSYSTEMCurrentControlSetservices<service name>ImagePath