DevCon & MFC install an Driver
-
Hallo,
DevCon ist Bestandteil aller WDK's seit XP und ermöglicht alle Funktionen
des DeviceManagers automatisch auzulösen.Ich möchte eine einzelne *.inf installieren die bereits manuell über den DeviceManger einen WinUSB Treiber erfolgreich installiert.
Wenn ich nur die Vendor und ProductId angebe fehlt dem DevCon die
Treiber Id genannt DeviceGUID die steht zwar in der *inf wird wohl aber nicht von DevCon verwendet, sondern muss mit der Kommandozeile übertragen werden:devcon install Y:\Common\Binary\KeyManDriver\keyman.inf USB\VID_16C0^&PID_05DF
Funktioniert insofern, das das Gerät am rechten Platz erscheint aber nicht gestartet werden kann(soweit die Fehlermeldung).
Frage: Wie kann ich meine DeviceGUID nun noch mit dem Pid & Vid so verbinden, das die Kommandozeile für DevCon verständlich ist, und DevCon die DeviceGUID verwendet ?
DeviceGuid die nicht in der Kommandozeile vorkommt mangels Verständnis: {EEBE3F79-3A2A-4304-9791-EBF0E998E93F}
Danke für Hinweise , dies ist eines der kompliziertesten Parameter Schleudern in der Console.
Gruß
KarstenNachtrag:
Nach einigen Versuchen :devcon install Y:\Common\Binary\KeyManDriver\keyman.inf USB\VID_16C0^&PID_05DF /Id {EEBE3F79-3A2A-4304-9791-EBF0E998E93F}
Wird der Treiber zwei mal installiert einer geht einer geht nicht, amüsiert..
Was läuft falsch ^^ ?
Gruß
K
-
Du sollst
DevCon update
verwenden, nichtDevCon install
.
DevCon install
ist nur für Non-Plug-N-Play Geräte.Achromat schrieb:
Was läuft falsch ^^ ?
Frag ich mich auch langsam. Ich hab' dir doch explizit geschrieben dass du
DevCon update
verwenden sollst, und nu kommst du an und fragst warumDevCon install
nicht funktioniert und wunderst dich.
Tjoah. Kann man sich auch nur wundern.
-
Das hat gewirkt.
devcon.exe update keyman.inf USB\VID_16C0^&PID_05DF /[EEBE3F79-3A2A-4304-9791-EBF0E998E93F]
Hier wieder der letzte Parameter das DeviceGUID....
Das devocon gibt es für x86,amd64 und i64
Ich denke die x86 Version bezüglich WinUsb läuft auf allen Systemen.
Oder ist es besser den Unterschied zu wahren indem man ein Batchfile herstellt
@echo off if "%PROCESSOR_ARCHITECTURE%" == "x86" ( start "driver setup x86" "%~dp0\dpinst32.exe" ) else ( start "driver setup x64" "%~dp0\dpinst64.exe" )
Allerdings wird so nicht der Unterschied zwischen i64 und amd64 erfasst.
Ich glaube nicht das man das benötigt ?Übrigens Signierung/Catalog wird nicht benötigt...
Danke der Hinweise,
alles ist sehr gut geworden...
Gruß KarstenPs. ist ja ein komplettes turtorial geworden ^^
-
Ich denke Itanium kannst du getrost ignorieren.
Bist du sicher dass du den Parameter
/[EEBE3F79-3A2A-4304-9791-EBF0E998E93F]
brauchst? Glaube nicht dass der irgendwas macht. Ich hab da nie mehr als Hardware-ID und .inf File angegeben, und in der Doku findet man auch nicht mehr.
-
Hi,
also jetzt ohne install mit update klappt das ohne diese ID, toll.
devcon.exe rescan devcon.exe update keyman.inf USB\VID_16C0^&PID_05DF
Vorher sollte man ein rescan auslösen, sonnst passiert nichts wenn man
etwas verändert hat im DevManger.Ok Danke, dann werde ich eine x86 und eine AMD64 Version über Batchfile
integrieren.Der Atiny85 ist nun eine Lebensform....
Gruß
Karsten
-
Naja, war ne schwere Geburt, aber freut mich dass ich dir - trotz meiner begrenzten und lange zurückliegenden Erfahrung - doch zumindest soweit helfen habe können dass du dir dann weiter selbst helfen konntest
-
Ja das ist korrekt,
ich konnte nun auch die *inf selbst auf einige wenige Zeilen
reduzieren, es wurde versucht den Treiber ohne Part im Slot
zu installieren, das dann mit "install" leider klappte dies
nicht. Man muss auch nach jeder Änderung den Dev.Manager rescannen.
Es gibt viele Möglichkeiten des ScheiternsWitzig auch wenn man mehrere baugleiche einsteckt, habe 38 stück
Es wird der erste verwendet..Der ganze Part hat jetzt ein Jahr gedauert, auch Atiny85 seitig.
"MicroDevices" werden in Zukunft wahnwitzige Rechenleistungen auftischen...
Danke für deine Hinweise.
Grüße und Erfolg
Karsten
-
Devcon...
´
Nach der Zerlegung von Devcon, war es möglich den Vorgang der Geräte-Installation, in die eigene DLL zu integrieren, die den Treiber öffnet, somit
ist eine dynamische Autoinstallation möglich nur über eine minimale *.inf Datei
bezüglich des Universal WinUSB.(Sehr interessant.. getestet unter xp.sp3 und w10)
Ob das so auch unter W64 funktioniert ?
Pseudo Code:
typedef BOOL(WINAPI *UpdateDriverForPlugAndPlayDevicesProto)(__in HWND hwndParent, __in LPCTSTR HardwareId, __in LPCTSTR FullInfPath, __in DWORD InstallFlags, __out_opt PBOOL bRebootRequired); UpdateDriverForPlugAndPlayDevicesProto UpdateFn; HMODULE newdevMod = LoadLibrary(TEXT("newdev.dll")); UpdateFn = (UpdateDriverForPlugAndPlayDevicesProto)GetProcAddress(newdevMod, "UpdateDriverForPlugAndPlayDevicesA"); if (!UpdateFn) return; int reboot(0); if (!UpdateFn(0, "USB\\VID_16C0&PID_05DF", "Y:\\Common\\Binary\\KeyManDriver\\KeyMan.inf", TRUE, &reboot)) { int n = 0; } if (newdevMod) FreeLibrary(newdevMod), newdevMod = 0;