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ß
    Karsten

    Nachtrag:
    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, nicht DevCon 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 warum DevCon 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ß Karsten

    Ps. 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 Scheiterns 🙂

    Witzig 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;
    

Anmelden zum Antworten