WinUSB-Treiber unter Windows 10 IoT

2366
GTHvidsten

Normalerweise kreuze ich nicht so, aber ein Benutzer von stackoverflow schlug vor, dass dies hierher gehören könnte. Es gibt auch eine kleine Belohnung für stackoverflow, wenn jemand interessiert ist.

Ich versuche, den WinUsb.sys-Treiber zu verwenden, der mit Windows geliefert wird (einschließlich Windows 10 IoT von Raspberry Pi 2). Mit devcon.exe kann ich sehen, dass der USB USB\VID_00E3&PID_6324\5&3753427A&0&4, den ich verwenden möchte, verbunden ist (er heißt ), aber ich weiß nicht, wie ich den WinUsb.sys-Treiber zwingen kann.

Ich habe einige Anweisungen auf microsoft.com gefunden, aber das scheint für eine Standard-Windows-Installation zu sein, in der Sie den Geräte-Manager zur Verfügung haben (den ich nicht für IoT habe). Das INF-Dateibeispiel auf dieser Seite bezieht sich auch auf eine CAT-Datei. Ich gehe davon aus, dass dies eine Art Treibersignatur ist, und ich weiß nicht, wie ich diese generieren soll (oder ob ich das überhaupt tun muss). Es gibt auch einen Verweis auf Windows NT ( Signature = "$Windows NT$"), und ich weiß nicht, ob dies für IoT geändert werden muss oder nicht (oder ob irgendetwas anderes für IoT geändert werden muss).

Wie kann ich also mit devcon.exe und einer Art INF-Datei WinUsb.sys als Treiber für das angeschlossene USB-Gerät von Windows IoT verwenden?

1
Sie verstehen, dass Sie die INF-Datei selbst schreiben müssen, oder? Ramhound vor 8 Jahren 0
[Ich kann das Tutorial nicht anzeigen, aber das sollte helfen] (https://ms-iot.github.io/content/en-US/win10/samples/DriverLab.htm). [This] (https://ms-iot.github.io/content/en-US/win10/samples/DriverLab3.htm) Ich weiß, es wird helfen. Ramhound vor 8 Jahren 0
Ja, ich weiß, dass ich eine INF-Datei benötige, aber ich weiß nicht, was sie für IoT enthalten muss, da das von mir verknüpfte Beispiel für normales Windows ist. Das Tutorial, mit dem Sie verlinkt haben, besteht darin, einen Treiber für GPIO-Geräte und nicht für USB-Geräte zu erstellen. GTHvidsten vor 8 Jahren 0
Die Anweisungen sind identisch, sobald Sie die .INF-Datei haben. Wenn Sie das Beispiel erstellen und dem Lernprogramm folgen, erhalten Sie einen Startort oder Ihre .INF-Datei. Wir können diese Informationen nicht angeben (wir wissen nichts über das Gerät), es sei denn, es handelt sich um ein USB-Gerät. Ramhound vor 8 Jahren 0
Das Wissen über das USB-Gerät ist jedoch nicht die Schönheit des WinUsb-Treibers. Sie benötigen nur die PID + VID des Geräts, und wenn der WinUsb-Treiber für die Hardware angeschlossen ist, haben Sie alles, was Sie zur Kommunikation benötigen, ohne dass Sie wissen müssen, um welche Art von Gerät es sich handelt USB Gerät. Ich werde jedoch das Tutorial, mit dem Sie verlinkt haben, genauer betrachten und prüfen, ob die INF-Datei in diesem Projekt mir weiterhelfen kann. GTHvidsten vor 8 Jahren 0
Während diese spezifische Tatsache mich anspielte. Der Punkt des Kommentars war, dass wir nicht in der Lage sind, die .INF-Datei für Sie zu generieren. Sie scheinen auch verwirrt zu sein, wie man ein Gerät dazu zwingt, einen Treiber zu verwenden. Dies war der Sinn des Tutorials. Es enthält insbesondere einen Abschnitt, in dem dies beschrieben wird. Diese Frage ist schwer zu beantworten, da es sich wahrscheinlich um die erste Windows 10-IOT-Frage handelt, die ich hier persönlich gesehen habe. Ramhound vor 8 Jahren 0
Ich hatte gehofft, dass es jemanden geben würde, der mir eine Beispieldatei zur Verfügung stellen könnte, die unter Windows 10 IoT funktioniert, aber ich kann verstehen, dass es schwierig sein kann, konkrete Beispiele zu nennen. Ich weiß, dass Windows 10 IoT relativ neu ist, aber ich hätte nicht gedacht, dass ich zuerst Fragen dazu stellen würde. Jemand muss der erste sein, richtig? ;) GTHvidsten vor 8 Jahren 0
Ich schlage vor, Sie kommen in einen Chat, um dies zu besprechen. Ich werde die Frage stellen, ob diese Frage hier sein sollte oder [Raspberry Pi SE] (http://raspberrypi.stackexchange.com/). Natürlich haben wir Windows RT-Fragen zugelassen, und es gibt nur einen kleinen Unterschied zwischen Ihrem `Raspberry Pi 2` und diesen Geräten. Ich werde in ein paar Minuten einen Moderator im Chat anpingen, ein Meta erstellen, ect. Ramhound vor 8 Jahren 0
Lassen Sie uns [diese Diskussion im Chat fortsetzen] (http://chat.stackexchange.com/rooms/30834/discussion-between-gthvidsten-and-ramhound). GTHvidsten vor 8 Jahren 0

1 Antwort auf die Frage

3
GTHvidsten

Nach langem Ausprobieren habe ich es endlich geschafft. Hier ist eine vollständige INF-Datei für zukünftige Referenz:


; 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 

Ersetzen Sie die Hersteller-ID (VID) und die Produkt-ID (PID) in [Standard.NTarm] durch die entsprechende VID und PID des hinzugefügten USB. Ersetzen Sie schließlich den ManufacturerName und DeviceName unten mit den richtigen Informationen für Ihr Gerät.

Legen Sie diese Datei irgendwo auf dem Raspberry Pi 2 ab, entweder mit SMB oder FTP.

SSH oder PowerShell auf das Raspberry Pi 2 und wechseln Sie in den Ordner, in dem Sie die INF-Datei ablegen. Führen Sie den folgenden Befehl aus:devcon dp_add .\<name of your INF file>

Sie sollten folgendes Ergebnis sehen: Driver package 'oem0.inf' added.

Starten Sie schließlich das RP2 neu ( shutdown -r -t 0von SSH / PowerShell).

Wenn das RP2 wieder verfügbar ist, sollte Ihr Gerät in der Standard-Start-App unter "Angeschlossene Geräte" aufgeführt sein, und Sie sollten jetzt die Möglichkeit haben, die Funktionalität von Windows.Devices.Usbfür die Kommunikation mit dem USB-Gerät zu verwenden.