Драйвер WinUSB для Windows 10 IoT

2300
GTHvidsten

Я обычно не использую кросс-пост, как это, но пользователь в 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 самостоятельно, верно? Ramhound 8 лет назад 0
[Я не могу просмотреть учебник, но это должно помочь] (https://ms-iot.github.io/content/en-US/win10/samples/DriverLab.htm). [Это] (https://ms-iot.github.io/content/en-US/win10/samples/DriverLab3.htm), я знаю, это поможет. Ramhound 8 лет назад 0
Да, я знаю, что мне нужен INF-файл, но я не знаю, что он должен содержать для IoT, потому что образец, на который я ссылаюсь, предназначен для обычной Windows. Кроме того, учебник, на который вы ссылаетесь, должен создать драйвер для GPIO-устройств, а не USB-устройств. GTHvidsten 8 лет назад 0
Инструкции будут идентичны, как только у вас будет файл .INF. Если вы соберете образец и будете следовать учебному пособию, вы получите исходное место или свой файл .INF. Мы не можем предоставить эту информацию (мы ничего не знаем об устройстве), кроме как устройство USB. Ramhound 8 лет назад 0
Однако незнание USB-устройства - это прелесть WinUsb-драйвера. Вам нужен только PID + VID устройства и с драйвером WinUsb, подключенным к оборудованию, у вас есть все, что вам нужно для связи с ним, без необходимости иметь какое-либо знание о том, какое это устройство, кроме USB-устройство. Однако я более подробно рассмотрю учебник, на который вы ссылаетесь, и выясню, поможет ли мне этот файл INF в этом проекте. GTHvidsten 8 лет назад 0
Пока этот конкретный факт намекал на меня. Суть комментария заключалась в том, что мы не можем сгенерировать файл .INF для вас. Вы также, кажется, смущены тем, как заставить устройство использовать драйвер, что и было целью урока, в нем конкретно есть раздел о том, как это сделать. На этот вопрос трудно ответить, так как он, вероятно, является первым вопросом IOT для Windows 10, который я лично видел здесь. Ramhound 8 лет назад 0
Я надеялся, что здесь найдется кто-то, кто сможет предоставить мне файл примера, который будет работать в IoT для Windows 10, но я понимаю, что может быть сложно найти конкретные примеры. Я знаю, что Windows 10 IoT является относительно новым, но не думал, что буду первым, кто задаст об этом вопросы. Кто-то должен быть первым, верно? ;) GTHvidsten 8 лет назад 0
Я предлагаю вам зайти в чат, чтобы обсудить это. Я собираюсь поднять вопрос, должен ли этот вопрос быть здесь или [Raspberry Pi SE] (http://raspberrypi.stackexchange.com/). Конечно, мы разрешали вопросы по Windows RT, и между вашим `Raspberry Pi 2 'и этими устройствами существует лишь небольшая разница. В нескольких я буду пинговать модератора в чате, создавать мета и т. Д. Ramhound 8 лет назад 0
Давайте [продолжим это обсуждение в чате] (http://chat.stackexchange.com/rooms/30834/discussion-between-gthvidsten-and-ramhound). GTHvidsten 8 лет назад 0

1 ответ на вопрос

3
GTHvidsten

After a lot of trial and error I finally got it working. Here's a complete INF-file for future reference:


; WinUSB installation file for USB device [Version] Signature = "$Windows NT$" Class = USBDevice ClassGUID = 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,"" ; =================== 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 

Replace the Vendor ID (VID) and Product ID (PID) in [Standard.NTarm] with the corresponding VID and PID of the USB you're adding. Finally replace the ManufacturerName and DeviceName near the bottom with the correct info for your device.

Put this file somewhere on the Raspberry Pi 2, using either SMB or FTP.

SSH or PowerShell to the Raspberry Pi 2 and go to the folder where you put the INF file. Run the following command: devcon dp_add .\<name of your INF file>

You should see the following result: Driver package 'oem0.inf' added.

Finally restart the RP2 (shutdown -r -t 0 from SSH/PowerShell).

When the RP2 gets back up your device should be listed under "Connected Devices" on the default startup app, and you should now be able to use functionality from Windows.Devices.Usb to communicate with the USB device.