Как установить драйвера для Windows с флешки
Установочные съёмные носители – распространённая практика для опытных пользователей ПК. Иногда на них может выйти из строя программа автоматической установки. Может показаться, что в такой ситуации «флешка» становится бесполезной. Однако на неё уже установлена база драйверов, что позволяет пользоваться ею и дальше, но немного меняется алгоритм.
О том, как установить драйвера с флешки на Windows будет рассказано в этой статье.
Содержание
Рекомендуем! MultiSetup
Официальный дистрибутив Telegram | |
Тихая установка без диалоговых окон | |
Рекомендации по установке необходимых программ | |
Пакетная установка нескольких программ |
- 1 Содержимое флешки
- 1.1 Необходимая подготовка
- 1.2 Процедура установки
- 1.3 Простой способ
- 1.4 Сложный способ
В Интернете можно найти много пакетов, которые содержат в себе огромное количество драйверов и программу для их установки (например, DSP – driver Solution pack).
Поскольку программа для установки необязательна, то справится можно и имея только пакет драйверов. Если работа ведётся с ноутбуком – найти такой пакет можно на сайте производителя в разделе «Поддержка». Иногда разумнее искать на англоязычном сайте. Но суть от этого не меняется. Находим драйверы, скачиваем их и копируем на флешку.
При этом не обязательно форматировать носитель или прибегать к подобным операциям. Главное, чтобы все необходимые драйверы были скачаны. Для этого, увы, потребуется воспользоваться уже настроенным устройством.
При должном опыте и техническом оснащении пригодится даже смартфон, который выполнит роль «флешки».
Необходимая подготовка
Справедливости ради следует отметить, что есть определённые нюансы. Чтобы скачивать драйвера, нужно знать, для чего они качаются. Настройка принтера – смотрим модель и скачиваем её драйвера. Здесь всё просто, хотя могут иметься и некоторые нюансы. А если начинка неизвестна?
На помощь приходят программы для проверки оборудования. Прекрасный пример: AIDA 64. В идеале купленная portable версия. Хотя подойдёт и пробный период, если требуется выполнить настройку лишь одного компьютера и в дальнейшем программа не понадобится. Запускаем программу и открываем интересующий раздел (в качестве примера «Системная плата»).
Смотрим модель устройства (раздел «Системная плата») и отправляемся искать драйвера на сайт производителя. Не будем слишком долго останавливаться на данном вопросе. Просто находим и загружаем их, после чего копируем или распаковываем файл на съёмный носитель.
Процедура установки
Подготовка завершена — теперь можно перейти к процессу установки. Данные инструкции подойдут для любой версии ОС Windows (не важно XP, 7 или 10) — будет различаться только вид окон. Будут рассмотрены 2 способа: обычный и усложнённый. Второй может потребоваться при более тонкой работе или специфических драйверах.
Простой способ
Этот способ заключается в том, что выполняется самый обычный запуск исполняемого файла с драйвером. При этом нет ничего страшного в том, что сам драйвер запакован. В процессе установки он будет распакован в нужное место, которое будет очищено после установки.
Запускаем выполнение файла от имени администратора. Это позволит выполнить распаковку данных на системный диск и убережёт от ошибок, которые могут возникнуть. Также драйвер может представлять собой не самораспаковывающийся архив, а папку. В таком случае потребуется найти файл «instal.exe» (иногда “setup.exe”) и запустить его выполнение.
Собственно, в данном способе сложностей нет.
Сложный способ
Применяется в случаях, когда стандартная установка не даёт результата или не может быть выполнена. В нём требуется использование диспетчера устройств. Запускается он в зависимости от версии Windows разными способами:
В Windows 10: кликните ПКМ на «Пуск». Клацните по «Диспетчеру устройств».
В Windows XP и Windows 7: ПКМ по ярлыку «Мой компьютер». Выберите пункт «Управление», затем «Диспетчер устройств».
Дальше особых различий в установке драйвера нет. Будет отличаться только внешний вид окон (как и говорилось выше). Поэтому действия будут полностью аналогичными.
- Найдите и откройте необходимый девайс.
- Кликните ПКМ по устройство и выберите «Обновить драйвер».
- Выберите опцию «Выполнить поиск на этом компьютере». Может отличаться название пункта, но их всего 2, поэтому выбираем то, что стоит как альтернатива автоматическому.
- Открываем «Обзор» и в открывшемся проводнике переходим на съёмный носитель, чтобы там выбрать необходимый файл.
Требуется найти не .exe, а файл с расширением .inf. Его установка и соответствует установке драйвера.
Хотя данный способ и сложнее предыдущего, но он полностью покрывает все проблемы универсальностью. Зная необходимое оборудование, можно скачать драйвера на флешку, а потом легко выполнить их установку.
@как-установить.рф
Интеграция драйверов в образ Windows.
Сегодня расскажу об одном из многочисленных способов интеграции, внедрения, драйверов в установочный образ windows. Таким образом интегрировать можно абсолютно любые нужные вам драйвера в практически любой образ windows начиная с 7 серии и заканчивая windows 10.
Нам понадобится.
В первую очередь сам образ операционной системы в которую мы будем интегрировать драйвера. Для положительного конечного результата, образ нужно брать оригинальный, тот в который не вносились ни какие изменения.
Узнать оригинальный образ у вас или нет рассказывается тут.
Так же нам понадобятся драйвера которые мы будем интегрировать в наш образ.
Ну и сама программа с помощью которой мы будем это делать. Программа называется Ntlite. Программу можете скачать на сайте разработчике Ntlite.com
Подготовительный процесс.
Драйвера, подготовленные для интеграции, должны быть в разархивированном виде и лежать в одной папке.
Образ, в который интегрируем эти драйвера, необходимо распаковать при помощи архиватора,я пользуюсь архиватором 7zip.
Должна быть установлена программа NtLite.
Наши действия или сам процесс интеграции драйверов для windows.
Запускаем программу NtLite. В окне открывшейся программы, слева в верху нажимаем пункт добавить и указываем путь к папке с распакованным образом windows.
Папка добавиться в список источников и программа покажет какие версии windows содержатся в вашем распакованном образе.
Выбираете ту версию операционной системы которую вы будете модифицировать и нажимаете на ней левой кнопкой мыши два раза или один раз правой кнопкой и в открывшемся меню выберите загрузить.
Выбранная вами версия будет смонтирована программой во временную папку для дальнейшей работы с файлами этого образа.
Придется немного подождать пока идет процесс монтирования, загрузки. По окончании слева от образа появится зеленый кружок.
В левой половине появятся пункты меню для редактирования и изменения содержания образа windows, выбираем пунк Драйверы, затем добавить — папка с несколькими драйверами.
Указываем путь к папке с подготовленными драйверами и нажимаем открыть.
Программа поставит все драйвера которые находятся в этой папке в очередь для интеграции их в образ.
Теперь выберем пункт меню применить.
В открывшемся окне, после нажатия на пункт меню применить ставим галочку на против пункта Сохранить образ,
Ставим галочку напротив пункта Сохранить ISO.
Необходимо будет указать куда вы хотите сохранить новый образ и дать ему имя.
Затем дать метку образа и нажать ОК.
Теперь нажимаем кнопку в левом верхнем углу программы Обработка.
Программа обработает все загруженные вами драйвера, интегрирует их в образ и создаст сам образ.
Готовый образ будет сохранен там где вы указали.
Если остались вопросы то посмотрите весь процесс интеграции драйверов в образ windows, на видео.
Теперь вам осталось записать образ на диск или загрузочный носитель.
Если хотите интегрировать стандартные самые распространенные драйвера USB 3.0 то можно воспользоваться этим способом.
Надеюсь статья оказалась полезной. Всем Удачи.
11 февраля 2018
Как написать свой первый клиентский USB-драйвер (UMDF) — драйверы Windows
- Статья
- 13 минут на чтение
В этом разделе вы будете использовать шаблон USB User-Mode Driver , поставляемый с Microsoft Visual Studio 2019, для написания клиентского драйвера на основе платформы драйверов пользовательского режима (UMDF). После создания и установки клиентского драйвера вы увидите клиентский драйвер в Диспетчер устройств и просмотрите выходные данные драйвера в отладчике.
UMDF (называемый в этом разделе платформой) основан на объектной модели компонентов (COM). Каждый объект фреймворка должен реализовать IUnknown и его методы, QueryInterface , AddRef и Release по умолчанию. Методы AddRef и Release управляют временем жизни объекта, поэтому клиентскому драйверу не нужно поддерживать счетчик ссылок.
Драйвер клиента на основе UMDF реализован как внутрипроцессный сервер COM (DLL), а C++ является предпочтительным языком для написания драйвера клиента для USB-устройства. Как правило, клиентский драйвер реализует несколько интерфейсов, предоставляемых платформой. Этот раздел относится к классу, определяемому драйвером клиента, который реализует интерфейсы платформы как класс обратного вызова. После создания экземпляров этих классов результирующие объекты обратного вызова связываются с определенными объектами фреймворка. Это партнерство дает драйверу клиента возможность реагировать на события, связанные с устройством или системой, о которых сообщает платформа. Всякий раз, когда Windows уведомляет инфраструктуру об определенных событиях, инфраструктура вызывает обратный вызов драйвера клиента, если он доступен. В противном случае платформа продолжит обработку события по умолчанию. Код шаблона определяет классы обратного вызова драйвера, устройства и очереди.
Объяснение исходного кода, сгенерированного шаблоном, см. в разделе Общие сведения о коде шаблона UMDF для драйвера клиента USB.
Предварительные условия
Для разработки, отладки и установки драйвера пользовательского режима вам потребуются два компьютера:
- Главный компьютер под управлением Windows 7 или более поздней версии операционной системы Windows. Хост-компьютер — это ваша среда разработки, в которой вы пишете и отлаживаете свой драйвер.
- Целевой компьютер с версией операционной системы, на которой вы хотите протестировать драйвер, например Windows 10 версии 19.03. На целевом компьютере есть драйвер пользовательского режима, который вы хотите отладить, и один из отладчиков.
В некоторых случаях, когда на главном и целевом компьютерах установлена одна и та же версия Windows, у вас может быть только один компьютер с Windows 7 или более поздней версией Windows. В этом разделе предполагается, что вы используете два компьютера для разработки, отладки и установки драйвера пользовательского режима.
Прежде чем начать, убедитесь, что вы соответствуете следующим требованиям:
Требования к программному обеспечению
На вашем хост-компьютере установлена Visual Studio 2019.
На главном компьютере установлен последний комплект драйверов Windows (WDK) для Windows 10 версии 1903.
В комплект входят заголовки, библиотеки, инструменты, документация и инструменты отладки, необходимые для разработки, сборки и отладки клиентского драйвера USB. Вы можете получить последнюю версию WDK из Как получить WDK.
На главном компьютере установлена последняя версия средств отладки для Windows. Вы можете получить последнюю версию из WDK или загрузить и установить средства отладки для Windows.
Если вы используете два компьютера, вы должны настроить главный и целевой компьютеры для отладки в пользовательском режиме. Дополнительные сведения см. в разделе Настройка отладки пользовательского режима в Visual Studio.
Требования к оборудованию
Получите USB-устройство, для которого вы будете писать клиентский драйвер. В большинстве случаев вам предоставляется USB-устройство и его аппаратная спецификация. Спецификация описывает возможности устройства и поддерживаемые команды производителя. Используйте спецификацию, чтобы определить функциональные возможности драйвера USB и соответствующие проектные решения.
Если вы новичок в разработке USB-драйверов, используйте учебный комплект OSR USB FX2 для изучения образцов USB, включенных в WDK. Он содержит устройство USB FX2 и все необходимые аппаратные характеристики для реализации клиентского драйвера.
Рекомендуемое чтение
- Понятия для всех разработчиков драйверов
- Узлы устройств и стеки устройств
- Начало работы с драйверами Windows
- Платформа драйверов пользовательского режима
- Разработка драйверов с помощью Windows Driver Foundation , написанный Пенни Орвик и Гаем Смитом. Дополнительные сведения см. в разделе Разработка драйверов с помощью WDF.
Инструкции
Шаг 1. Создайте код драйвера UMDF с помощью шаблона USB-драйвера Visual Studio 2019
Инструкции по созданию кода драйвера UMDF см. в разделе Написание драйвера UMDF на основе шаблона.
Для кода, специфичного для USB, выберите следующие параметры в Visual Studio 2019
- В диалоговом окне New Project в поле поиска вверху введите USB.
- В средней панели выберите Драйвер пользовательского режима, USB (UMDF V2) .
- лизать Далее .
- Введите имя проекта, выберите место для сохранения и нажмите Создать .
На следующих снимках экрана показано диалоговое окно New Project для шаблона USB User-Mode Driver .
В этом разделе предполагается, что проект называется «MyUSBDriver_UMDF_». Он содержит следующие файлы:
Файлы | Описание |
---|---|
Driver.h; Драйвер.c | Объявляет и определяет класс обратного вызова, реализующий интерфейс IDriverEntry . Класс определяет методы, которые вызываются объектом драйвера платформы. Основная цель этого класса — создать объект устройства для клиентского драйвера. |
Устройство.h; Устройство.с | Объявляет и определяет класс обратного вызова, который реализует Интерфейс IPnpCallbackHardware . Класс определяет методы, которые вызываются объектом устройства платформы. Основная цель этого класса — обработка событий, происходящих в результате изменения состояния Plug and Play (PnP). Класс также выделяет и инициализирует ресурсы, необходимые драйверу клиента, пока он загружен в систему. |
IoQueue.h; IoQueue.c | Объявляет и определяет класс обратного вызова, который реализует IQueueCallbackDeviceIoControl 9Интерфейс 0016. Класс определяет методы, которые вызываются объектом очереди платформы. Цель этого класса — извлекать запросы ввода-вывода, поставленные в очередь в инфраструктуре. |
Внутренний.h | Предоставляет общие объявления, используемые драйвером клиента и пользовательскими приложениями, взаимодействующими с USB-устройством. Он также объявляет функции трассировки и макросы. |
Dllsup.cpp | Содержит реализацию точки входа модуля драйвера. |
<Имя проекта> . inf | INF-файл, необходимый для установки драйвера клиента на целевой компьютер. |
Экспорт.def | Файл DEF, который экспортирует имя функции точки входа модуля драйвера. |
Шаг 2. Измените файл INF, чтобы добавить информацию о вашем устройстве
Перед сборкой драйвера необходимо изменить INF-файл шаблона, указав информацию о вашем устройстве, в частности, строку идентификатора оборудования.
Для ввода строки идентификатора оборудования
Подключите USB-устройство к главному компьютеру и позвольте Windows перечислить устройство.
Откройте Диспетчер устройств и откройте свойства вашего устройства.
На вкладке Details выберите Hardward Ids в разделе Property.
Идентификатор оборудования для устройства отображается в списке. Выберите и удерживайте (или щелкните правой кнопкой мыши) и скопируйте строку идентификатора оборудования.
В обозревателе решений разверните Файлы драйверов и откройте файл INF.
Замените следующую строку идентификатора вашего оборудования.
[Стандарт.NT$ARCH$]
%DeviceName%=MyDevice_Install, USB\VID_vvvv&PID_pppp
Обратите внимание на записи AddReg в файле информации о драйвере (INF).
[CoInstallers_AddReg] ;
HKR,CoInstallers32,0x00010008,"WudfCoinstaller.dll"
HKR,CoInstallers32,0x00010008,"WudfUpdate_01011.dll"
HKR,CoInstallers32,0x00010008,"WdfCoInstaller01011.dll,WdfCoInstaller"
HKR,CoInstallers32,0x00010008,"WinUsbCoinstaller2.dll"
- WudfCoinstaller.dll (программа совместной установки конфигурации)
- WUDDFUpdate_ <версия> .dll (распространяемый соустановщик)
- Wdfcoinstaller <версия> . dll (соустановщики для KMDF)
- Winusbcoinstaller2.dll ((соустановщики для Winusb.sys)
- MyUSBDriver_UMDF_.dll (модуль клиентского драйвера)
Если директива INF AddReg ссылается на распространяемый соустановщик UMDF (WUDFUpdate_ <версия> .dll), вы не должны ссылаться на соустановщик конфигурации (WUDFCoInstaller.dll). Ссылка на оба соустановщика в INF приведет к ошибкам установки.
Для всех клиентских USB-драйверов на основе UMDF требуются два драйвера Microsoft: рефлектор и WinUSB.
Рефлектор — если ваш драйвер загружается успешно, отражатель загружается как самый верхний драйвер в стеке режима ядра. Рефлектор должен быть главным драйвером в стеке режима ядра. Чтобы выполнить это требование, в файле INF шаблона отражатель указан как служба, а WinUSB — как драйвер нижнего фильтра в INF:
.[MyDevice_Install.NT.Services]
AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall ; флаг 0x2 устанавливает это как службу для устройства
AddService=WinUsb,0x000001f8,WinUsb_ServiceInstall ; эта служба установлена, потому что это фильтр.
WinUSB — пакет установки должен содержать программы совместной установки для Winusb.sys, так как для клиентского драйвера WinUSB является шлюзом к стеку USB-драйверов режима ядра. Еще один загружаемый компонент — это DLL пользовательского режима с именем WinUsb.dll в хост-процессе клиентского драйвера (Wudfhost.exe). Winusb.dll предоставляет функции WinUSB, которые упрощают процесс связи между драйвером клиента и WinUSB.
Шаг 3. Создайте клиентский драйвер USB, код
Чтобы создать драйвер
- Откройте проект драйвера или решение в Visual Studio 2019.
- Щелкните правой кнопкой мыши решение в обозревателе решений и выберите Configuration Manager .
- В диспетчере Configuration Manager выберите Active Solution Configuration (например, Debug или Release ) и Active Solution Platform (например, Win32 ), которые соответствуют интересующему вас типу сборки.
- Убедитесь, что GUID интерфейса вашего устройства точен во всем проекте.
- GUID интерфейса устройства определен в файле Trace.h, и на него ссылается
MyUSBDriverUMDFCreateDevice
в файле Device.c. Когда вы создаете проект с именем «MyUSBDriver_UMDF_», Visual Studio 2019 определяет GUID интерфейса устройства с именемGUID_DEVINTERFACE_MyUSBDriver_UMDF_
, но вызываетWdfDeviceCreateDeviceInterface
с неверным параметром «GUID_DEVINTERFACE_MyUSBDriverUMDF». Замените неправильный параметр именем, определенным в Trace.h, чтобы обеспечить правильную сборку драйвера.
- GUID интерфейса устройства определен в файле Trace.h, и на него ссылается
- В меню Build выберите Build Solution .
Дополнительные сведения см. в разделе Создание драйвера.
Шаг 4. Настройка компьютера для тестирования и отладки
Чтобы протестировать и отладить драйвер, запустите отладчик на главном компьютере и драйвер на целевом компьютере. До сих пор вы использовали Visual Studio на главном компьютере для создания драйвера. Далее вам нужно настроить целевой компьютер. Чтобы настроить целевой компьютер, следуйте инструкциям в разделе Подготовка компьютера для развертывания и тестирования драйвера.
Шаг 5. Включите трассировку для отладки ядра
Код шаблона содержит несколько сообщений трассировки (TraceEvents), которые могут помочь вам отслеживать вызовы функций. Все функции в исходном коде содержат сообщения трассировки, которые отмечают вход и выход из подпрограммы. Для ошибок сообщение трассировки содержит код ошибки и осмысленную строку. Поскольку трассировка WPP включена для вашего проекта драйвера, файл символов PDB, созданный в процессе сборки, содержит инструкции по форматированию сообщений трассировки. Если вы настроите хост и целевые компьютеры для трассировки WPP, ваш драйвер может отправлять сообщения трассировки в файл или отладчику.
Чтобы настроить хост-компьютер для трассировки WPP
Создайте файлы формата сообщений трассировки (TMF), извлекая инструкции по форматированию сообщений трассировки из файла символов PDB.
Вы можете использовать Tracepdb.exe для создания файлов TMF. Инструмент находится в папке <установочная папка> Windows Kits\10\bin\ <архитектура> WDK. Следующая команда создает файлы TMF для проекта драйвера.
tracepdb -f [PDBFiles] -p [TMFDirectory]
Параметр -f указывает расположение и имя файла символов PDB. Параметр -p указывает расположение файлов TMF, созданных Tracepdb. Дополнительные сведения см. в разделе Команды Tracepdb .
В указанном месте вы увидите три файла (по одному на каждый файл .c в проекте). Им присваиваются имена файлов GUID.
В отладчике введите следующие команды:
.загрузить Wmitrace .цепь !wmitrace.searchpath +***<Расположение файла TMF>
Эти команды:
- Загрузите расширение Wmitrace.dll.
- Проверяет, загружено ли расширение отладчика.
- Добавляет расположение файлов TMF в путь поиска расширения отладчика.
Результат выглядит следующим образом:
Путь поиска в формате трассировки: 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE;c:\drivers\tmf
Настройка целевого компьютера для отслеживания WPP
- Убедитесь, что на целевом компьютере установлено средство Tracelog. Инструмент находится в
- Откройте окно команд и запустите от имени администратора.
- Введите следующую команду:
**tracelog -start MyTrace -guid \#c918ee71-68c7-4140-8f7d-c907abbcb05d -flag 0xFFFF -level 7-rt -kd**
Команда запускает сеанс трассировки с именем MyTrace.
Руководство 9Аргумент 0016 указывает GUID поставщика трассировки, который является клиентским драйвером. Вы можете получить GUID из Trace.h в проекте Visual Studio 2019. В качестве другого варианта вы можете ввести следующую команду и указать GUID в файле .guid. Файл содержит GUID в формате дефиса:
**tracelog -start MyTrace -guid c:\\drivers\\Provider.guid -flag 0xFFFF -level 7-rt -kd**
Вы можете остановить сеанс трассировки, введя следующую команду:
**tracelog -stop MyTrace**
Шаг 6. Разверните драйвер на целевом компьютере
- В окне Solution Explorer выберите и удерживайте (или щелкните правой кнопкой мыши) <имя проекта> Package и выберите Properties .
- На левой панели перейдите к Свойства конфигурации > Установка драйвера > Развертывание .
- Установите флажок Включить развертывание и установите флажок Импортировать в хранилище драйверов.
- Для Имя удаленного компьютера укажите имя целевого компьютера.
- Выберите Установить и проверить .
- Выбрать Хорошо .
- В меню Debug выберите Start Debugging или нажмите F5 на клавиатуре.
Примечание
Укажите , а не идентификатор оборудования вашего устройства в разделе Идентификатор оборудования Обновление драйвера . Идентификатор оборудования должен быть указан только в файле информации о вашем драйвере (INF).
Шаг 7. Просмотрите драйвер в Диспетчере устройств
Введите следующую команду, чтобы открыть Диспетчер устройств .
разработчик
Убедитесь, что Диспетчер устройств показывает следующий узел.
USB-устройство
MyUSBDriver_UMDF_Device
Шаг 8. Просмотрите выходные данные в отладчике
Убедитесь, что сообщения трассировки отображаются в окне Debugger Immediate на хост-компьютере.
Вывод должен быть примерно таким:
[0]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::OnPrepareHardware Entry [0]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::OnPrepareHardware Выход [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::CreateInstanceAndInitialize Entry [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::Инициализировать запись [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::Инициализировать Выход [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::CreateInstanceAndInitialize Выход [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::Настроить запись [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyIoQueue::CreateInstanceAndInitialize Entry [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyIoQueue::Инициализировать запись [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyIoQueue::Инициализировать Выход [1]0744. 05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyIoQueue::CreateInstanceAndInitialize Выход [1]0744.05F0::00/00/0000-00:00:00.000 [MyUSBDriver_UMDF_]CMyDevice::Настроить Выход
Давайте посмотрим, как платформа и клиентский драйвер работают вместе, чтобы взаимодействовать с Windows и обрабатывать запросы, отправляемые на USB-устройство. На этом рисунке показаны модули, загруженные в систему для клиентского USB-драйвера на основе UMDF.
Назначение каждого модуля описано здесь:
- Приложение — процесс пользовательского режима, который выдает запросы ввода-вывода для связи с USB-устройством.
- Диспетчер ввода-вывода — компонент Windows, который создает пакеты запросов ввода-вывода (IRP) для представления полученных запросов приложений и перенаправляет их на вершину стека устройств режима ядра для целевого устройства.
- Reflector — предоставленный корпорацией Майкрософт драйвер режима ядра, установленный в верхней части стека устройств режима ядра (WUDFRd. sys). Рефлектор перенаправляет IRP, полученные от диспетчера ввода-вывода, хост-процессу клиентского драйвера. После получения запроса платформа и клиентский драйвер обрабатывают запрос.
- Хост-процесс — процесс, в котором работает драйвер пользовательского режима (Wudfhost.exe). Он также содержит платформу и диспетчер ввода-вывода.
- Драйвер клиента — функциональный драйвер пользовательского режима для USB-устройства.
- UMDF — модуль платформы, который обрабатывает большинство взаимодействий с Windows от имени клиентского драйвера. Он предоставляет интерфейсы драйверов устройств пользовательского режима (DDI), которые клиентский драйвер может использовать для выполнения общих задач драйвера.
- Диспетчер — механизм, работающий в хост-процессе; определяет, как направить запрос в режим ядра после того, как он был обработан драйверами пользовательского режима и достиг нижней части стека пользовательского режима. На иллюстрации диспетчер перенаправляет запрос в библиотеку DLL пользовательского режима, Winusb. dll.
- Винусб.
- Winusb.sys — предоставленный корпорацией Майкрософт драйвер, необходимый для всех клиентских драйверов UMDF для USB-устройств. Драйвер должен быть установлен под отражателем и действует как шлюз к стеку драйверов USB в режиме ядра. Дополнительные сведения см. в разделе WinUSB.
- Стек драйверов USB — набор драйверов, предоставленных Microsoft, которые управляют связью на уровне протокола с USB-устройством. Дополнительные сведения см. в разделе Драйверы USB на стороне хоста в Windows.
Всякий раз, когда приложение отправляет запрос на стек драйвера USB, диспетчер ввода-вывода Windows отправляет запрос рефлектору, который направляет его драйверу клиента в пользовательском режиме. Драйвер клиента обрабатывает запрос, вызывая определенные методы UMDF, которые внутренне вызывают функции WinUSB для отправки запроса на WinUSB. Получив запрос, WinUSB либо обрабатывает запрос, либо перенаправляет его в стек драйвера USB.
Понимание кода шаблона UMDF для драйвера клиента USB
Как включить выборочную приостановку USB и пробуждение системы в драйвере UMDF для USB-устройства
Начало работы с разработкой клиентского драйвера USB
c — Как внедрить драйвер USB-устройства для Windows?
спросил
Изменено 10 лет, 1 месяц назад
Просмотрено 7к раз
Как мне реализовать драйвер USB-устройства для Windows? Как я должен учитывать разные версии окон, например: — Windows XP — Виндоус виста — Windows 7
Существуют ли решения с открытым исходным кодом, которые можно было бы использовать в качестве отправной точки? Я новичок в разработке драйверов для Windows.
У нас есть встроенное устройство с USB-портом, и мы хотели бы иметь как можно более низкую задержку при передаче данных от уровня приложения к устройству без ущерба для пропускной способности данных. Фактически передаваемые данные являются данными АЦП/ЦАП. По сути, есть много данных, которые нам нужно как можно быстрее перенести на компьютер с Windows.
- c
- windows
- встроенный
- драйвер
Нам нужна дополнительная информация об устройстве, чтобы указать вам правильное направление, но вот несколько шагов, чтобы вы начали:
- зарегистрируйтесь в Microsoft Connect, поэтому вы можете скачать комплект драйверов Windows
- зарегистрируйтесь на osr-online, так как вы найдете отличные статьи, много информации и группу новостей, посвященную только драйверам Windows — это место — золотая жила
- купить Разработка драйверов с помощью WDF, которая поможет вам разобраться в разработке драйверов для Windows и даст вам хорошую основу для чтения статей из OSR и Microsoft .
- Надеюсь, что вы можете использовать UMDF (драйверы пользовательского режима) так же, как вы можете использовать C++ и просто писать код COM. Если вы делаете с USB что-то, что требует пространства ядра… вам предстоит много читать и учиться в следующем году!
Чтобы ответить на ваш вопрос о версиях, в наборе драйверов есть инструменты, которые помогут вам управлять созданием различных драйверов. Если вы напишете хороший драйвер, он должен работать на всех трех ОС без проблем, а различия будут только в области конфигурации (не в бинарнике)
В основном это зависит от сложности вашего устройства. Какой тип драйвера вы пытаетесь написать? Файловая система? Мп3-плеер? Камера? Модем?
Если вам в конечном итоге придется писать драйвер режима ядра, дайте мне знать, и я могу указать вам на несколько хороших статей, а что нет.
Я должен также добавить, что примерно за 5000 долларов США вы можете купить лицензию на WinDriver, инструмент, который упрощает разработку драйверов. Вы можете использовать код пользовательского режима C++ или C# для связи с их драйвером, созданным специально для вашего устройства. Это выход, если у вас сжатые сроки.
2
Вы можете посмотреть вариант Windows libusb * здесь *. На официальном сайте libusb и в Интернете есть оболочки для многих языков программирования.
1
Начните здесь: Введение в комплект драйверов Windows
2
Если у вас есть какой-либо контроль над устройством, реализуйте интерфейс, для которого Windows уже предоставляет драйверы. Например. класс USB HID (буквально «человеческое устройство ввода», но ни «человек», ни «ввод» не являются обязательными) уже имеет драйверы Windows, а сверху есть разумный Win32 API. Однако вы не получите скорость передачи данных около 480 Мбит/с.