Форум программистов, компьютерный форум, киберфорум
Программирование драйверов
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Эксперт по электронике
6568 / 3195 / 335
Регистрация: 28.10.2011
Сообщений: 12,474
Записей в блоге: 7

Программная установка драйвера

16.02.2016, 23:00. Показов 1944. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо программно установить драйвер используя inf файл, т. е. произвести аналогичные действия какие делает система когда ей вручную задают путь к папке с драйвером. Поиском нашел статью но не уверен что это именно то что нужно. Если же приведенный в статье пример действительно предназначен для установки драйвера исходя из информации в inf файле, тогда подскажите что должно быть в первом аргументе командной строки программы (device instance Id)?

Добавлено через 4 часа 26 минут
Запустил код из статьи. Функция SetupDiCallClassInstaller() выполнилась с ошибкой -536870360 (0xE0000228).
В сети нет ее описания.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2016, 23:00
Ответы с готовыми решениями:

Установка драйвера на Windows 7
Проблема следующая. Есть драйвер для самодельной PCI платы для XP (все работает). Перекомпилировал исходники с помощью WDK 7600.16385.1 для...

Установка minifilter драйвера
Добрый день! Устанавливаю minifilter драйвера из приложения с помощью команды InstallHinfSection(...). Операционная система Windows XP...

Программная установка textStyle
Подскажите, пожалуйста, как программно установить жирный шрифт в textview? В разметке без проблем android:textStyle = "bold",...

6
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
16.02.2016, 23:36
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

Можно использовать либо UpdateDriverForPlugAndPlayDevices (установка драйвера
через INF-файл), либо SetupCopyOEMInf (предустановка INF в систему).
Обе функции в плане конечного результата практически идентичны.

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

SetupCopyOEMInf откладывает момент установки до того момента, когда
устройство будет подключено.

Некоторые моменты:

- установка в режиме WOW64 (т.е. из 32-битного процесса на
64-битных Windows) не поддерживается;

- на системах до Vista неинтерактивная установка возможна
только если драйвер подписан WHQL;

- на системах до Vista, если пользователь отвергнет установку
драйвера, узел оборудования "застрянет" в системе и его
можно будет удалить только через реестр (для некоторых
типов устройств);

- корректность INF-файла следует проверять утилитой inf2cat.exe из WDK;

- расшифровку кодов ошибок, которые выдают функции Setup API, а
также числовые значения различных флагов, следует искать в
файлах SetupApi.h и cfgmgr.h;

- в качестве основы при написании кода можно взять devcon - его
исходники есть в открытом доступе.

--------

Некоторое время назад делал полную программную установку драйверов WIA и
драйверов дисплея (mirror), с регистрацией соответствующих виртуальных
устройств в системе, если интересует - могу описать процесс более детальнее.
1
Эксперт по электронике
6568 / 3195 / 335
Регистрация: 28.10.2011
Сообщений: 12,474
Записей в блоге: 7
16.02.2016, 23:58  [ТС]
Спасибо, попробую UpdateDriverForPlugAndPlayDevices и SetupCopyOEMInf.

Уточню для какого устройства требуется установить драйвер. Это USB устройство, а драйвер - libusb. Приложил inf файл. Он корректный. По крайней мере из диспетчера устройств, драйвер устанавливается.

Возможно ошибка в функции SetupDiCallClassInstaller() потому что вместо "device instance Id" передал функции SetupDiOpenDeviceInfo() указатель на пустую строку?
Вложения
Тип файла: zip inf.zip (2.5 Кб, 12 просмотров)
0
Эксперт по электронике
6568 / 3195 / 335
Регистрация: 28.10.2011
Сообщений: 12,474
Записей в блоге: 7
17.02.2016, 00:56  [ТС]
Функция UpdateDriverForPlugAndPlayDevices() установила драйвер, спасибо.
0
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 5
29.07.2016, 11:22
Можешь помочь с этой функцией? Или хотя бы скинуть исходники?
0
1 / 1 / 0
Регистрация: 14.07.2016
Сообщений: 34
29.07.2016, 12:13
Предложу свой вариант.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
#include <Setupapi.h>
 
//RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 path-to-inf\infname.inf
 
int _tmain(int argc, _TCHAR* argv[])
{
    WCHAR buffer[MAX_PATH * sizeof(WCHAR)] = TEXT("\0");
    if(argc == 2) 
    {
        wsprintf(buffer, TEXT("DefaultInstall 132 %s"), argv[1]);
        InstallHinfSection(NULL, NULL, buffer, 0);
    } else 
    {
        printf("InstallDriver.exe <path to inf file>\n");
    }
 
    return 0;
}
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
29.07.2016, 12:41
G3QQ4, это будет работать только для legacy-драйверов и драйверов класса,
потому что секция 'DefaultInstall' обычно есть только у них.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.07.2016, 12:41
Помогаю со студенческими работами здесь

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

Программная установка разрешений NTFS
Подскажите, плз, как программно установить разрешения NTFS на файл/папку для пользователя/группы...

Программная установка флажка в CheckBoxColumn в DataGridView
Как программно установить галочку в столбце типа CheckBoxColumn в DataGridView? Делаю так, но результат нет.Спасибо string...

Программная установка расширений для браузеров
Доброго времени суток! Заранее скажу, что перед тем как спрашивать на форуме, устроил dos атаку на поисковики:) У меня возникла...

Программная установка картинки в ячейки DataGridView
При установке типа столбца в DataGridViewImageColumn и получаю следующую ошибку:


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru