4

を使用してSetupDiGetClassDevs()、USBデバイスを列挙し、デバイスが使用可能かどうかを確認しました。SetupDiEnumDeviceInfo()SetupDiGetDeviceRegistryProperty()

デバイスに適切なドライバがインストールされているかどうかを確認するにはどうすればよいですか?
これをチェックするために利用できるAPIはありますか?

4

1 に答える 1

4

デバイスのドライバー情報を取得し、ドライバーがインストールされていて最新の状態であるかどうかを確認できます。

これはあなたを助けるかもしれないちょっとしたC++コードです:

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 );
}
于 2012-06-26T10:48:55.923 に答える