Драйвер WinUSB для Windows 10 IoT
Я обычно не использую кросс-пост, как это, но пользователь на stackoverflow предположил, что это может принадлежать здесь. Есть также небольшая щедрость на stackoverflow, если кто-то заинтересован.
Я пытаюсь использовать драйвер WinUsb.sys, который поставляется с Windows (в том числе Windows 10 IoT Raspberry Pi 2). Используя devcon.exe, я вижу, что USB, который я пытаюсь использовать, подключен (он называется USB\VID_00E3&PID_6324\5&3753427A&0&4
), но я не знаю, как заставить его использовать драйвер WinUsb.sys.
Я нашел некоторые инструкции на microsoft.com, но, похоже, это для стандартной установки Windows, где у вас есть доступный диспетчер устройств (которого у меня нет в IoT). Пример INF-файла на этой странице также относится к CAT-файлу, который, как я полагаю, является своего рода сигнатурой драйвера, и я не знаю, как это сгенерировать (или мне даже нужно). Там же есть ссылка на Windows NT (Signature = "$Windows NT$"
) и я не знаю, нужно ли это менять для IoT или нет (или нужно ли что-то еще менять для IoT в этом отношении).
Итак, используя devcon.exe и какой-нибудь INF-файл, как я могу заставить Windows IoT использовать WinUsb.sys в качестве драйвера для подключаемого USB-устройства?
1 ответ
После долгих проб и ошибок я наконец-то заработал. Вот полный INF-файл для дальнейшего использования:
; WinUSB installation file for USB device
[Version]
Signature = "$Windows NT$"
Class = USBDevice
ClassGUID = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
Provider = %ManufacturerName%
CatalogFile = WinUSBInstallation.cat
DriverVer=09/04/2012,13.54.20.543
; ========== Manufacturer/Models sections ===========
[Manufacturer]
%ManufacturerName%=Standard,NTarm
[Standard.NTarm]
%DeviceName% =USB_Install, USB\VID_1234&PID_ABCD
; ========== Class definition ===========
[ClassInstall32]
AddReg = ClassInstall_AddReg
[ClassInstall_AddReg]
HKR,,,,%ClassName%
HKR,,NoInstallClass,,1
HKR,,IconPath,%REG_MULTI_SZ%,"%systemroot%\system32\setupapi.dll,-20"
HKR,,LowerLogoVersion,,5.2
; =================== Installation ===================
[USB_Install]
Include = winusb.inf
Needs = WINUSB.NT
[USB_Install.Services]
Include =winusb.inf
Needs = WINUSB.NT.Services
[USB_Install.HW]
AddReg=Dev_AddReg
[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{ec55ee47-5758-4378-926b-68ed0aec8170}"
; =================== Strings ===================
[Strings]
ManufacturerName="The name of the company producing your device"
ClassName="Universal Serial Bus devices"
DeviceName="The name of your device"
REG_MULTI_SZ = 0x00010000
Замените идентификатор поставщика (VID) и идентификатор продукта (PID) в [Standard.NTarm] соответствующими VID и PID USB, который вы добавляете. Наконец, замените Имя производителя и Имя устройства внизу правильной информацией для вашего устройства.
Поместите этот файл где-нибудь на Raspberry Pi 2, используя либо SMB, либо FTP.
SSH или PowerShell для Raspberry Pi 2 и перейдите в папку, в которую вы положили INF-файл. Запустите следующую команду: devcon dp_add .\<name of your INF file>
Вы должны увидеть следующий результат: Driver package 'oem0.inf' added.
Наконец перезапустите RP2 (shutdown -r -t 0
из SSH/PowerShell).
Когда RP2 восстановится, ваше устройство должно появиться в списке "Подключенные устройства" в приложении запуска по умолчанию, и теперь вы сможете использовать функциональность из Windows.Devices.Usb
для связи с устройством USB.