Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Persistenz der Treiberzuordnung unter Windows 7 (https://www.delphipraxis.net/175403-persistenz-der-treiberzuordnung-unter-windows-7-a.html)

Romiox 19. Jun 2013 07:53


Persistenz der Treiberzuordnung unter Windows 7
 
Guten Morgen zusammen!

Ich habe ein Problem mit Treibern unter Windows 7. Folgende Situation: Ich habe einen Rechner mit mehreren Netzwerkkarten. Standardmäßig lädt Windows 7 für alle Karten die Treiber des Herstellers. Zwei dieser Karten müssen allerdings einen andere Treiber laden. Das kann man über den Gerätemanager einstellen, das ist soweit kein Problem. Mein Problem ist, dass diese Treiberkonfiguration erhalten bleiben muss, wenn ich die Festplatte in ein anderes System mit identischer Hardware stecke. Im Moment sieht es so aus, dass Windows 7 dann wieder von vorne die Treiber evaluiert, und in der Prioritätenliste steht nun mal der Herstellertreiber weiter oben. Unter Windows XP ergibt sich dieses Problem nicht.
Kann ich also entweder Windows 7 dieses Verhalten abgewöhnen oder die Konfiguration selbst speichern und mit einem simplen Programm (am liebsten in der .NET runtime) wieder herstellen (ohne das man immer nach dem umstecken der Platte im Gerätemanager rumfummeln muss)?
Das ist eine Ebene von Windows die ich noch nie erkundet habe, ich bin für jeden Tipp dankbar, der mir einen Ansatz liefert (die Google-Recherche war ernüchternd. Lediglich die Prioritäten von Windows 7 beim laden von Treibern habe ich gefunden).

Beste Grüße,
Janis

jaenicke 19. Jun 2013 08:28

AW: Persitenz der Treiberzuordnung unter Windows 7
 
Was passiert denn, wenn du den Treiber schlicht über den Gerätemanager deinstallierst? Dann ist ja nur noch der andere vorhanden...

Du kannst in den Treiberdetails im Gerätemanager auch in der Eigenschaft INF-Name den Namen der Treiberkonfigurationsdatei nachschauen (die liegt irgendwo unter c:\windows\system32\driverstore) und dort die Treiberinformationen für diese Karte löschen.

In beiden Fällen sollte der unerwünschte Treiber nicht mehr gefunden und der andere installierte verwendet werden.

Der schöne Günther 19. Jun 2013 09:19

AW: Persitenz der Treiberzuordnung unter Windows 7
 
Vielleicht ist der Originaltreiber ja nicht unerwünscht? Es sind ja mehrere Karten, vielleicht sind es ja sogar die gleichen und mindestens eine benötigt eben den Referenztreiber...

Romiox 19. Jun 2013 10:40

AW: Persitenz der Treiberzuordnung unter Windows 7
 
Richtig, ein Teil der Karten läuft mit dem Originaltreiber, lediglich zwei müssen umgestellt werden.

jaenicke 19. Jun 2013 10:55

AW: Persitenz der Treiberzuordnung unter Windows 7
 
Dann wird das schwierig... mit Bordmitteln wird das kaum gehen.

Vielleicht kann dir Driver Genius dabei helfen die nach dem Umstecken wiederherzustellen... einen solchen Fall hatte ich noch nicht, deshalb weiß ich es nicht genau...

Romiox 19. Jun 2013 11:24

AW: Persitenz der Treiberzuordnung unter Windows 7
 
Hast Du denn eine Idee wie man da programmatisch rankommt? Mir sind auf Codeproject Libs über den Weg gelaufen, die mir immerhin das Auslesen von einigen Informationen über die Hardware erlauben und Geräte einzeln an- und abschalten können. Was mir vorschwebt ist eine Möglichkeit, Windows dazu anzustiften, eine Karte mit einem bestimmten Treiber zu laden. Damit könnte ich immerhin den Prozess automatisieren, wenn schon Windows sich nicht davon abbringen lässt, mir immer die eigene Treiberauswahl aufzudrücken.

Alternativ lädt natürlich die Möglichkeit, einzelne Karten zu enablen/disablen, zum fummeln ein (alá: Ausmachen, falsche inf-Datei verstecken, anmachen, inf-Datei wieder sichtbar machen), aber das kanns ja nicht sein (Ob das funktionieren würde steht sowieso auf einem ganz anderen Blatt, meine Erfahrungen mit solchen Dingen ist ziemlich genau 0). Wenns dies nun aber sein soll, dann werde ich das mal probieren.

Romiox 21. Jun 2013 10:58

AW: Persistenz der Treiberzuordnung unter Windows 7
 
[Update:]

Mit dem DevCon Tool von Microsoft kann man die Funktionen des Gerätemanagers von der Command Line nutzen (und, noch besser, der Source Code liegt offen). Allerdings hab ich mit der Nutzung noch so meine Probleme, vorallem folgendes: Wie kann ich eindeutig (und lediglich mit den mir von DevCon zur Verfügung gestellten Informationen) ein Stück Hardware identifizieren, dass an dem PC hängt? Da die fragliche Karte mehrfach im System hängt, schieße ich mir mit der Identifikation über die Device ID alle Karten ins Nirvana, wenn ich sie deaktivieren will. Eine Möglichkeit scheint mir zu sein, die Karte über das Tripel [Busnumber, Devicenumber, Functionnumber] zu identifizieren, aber während ich über die MS SetupAPI (Die auch DevCon meines Wissens nach nutzt) an diese Infos komme (Zumindest an die Busnummer, die praktisch eigentlich ausreichen sollte), sehe ich nicht wie ich über DevCon die Karte eindeutig identifizieren kann, vorallem beim abschicken von Befehlen (im Windows Gerätemanager en- oder disabled man ja auch nur die Karte aus deren Kontextmenü heraus man agiert).

Gruß,


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz