C 检查是否为我的USB设备安装了驱动程序

C 检查是否为我的USB设备安装了驱动程序,c,windows,winapi,device,device-driver,C,Windows,Winapi,Device,Device Driver,我使用SetupDiGetClassDevs()、SetupDiEnumDeviceInfo()和SetupDiGetDeviceRegistryProperty()枚举我的USB设备,并检查我的设备是否可用 如何检查设备是否安装了正确的驱动程序? 是否有任何API可用于检查此问题?如果您的驱动程序已安装且最新数据,您可以获取设备的驱动程序信息,然后对照此信息进行检查 这里有一点C++代码,可能对你有帮助: bool fetchDriverDescription( const std::wstr

我使用
SetupDiGetClassDevs()
SetupDiEnumDeviceInfo()
SetupDiGetDeviceRegistryProperty()
枚举我的USB设备,并检查我的设备是否可用

如何检查设备是否安装了正确的驱动程序?

是否有任何API可用于检查此问题?

如果您的驱动程序已安装且最新数据,您可以获取设备的驱动程序信息,然后对照此信息进行检查

这里有一点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 );
}

您选择使用
ControlSet001
而不是
CurrentControlSet
有什么原因吗?使用它可能会更好,因为您已经在这样做了。您应该从这个答案中借用的唯一内容是要阅读的属性名称:
ProviderName
DriverVersion
。相关问题: