Установка драйвера устройства
От: KML  
Дата: 06.09.06 08:31
Оценка:
Здравствуйте всем!

Я написал инсталяцию драйвера под ХР. Эта инсталяция работает до того как девайс вставили в USB. Все проходит вроде гладко. Но при поевлении самого девайса всплывает окно "New Hardware Wizard". Ну и конечно это окно появляется при каждом переходе к другому порту USB. Вопрос: можно ли проинсталировать драйвер так, чтобы этого окна не было? Чего не хватает? Ниже приважу код которий использую:

пожалуйста используем таг ccode в кв. скобках для выделения кода на С — модератор

    bool bRes = false;
    char ClassName[MAX_PATH];//[MAX_CLASS_NAME_LEN];
    GUID m_GUID;// = GUID_RECOVERY_SIGMATEL; 
    if(SetupDiGetINFClass(pINFFileName, &m_GUID, ClassName, MAX_PATH, NULL))
    {
        HDEVINFO DeviceInfoSet = SetupDiCreateDeviceInfoList(NULL, NULL);
        if (DeviceInfoSet != INVALID_HANDLE_VALUE) 
        {
            SP_DEVINFO_DATA            DeviceInfoData;
            SP_DRVINFO_DATA            DriverInfoData;
            SP_DEVINSTALL_PARAMS    DevInstallParams;
            ZeroMemory( &DevInstallParams, sizeof( DevInstallParams ) );
            ZeroMemory( &DeviceInfoData, sizeof(DeviceInfoData) );
            ZeroMemory( &DriverInfoData, sizeof(DriverInfoData) );
            DriverInfoData.cbSize = sizeof(SP_DRVINFO_DATA);
            DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
            DevInstallParams.cbSize = sizeof( DevInstallParams );
            DevInstallParams.Flags = DI_ENUMSINGLEINF | DI_QUIETINSTALL;
            strcpy( DevInstallParams.DriverPath, pINFFileName );

            if (SetupDiCreateDeviceInfo(DeviceInfoSet,ClassName,&m_GUID,NULL,NULL,DICD_GENERATE_ID,&DeviceInfoData))
            {
                if(!SetupDiRegisterDeviceInfo(DeviceInfoSet,&DeviceInfoData,0,NULL,0,NULL ))
                    MessageBox(NULL,"SetupDiRegisterDeviceInfo fails !","TT",MB_OK);

                if(!SetupDiSetDeviceInstallParams(DeviceInfoSet,&DeviceInfoData,&DevInstallParams ))
                    MessageBox(NULL,"SetupDiSetDeviceInstallParams fails !","TT",MB_OK);

                if(!SetupDiBuildDriverInfoList(DeviceInfoSet,&DeviceInfoData,SPDIT_CLASSDRIVER ))
                    MessageBox(NULL,"SetupDiSetDeviceInstallParams fails !","TT",MB_OK);

                if(!SetupDiEnumDriverInfo(DeviceInfoSet,&DeviceInfoData,SPDIT_CLASSDRIVER,0,&DriverInfoData ))                        
                       MessageBox(NULL,"SetupDiEnumDriverInfo fails !","TT",MB_OK);

                if(!SetupDiSetSelectedDriver(DeviceInfoSet, &DeviceInfoData, &DriverInfoData))
                    MessageBox(NULL,"SetupDiSetSelectedDriver fails !","TT",MB_OK);

                if(!SetupDiCallClassInstaller(DIF_REGISTERDEVICE, DeviceInfoSet, &DeviceInfoData))
                    MessageBox(NULL,"SetupDiCallClassInstaller DIF_REGISTERDEVICE fails !","TT",MB_OK);

                if(!SetupDiCallClassInstaller(DIF_REGISTER_COINSTALLERS, DeviceInfoSet, &DeviceInfoData))
                    MessageBox(NULL,"SetupDiCallClassInstaller DIF_REGISTER_COINSTALLERS fails !","TT",MB_OK);

                if(!SetupDiCallClassInstaller(DIF_INSTALLINTERFACES, DeviceInfoSet, &DeviceInfoData))
                    MessageBox(NULL,"SetupDiCallClassInstaller DIF_INSTALLINTERFACES fails !","TT",MB_OK);

                if(!SetupDiCallClassInstaller(DIF_INSTALLDEVICE, DeviceInfoSet, &DeviceInfoData))
                    MessageBox(NULL,"SetupDiCallClassInstaller DIF_INSTALLDEVICE fails !","TT",MB_OK);

                if(!SetupDiInstallDevice(DeviceInfoSet, &DeviceInfoData))
                    MessageBox(NULL,"SetupDiInstallDevice fails !","TT",MB_OK);

                bRes = true;
            }
            if(!SetupDiDestroyDeviceInfoList(DeviceInfoSet))
                MessageBox(NULL,"SetupDiDestroyDeviceInfoList fails !","TT",MB_OK);
        }
        else  MessageBox(NULL,"SetupDiCreateDeviceInfoList fails !","TT",MB_OK);
    }
    else  MessageBox(NULL,"SetupDiGetINFClass fails !","TT",MB_OK);
    return bRes;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.