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

C++ Builder

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.75
Philippov
3 / 3 / 0
Регистрация: 24.08.2012
Сообщений: 54
#1

Автоматическая установка драйвера устройства - C++ Builder

25.10.2012, 10:30. Просмотров 3649. Ответов 12
Метки нет (Все метки)

Всем здравствуйте. Передо мной встала следующая задача: Имеется драйвер для устройства(2 файла расширением inf и cat) и само устройство. При подключении устройства к ПК оно отображается как неизвестное, и требуется вручную, через диспетчер устройств устанавливать эти драйверы.
Нельзя ли этот процесс как-нибудь автоматизировать?

Добавлено через 14 минут
Сразу оговорюсь пробовал через ShellExecute и параметр "install", с указанием пути к inf файлу, на что получил следующую ошибку "выбранный inf файл не поддерживает этого метода установки".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2012, 10:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Автоматическая установка драйвера устройства (C++ Builder):

Автоматическая установка драйвера. Как отключить? - Windows 7
ноут asus m51se видеокарта - ati radeon hd 3470 Проблема: после установки новой версии Ati Catalyst (с версией драйвера 10.8), Catalyst...

Установка драйвера wifi-устройства - Wi-Fi
Привет. Не первый раз удаляя драйвера (и имея на диске минимум 2 их копии), не могу не могу установить новые. Кнопка "Обновить" не...

Автоматическая установка приложений вирусом и открытие новых вкладок Автоматическая установка приложений виру - Удаление вирусов
Вот логи. Пожалуйста помогите

Установка Windows7 на ноутбук Expert Line, установка драйвера для жесткого диска - Windows 7
Здравствуйте. Сейчас устанавливаю Win7 home basic, на ноутбук производителя Expert Line модели ELU0914 с хардом hitachi hts5450a7e380. При...

Автоматическая установка ПО - AutoIt
Добрый день, подскажите один момент как прописывать скрипт во время установки программы?! получается наживает скрипт установить процесс...

Драйвера для неизвестного устройства - Драйверы для ноутбуков
после переустановки винды в диспетчере устройств высветилось 5 неизвестных устройств. 4 уже разгадал, не могу понять последнее устройство...

12
nick42
Практикантроп
4105 / 2139 / 198
Регистрация: 23.09.2011
Сообщений: 4,541
25.10.2012, 10:55 #2
Вообще-то это прерогатива операционной системы, - запускается соотв. программа, которая по записям в inf - файле формирует изменения в реестре (если Винда), распаковывает и копирует куда надо модули (драйвера) и т.д. Вы хотите все это воспроизвести на Билдере?
0
Philippov
3 / 3 / 0
Регистрация: 24.08.2012
Сообщений: 54
25.10.2012, 12:03  [ТС] #3
Цитата Сообщение от nick42 Посмотреть сообщение
запускается соотв. программа, которая по записям в inf - файле формирует изменения в реестре (если Винда), распаковывает и копирует куда надо модули (драйвера) и т.д. Вы хотите все это воспроизвести на Билдере?
Совершенно верно. Именно такая программа мне и нужна

