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);
}
Y at-il une raison que vous allez pour '' ControlSet001' au lieu de CurrentControlSet'? – peterchen
Non, cela semble être une erreur dans le code. – Christopher
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'. –