Installieren Sie einen Treiber mit devcon.exe

1818
hedgar2017

Ich habe einen HID-Treiber für mehrere Geräte entwickelt, der aus zwei Geräten besteht: einem virtuellen Maustreiber und einem Proxy dafür.

Der Proxy ist für die Annahme von Ausgabeberichten von Clients erforderlich, da Mäuse ausschließlich vom Windows-Kernel geöffnet werden.

Dies ist mein Berichtsdeskriptor:

HID_REPORT_DESCRIPTOR g_reportDescriptor[] = { 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x02, // USAGE (Mouse) 0xA1, 0x01, // COLLECTION (Application) 0x85, REPORT_ID_MOUSE_INPUT, 0x09, 0x01, // USAGE_PAGE (Pointer) 0xA1, 0x00, // COLLECTION (Physical) 0x05, 0x09, // USAGE_PAGE (Buttons) 0x19, 0x01, // USAGE_MINIMUM (1) 0x29, 0x03, // USAGE_MAXIMUM (3) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x95, 0x03, // REPORT_COUNT (3) 0x75, 0x01, // REPORT_SIZE (1) 0x81, 0x02, // INPUT (Data, Variable, Absolute) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x05, // REPORT_SIZE (5) 0x81, 0x01, // INPUT (Constant) 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x30, // USAGE (X) 0x09, 0x31, // USAGE (Y) 0x15, 0x81, // LOGICAL_MINIMUM (-127) 0x25, 0x7F, // LOGICAL_MAXIMUM (127) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x02, // REPORT_COUNT (2) 0x81, 0x06, // Input (Data, Variable, Relative) 0xC0, // END_COLLECTION 0xC0, // END_COLLECTION(8)  0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x00, // USAGE (Undefined) 0xa1, 0x01, // COLLECTION (Application) 0x85, REPORT_ID_MOUSE_OUTPUT, 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) 0x95, 0x0b, // REPORT_COUNT (11) 0x75, 0x08, // REPORT_SIZE (8) 0x09, 0x00, // USAGE (Undefined) 0x91, 0x02, // OUTPUT (Data, Variable, Absolute) 0xc0 // END_COLLECTION }; 

Ich habe Probleme bei der Installation meines Treibers mit devcon.exe.

Es versagt immer, egal was ich tue. Ich habe seit *.infEwigkeit mit meiner Akte gespielt und weiß nicht, was ich als nächstes tun soll. So laufe ich devcon.exe:

.\devcon.exe install .\hidriver.inf "ROOT\UNKNOWN\0000" 

Ausgabe:

Device node created. Install is complete when drivers are installed... Updating drivers for ROOT\UNKNOWN\0000 from D:\share\opt\KMDFDriver\hidriver.inf. devcon.exe failed. 

Als Ergebnis der Operation wird ein neues Gerät Unknown deviceohne Kinder erstellt.

Wenn ich meinen Treiber von installiert habe Device Manager -> Add Legacy Hardware, ist alles in Ordnung und ein neues SampleClass-Gerät mit zwei untergeordneten Elementen (eine generische Maus und ein HID-kompatibles Gerät) wird erstellt. Ich glaube nicht, dass meiner *.infDatei etwas fehlt.

Hier ist meine *.infDatei:

[Version] Signature="$WINDOWS NT$" Class=%ClassName% ClassGuid= Provider=%ProviderName% CatalogFile=hidriver.cat DriverVer=01/07/2018  [ClassInstall32] Addreg=ClassReg [ClassReg] HKR,,,0,%ClassName% HKR,,Icon,,-24  [SourceDisksNames] 1=%DiskName%,,, [SourceDisksFiles] hidriver.sys=1 [DestinationDirs] DefaultDestDir=12  [Manufacturer] %ManufacturerName%=Microsoft,NT$ARCH$.6.1 [Microsoft.NT$ARCH$.6.1] %DeviceName%=DefaultInstall,root\hidriver  [DefaultInstall.NT] CopyFiles=Files [Files] hidriver.sys  [DefaultInstall.NT.HW] AddReg=HWAddReg [HWAddReg] HKR,,"LowerFilters",0x00010008,"hidriver"  [DefaultInstall.NT.Services] AddService=hidriver,0x00000000,hidriverService AddService=mshidkmdf,0x00000002,mshidkmdfService [hidriverService] DisplayName=%ServiceName% ServiceType=1 StartType=3 ErrorControl=1 ServiceBinary=%12%\hidriver.sys [mshidkmdfService] ServiceType=1 StartType=3 ErrorControl=1 ServiceBinary=%12%\mshidkmdf.sys  [DefaultInstall.NT.Wdf] KmdfService=hidriver,KmdfLibrary [KmdfLibrary] KmdfLibraryVersion=$KMDFVERSION$  [Strings] DeviceName="VARIABLE_1" DiskName="VARIABLE_2" ProviderName="VARIABLE_3" ManufacturerName="VARIABLE_4" ServiceName="VARIABLE_5" ClassName="VARIABLE_6" 

Ich habe auch versucht, die Device managerAktivitäten mit einzufangen Process Monitor, aber es macht einige magische Aktionen mit DrvInst.exeeinem Dutzend temporärer Dateien, daher glaube ich nicht, dass dies der richtige Weg ist.

Was soll ich tun, Jungs?

[Update am nächsten Tag]

Ich habe auch versucht pnputil.exe:

pnputil.exe /add-driver D:\share\opt\KMDFDriver\hidriver.inf /install

Microsoft PnP Utility  Adding driver package: hidriver.inf Driver package added successfully. Published Name: oem40.inf Driver package installed on matching devices.  Total driver packages: 1 Added driver packages: 1 

Trotz der süßen Leistung hat es keine Wirkung.

[Update nach der ersten Antwort]

devcon.exe install hidriver.inf root\hidriverfunktioniert auf win10 und win8.1, hat aber ein kleines Problem mit win7. Bei win7 werden untergeordnete Geräteklassen nicht automatisch erkannt, daher bekomme ich zwei untergeordnete unbekannte Geräte.

Obwohl mein HID-Proxy Berichte als unbekanntes Gerät akzeptieren kann, funktioniert die Maus nicht. Um dies zu beheben, muss ich den Treiber für das Mauskind manuell über einstellen

Update driver -> Browse for driver software on this computer -> Let me pick from a list of device drivers on this computer -> Mice and pointing devices -> Microsoft -> HID-compliant mouse 

Gibt es eine robuste Möglichkeit, solche Anweisungen zur INF-Datei hinzuzufügen, um sie automatisch zu machen?

[Update nach einiger Zeit] Ich habe die Device managerAktivität von erfasst procmonund habe ein DrvInst.exe:

DrvInst.exe "2" "211" "HID\VARIABLE_6&COL01\1&1302B6B5&12&0000" "C:\Windows\INF\msmouse.inf" "msmouse.inf:MSMfg.NTamd64:HID_Mouse_Inst:6.1.7600.16385::hid_device_system_mouse" "6fe2f36b3" "0000000000000060" "00000000000005F8" "00000000000005F0" 

Ich werde die Ergebnisse des Experiments nach einer Weile berichten.

[Geräte-Screenshot]

No HWID here, only the device instance path

[Update mit setupapi.dev.log]

Ich habe den Treiber vollständig entfernt, dann das Protokoll entfernt, den Treiber installiert und den gesamten Protokollinhalt kopiert.

setupapi.dev.log

3
Sie hätten besseren Support von [OSR Online] (http://www.osronline.com/page.cfm?name=ListServer) (NTDEV-Liste). guest-vm vor 5 Jahren 1
Danke, ich werde auch dort posten. hedgar2017 vor 5 Jahren 0
Könnten Sie die Nachrichten für Ihre Installation von `% windir% \ inf \ setupapi.dev.log` posten? harrymc vor 5 Jahren 0
Yeap, geschrieben am Pastebin. Link ist oben. hedgar2017 vor 5 Jahren 0

2 Antworten auf die Frage

1
guest-vm

*.infhat kein Ziel für ROOT\UNKNOWN\0000, verwendendevcon install hidriver.inf root\hidriver


Auf VirtualBox 5.2.8 + Win7 Pro SP1 x64 habe ich EcoTUIODriver (basierend auf vmulti ) installiert, und das Setup war ohne jedes unbekannte Gerät erfolgreich. Ich habe vmulti mit WDK 7.1.0 (ohne Visual Studio) weiterentwickelt und auch das Setup ist erfolgreich abgeschlossen. Ich empfehle Ihnen, Ihre Build- und Testumgebung zu überprüfen.

Geräte nach Verbindung anzeigen:

Es tut mir leid, dass ich kein Entwickler bin. Ich habe auf Basis der Erfahrung mit dem inf-modded Treiberinstallationsprogramm geantwortet. Überprüfen Sie diesen HID-Treiber auf [github] (https://github.com/djpnewton/vmulti) auf Starter (das Inf scheint vmulti / sys / vmulti.inx zu sein). guest-vm vor 5 Jahren 1
OP hatte [Probleme] (https://social.msdn.microsoft.com/Forums/en-US/179420f2-96fe-43d3-9f62-7c4b14215335/windows-virtual-mouse-driver?forum=wdk) Treiber mit WDK10 zu bauen für Win7. HID-aufgezeichnete untergeordnete Geräte haben keine HwID und die Installation ist fehlgeschlagen. guest-vm vor 5 Jahren 0
1
harrymc

Verschiedene Teile Ihrer inf-Datei scheinen etwas zweifelhaft zu sein, aber ich weiß nicht genug, um eine Korrektur vorzuschlagen. Es gibt jedoch möglicherweise eine andere Möglichkeit, aus Ihrem Projekt eine funktionsfähige inf-Datei zu erstellen.

Ich würde vorschlagen, Visual Studio 2017 zu verwenden ( ggf. Testversion) und dann die inf-Datei aus Ihrer Lösung zu erstellen, wie im Microsoft-Artikel Erstellen eines Treiberpakets beschrieben . Das Windows Driver Kit (WDK) muss nach der Installation von Visual Studio installiert werden.

Wenn Sie über zwei solche Pakete verfügen, die Sie als eins installieren müssen, können Sie sie wie in Verwenden einer Erweiterungs-INF-Datei beschrieben kombinieren .

Ich verwende genau MVS2017 Community und WDK 10. Ich denke, die INF-Dateigeneration ist in der Community Edition nicht verfügbar. Wie auch immer, danke für deinen Hinweis, ich werde mich darum kümmern. Ich weiß, das Problem liegt bei der INF, aber ich weiß auch nicht, wie ich es beheben kann. hedgar2017 vor 5 Jahren 0