Добавлено через 52 минуты
Нашел функцию "UpdateDriverForPlugAndPlayDevices", но при попытке ее использовать не могу слинковать проект. Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "Newdev.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    UnicodeString s,s2;
    s = "USB\VID_04D8&PID_000A&REV_0100";
    s2 = "mchpcdc.inf";
    if (UpdateDriverForPlugAndPlayDevices(NULL, s.c_str(), s2.c_str(),
        INSTALLFLAG_FORCE, NULL))
        ShowMessage("Good");
    else
        ShowMessage("Bad");
}
Получаю ошибку "[ilink32 Error] Error: Unresolved external 'UpdateDriverForPlugAndPlayDevicesW' referenced from ...\PROJECTS\WIN32\DEBUG\UNIT1.OBJ"
0
nick42
Практикантроп
4105 / 2139 / 198
Регистрация: 23.09.2011
Сообщений: 4,541
25.10.2012, 12:14 #4
Вы, возможно, пользуете какую-то длл, не подключив ее хэдэр и библиотеку к проекту...
0
Philippov
3 / 3 / 0
Регистрация: 24.08.2012
Сообщений: 54
25.10.2012, 13:46  [ТС] #5
Цитата Сообщение от nick42 Посмотреть сообщение
Вы, возможно, пользуете какую-то длл, не подключив ее хэдэр и библиотеку к проекту...
Да вроде бы вот здесь как раз подключаю...
C++
1
#include "Newdev.h"
0
nick42
Практикантроп
4105 / 2139 / 198
Регистрация: 23.09.2011
Сообщений: 4,541
25.10.2012, 13:49 #6
А кроме Newdev.h... Откуда компилятор объектный код черпает?
0
Philippov
3 / 3 / 0
Регистрация: 24.08.2012
Сообщений: 54
25.10.2012, 13:54  [ТС] #7
А больше я ничего не подключал. Создал чистый проект, дописал
C++
1
#include "Newdev.h"
и написал обработчик на Button1.
0
nick42
Практикантроп
4105 / 2139 / 198
Регистрация: 23.09.2011
Сообщений: 4,541
25.10.2012, 14:56 #8
Ваше приложение использует NewDev.dll (в системном каталоге); если не подключали NewDev.lib - то отсюда и ошибка. Кстати, а файл NewDev.h откуда?
1
Philippov
3 / 3 / 0
Регистрация: 24.08.2012
Сообщений: 54
25.10.2012, 15:03  [ТС] #9
Файл Newdev.h лежит в "c:\Program Files (x86)\Embarcadero\RAD Studio\10.0\include\windows\sdk\". Дописав
C++
1
#pragma comment(lib, "Newdev.lib")
все собралось.
Но теперь функция UpdateDriverForPlugAndPlayDevices возвращает код ошибки(
0
LK
Заблокирован
25.10.2012, 18:16 #10
Philippov, есть хорошая традиция цитировать ошибку сюда.
0
Avazart
Эксперт С++
7213 / 5385 / 286
Регистрация: 10.12.2010
Сообщений: 23,790
Записей в блоге: 17
25.10.2012, 21:53 #11
Автоматическая инициализация Plug & Play
0
Philippov
3 / 3 / 0
Регистрация: 24.08.2012
Сообщений: 54
26.10.2012, 08:20  [ТС] #12
Этот топик я как раз и брал за основу. У меня проблема в том, что UpdateDriverForPlugAndPlayDevices возвращает код ошибки "3758096707"(что соответсвует ERROR_NO_SUCH_DEVINST).

Код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#pragma comment(lib, "Newdev.lib")
#include "Unit1.h"
#include "Newdev.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    int rc;
    UnicodeString s,s2;
    //s = "USB\Vid_04d8&Pid_000a\0";
    s = "USB\Vid04&Pid000a&Rev_0100";
    s2 = "mchpcdc.inf";
    rc = UpdateDriverForPlugAndPlayDevices(NULL, s.c_str(), s2.c_str(),
        INSTALLFLAG_FORCE, NULL);
    ShowMessage(GetLastError());
    if (rc)
        ShowMessage("Good");
    else
        ShowMessage("Bad");
 
}
То как устройство отображается в диспетчере устройств:
0
Миниатюры
Автоматическая установка драйвера устройства  
nick42
Практикантроп
4105 / 2139 / 198
Регистрация: 23.09.2011
Сообщений: 4,541
26.10.2012, 10:15 #13
Ну, так пробуйте другие функции, - видимо UpdateDriver предполагает наличие установленного уже в системе устройства. Попробуйте DiInstallDevice, InstallSelectedDriver... - там много чего есть.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2012, 10:15
Привет! Вот еще темы с ответами:

Драйвера запоминающего устройства не найдены - Windows 7
При установке windows 7 на asus eee pc 1015pd столкнулся с этой же проблемой. Выводится сообщение о том, что драйвера запоминающего...

Предустановка драйвера USB устройства - Windows XP
Есть у меня плеер Sony NWZ-B173F Walkman c поддержкой Media Transfer Protocol. Нашел новенькие версии драйверов disk.sys и partmgr.sys,...

Автоматическая установка программ - C#
К изучению с# приступил совсем недавно. Вообще, это первый язык, который изучаю. Собственно начал писать программу, суть которой в запуске...

Автоматическая установка MySQL - MySQL
Собираюсь использовать MySQL для проекта под Windows. Проблема в том, что при установке, MySQL требует ввести различные параметры. Можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
26.10.2012, 10:15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru