Драйвер WinUSB в Windows 10 IoT

Я пытаюсь использовать драйвер WinUsb.sys, который поставляется с Windows (включая Windows 10 IoT для Raspberry Pi 2). Используя devcon.exe, я вижу, что USB-накопитель, который я пытаюсь использовать, подключен (он называется USB\VID_1234&PID_ABCD\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-устройства, которое я подключаю?


person GTHvidsten    schedule 24.10.2015    source источник
comment
Это лучше подходит для SuperUser. Обратите внимание, что ваши драйверы должны быть скомпилированы для ARM. Может это ваша проблема?   -  person Michael-O    schedule 28.10.2015
comment
Драйвер WinUsb, предустановленный с Windows 10 IoT, уже скомпилирован для ARM. Нужно просто указать Windows (через devcon.exe и INF-файл) использовать этот драйвер для конкретного оборудования.   -  person GTHvidsten    schedule 28.10.2015


Ответы (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-устройством.

person GTHvidsten    schedule 14.11.2015