2012-06-25 6 views
4

J'ai utilisé SetupDiGetClassDevs(), SetupDiEnumDeviceInfo() et SetupDiGetDeviceRegistryProperty() pour énumérer mon périphérique USB et vérifier si mon périphérique est disponible ou non.Vérifiez si un pilote est installé pour mon périphérique USB

Comment puis-je vérifier si mon pilote est correctement installé sur mon appareil ou non?
Existe-t-il des API disponibles pour vérifier cela?

Répondre

3

Vous pouvez obtenir les informations sur le pilote du périphérique, puis vérifier si le pilote est installé et à jour.

Voici un peu de code C++ qui pourrait vous aider:

bool fetchDriverDescription(const std::wstring& driverRegistryLocation, tDriverDescription& desc) 
{ 
    bool rval = false; 

    std::wstring regFolder = L"SYSTEM\\CurrentControlSet\\Control\\Class\\"; 
    regFolder += driverRegistryLocation; 
    win32::registry::reg_key hKey = 
     win32::registry::reg_key::open(HKEY_LOCAL_MACHINE, regFolder, KEY_READ); 
    if(hKey) 
    { 
     if(win32::registry::read(hKey, L"ProviderName", desc.DriverProviderName, false) != ERROR_SUCCESS) 
      return false; 

     desc.InstalledDriverRegFolder = regFolder; 

     std::wstring val; 
     if(win32::registry::read(hKey, L"DriverVersion", val, false) == ERROR_SUCCESS) 
      desc.Version = val; 
     rval = true; 
    } 
    return rval; 
} 

std::wstring driverRegLocation; 
if(fetchStringFromDiGetDevice(hDevInfo, DeviceInfo, SPDRP_DRIVER, driverRegLocation)) 
{ 
    bSuccessful = fetchDriverDescription(driverRegLocation, dev.DriverDesc); 
} 
+0

Y at-il une raison que vous allez pour '' ControlSet001' au lieu de CurrentControlSet'? – peterchen

+0

Non, cela semble être une erreur dans le code. – Christopher

+1

Il serait probablement préférable d'utiliser ['SetupDiGetDeviceRegistryProperty'] (http://msdn.microsoft.com/en-us/library/windows/hardware/ff551967 (v = vs.85) .aspx), que vous êtes déjà en train de faire. La seule chose que vous devriez emprunter à cette réponse est le nom des propriétés à lire: 'ProviderName' et' DriverVersion'. –

Questions connexes