Здравствуйте всем!
Я написал инсталяцию драйвера под ХР. Эта инсталяция работает до того как девайс вставили в 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;