Форум программистов, компьютерный форум CyberForum.ru

Как програмно установить устрройство в системе Win9x/2000? - C++

Восстановить пароль Регистрация
 
DmitryR
Сообщений: n/a
14.02.2010, 15:19     Как програмно установить устрройство в системе Win9x/2000? #1
Как програмно установить устрройство в системе Win9x/2000?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2010, 15:19     Как програмно установить устрройство в системе Win9x/2000?
Посмотрите здесь:

C++ Программно загрузить веб-страницу, вставить текст и программно нажать кнопку
C++ как програмно развернуть окно программы(консоль)
C++ Как програмно попасть в system32
Дана строка, содержащая число в десятичной системе исчисления. Преобразовать число в строке к восьмеричной системе. C++
C++ Как програмно получить название пункта меню?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
boombastik
6 / 6 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
15.02.2010, 13:13     Как програмно установить устрройство в системе Win9x/2000? #2
Установить драйвер для этого устройства
DmitryR
Сообщений: n/a
15.02.2010, 15:24     Как програмно установить устрройство в системе Win9x/2000? #3
И как это можно сделать? Можно примерчик какой-нибудь?
Примеры из ддк - почему-то отказываются работать на 9х :-(
boombastik
6 / 6 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
15.02.2010, 15:38     Как програмно установить устрройство в системе Win9x/2000? #4
Я как раз подумывал отправить тебя посмотреть DDK. Но раз ты говоришь, что уже пробовал... Хм... попробуй посмотреть вот здесь

http://www.codeproject.com/system/#Device+Drivers
http://www.codeproject.com/system/tdriver.asp

http://www.codeguru.com/system/index.shtml
http://www.codeguru.com/system/KbdClass.shtml

Но я все же думаю, тебе нужно перво наперво заставить работать примеры из DDK.

С уважением, Владимир
DmitryR
Сообщений: n/a
16.02.2010, 12:16     Как програмно установить устрройство в системе Win9x/2000? #5
Вот не знаю уж где и копать - под 2000 - все просто зашибись. Под 98 - рушится при вызове SetupDiCreateDeviceInfo. GetLastError говорит что-то вроде Invalid data - очень млин содержательно... :-(

BOOL CInstall::InstallDriver(char *szName, char *szVersion, char *szURL)
{
// perform driver installation
HDEVINFO DeviceInfoSet = 0;
SP_DEVINFO_DATA DeviceInfoData;
GUID ClassGUID;
TCHAR ClassName[MAX_CLASS_NAME_LEN];
DWORD err;
SP_DEVINSTALL_PARAMS par;
SP_DRVINFO_DATA drvdata;
//
// Use the INF File to extract the Class GUID.
//
if (!SetupDiGetINFClass(szURL, &ClassGUID, ClassName,sizeof(ClassName),0))
{
return FALSE;
}

//
// Create the container for the to-be-created Device Information Element.
//
DeviceInfoSet = SetupDiCreateDeviceInfoList(&ClassGUID,0);
if(DeviceInfoSet == INVALID_HANDLE_VALUE)
{
return FALSE;
}

//
// Now create the element.
// Use the Class GUID and Name from the INF file.
//
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
if (!SetupDiCreateDeviceInfo(DeviceInfoSet,
ClassName,
&ClassGUID,
NULL,
0,
DICD_GENERATE_ID,
&DeviceInfoData))
{
goto cleanup_DeviceInfo;
}


if (!SetupDiRegisterDeviceInfo(DeviceInfoSet, &DeviceInfoData, 0, NULL, 0, NULL)){

goto cleanup_DeviceInfo;

}

par.cbSize = sizeof(par);
par.ClassInstallReserved = 0;
strcpy(par.DriverPath, szURL);
par.FileQueue = NULL;
par.Flags = DI_ENUMSINGLEINF|DI_COMPAT_FROM_CLASS | DI_QUIETINSTALL;
par.FlagsEx = 0;
par.hwndParent = NULL;
par.InstallMsgHandler = NULL;
par.InstallMsgHandlerContext = NULL;

if (!SetupDiSetDeviceInstallParams(DeviceInfoSet, &DeviceInfoData, &par)){

goto cleanup_DeviceInfo;

}

if (!SetupDiBuildDriverInfoList (DeviceInfoSet, &DeviceInfoData, SPDIT_CLASSDRIVER )){

goto cleanup_DeviceInfo;

}


drvdata.cbSize = sizeof(drvdata);
if(!SetupDiEnumDriverInfo(DeviceInfoSet, &DeviceInfoData, SPDIT_CLASSDRIVER ,
0, &drvdata)){

goto cleanup_DeviceInfo;

}

if(!SetupDiSetSelectedDriver (DeviceInfoSet, &DeviceInfoData, &drvdata)){

goto cleanup_DeviceInfo;

}

//
// Transform the registry element into an actual devnode
// in the PnP HW tree.
//
if (!SetupDiCallClassInstaller(DIF_INSTALLDEVICE,
DeviceInfoSet,
&DeviceInfoData))
{

goto cleanup_DeviceInfo;
}


//
// Cleanup.
//
cleanup_DeviceInfo:
err = GetLastError();
SetupDiDestroyDeviceInfoList(DeviceInfoSet);
SetLastError(err);

return TRUE;
}
Yandex
Объявления
16.02.2010, 12:16     Как програмно установить устрройство в системе Win9x/2000?
Ответ Создать тему
Опции темы

Текущее время: 08:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru