Wie Windows .inf-Dateien verwendet, um die richtigen Treiber zu laden

4276
RJSmith92

Was passiert, wenn ein Hardwaregerät mit zwei oder mehr inf-Dateien übereinstimmt, wenn Windows die Treiber für diese Geräte lädt?

Für das Festplattenlaufwerk in meinem PC sind beispielsweise zwei Treiber geladen: cdrom.sys und iaStorF.sys. cdrom.sys wurde aus der Datei cdrom.inf geladen, und iaStorF.sys wurde aus der von Intel installierten Datei oem2.inf geladen.

Sucht Windows alle inf-Dateien und lädt alles, was passt?

Wenn ja, was ist die 'primäre INF-Datei', was ich damit im Geräte-Manager meine, wenn ich auf das Festplattenlaufwerk klicke und zur Registerkarte 'Details' gehe und dann den inf-Namen anschaue, wird sogar die Datei cdrom.inf angezeigt obwohl es auch mit oem2.inf übereinstimmte.

Wenn ich dann auf meinen Monitor schaue, der auch zwei Treiber dafür hat, wird er aus zwei inf-Dateien geladen, oem22.inf und monitor.inf. Unter 'Details' und inf-Name wird oem22.inf angezeigt.

Warum hat es sich für oem22.inf über monitor.inf entschieden?

4
Normalerweise lädt es die neueste Version des Treibers. Moab vor 8 Jahren 0
[Einige Hausaufgaben] (https://msdn.microsoft.com/de-de/library/windows/hardware/ff549520 (v = vs.85) .aspx) Moab vor 8 Jahren 0
Vielen Dank @Moab, ich hatte vor dem Posten der Frage alle durchgesehen und konnte keine Antwort finden. Die Datumssache scheint nicht zu stimmen, da sie bei dem Festplattenlaufwerk die Datei cdrom.inf verwendet, die 2006 über die Intel-Datei von 2010 sagt. RJSmith92 vor 8 Jahren 0
Es ist wahrscheinlich eine Balance zwischen bester Passform und der neuesten Version. Da Windows geschlossener Quellcode ist, wissen wir möglicherweise nie. Moab vor 8 Jahren 0

2 Antworten auf die Frage

3
harrymc

Einige Informationen finden Sie in diesem alten Microsoft-Artikel (XP-Zeit).
Wie Windows den geeignetsten Gerätetreiber ermittelt, der während des Setups installiert werden soll :

Wenn Sie Windows Setup ausführen, verfügen Sie möglicherweise über mehr als einen Satz von Gerätetreibern oder INF-Dateien, die mit einem bestimmten Gerät funktionieren. Sowohl Setup als auch Plug & Play versuchen, diese Konflikte zu lösen, indem sie den Gerätetreiber auswählen, der für das zu installierende Gerät am besten geeignet ist.

Plug & Play kann alle INF-Dateien nach dem am besten geeigneten Gerätetreiber für ein bestimmtes Gerät durchsuchen. Plug & Play stoppt die Suche nicht beim ersten Treffer, den Plug & Play findet. Plug & Play durchsucht weiterhin alle INF-Dateien, die im Suchpfad von Plug & Play aufgeführt sind, wie im folgenden Registrierungseintrag definiert:

HKEY-LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion 

DevicePath: Reg_Expand_SZ:% Systemroot% \ Inf

Das Setup erstellt eine Liste kompatibler Gerätetreiber, die eine Entsprechung in einer INF-Datei enthielten, und weist jedem gefundenen einen "Rang" zu. Der Rang kann von "0" bis "0xFFFF" reichen, wobei 0 die am besten geeignete Übereinstimmung ist und 0xFFFF die schlechteste mögliche Übereinstimmung. Der Gerätetreiber mit dem niedrigsten Rang wird als das am besten geeignete Spiel betrachtet und ist der installierte Gerätetreiber.

Wenn jedoch zwei Gerätetreiber denselben niedrigsten Rang aufweisen, verwendet Setup den Gerätetreiber mit dem neuesten Datum. Wenn einer der Gerätetreiber signiert ist und der andere Gerätetreiber unsigniert ist, wird dem Datum des vorzeichenlosen Gerätetreibers der Wert 0xFFFFFFFF zugewiesen, und der signierte Gerätetreiber wird ausgewählt und installiert.

Es ist zu beachten, dass eine 64-Bit-Windows-Version standardmäßig keine nicht signierten Treiber als Kandidaten akzeptiert. Dies ist nur in 32-Bit-Windows möglich.

Der folgende Artikel enthält den neuesten Algorithmus: Wie Windows die Treiber bewertet

Windows ordnet einem Treiber einen Rang zu, der einem Gerät entspricht. Der Rang gibt an, wie gut der Fahrer mit dem Gerät übereinstimmt. Ein Fahrerrang wird durch eine ganze Zahl dargestellt, die gleich oder größer als Null ist. Je niedriger der Rang, desto besser passt der Fahrer zum Gerät.

Der Rang eines Treibers ist ein zusammengesetzter Wert, der davon abhängt, wie ein Fahrer signiert ist, welche Funktionen vom Treiber unterstützt werden, und von der Art der Übereinstimmung zwischen den Geräteidentifikationszeichenfolgen, die von einem Gerät gemeldet werden, und den Geräteidentifizierungszeichenfolgen angegeben in den Einträgen eines INF-Models-Abschnitts einer Treiber-INF-Datei.

Ein Rang wird durch einen Wert vom Typ DWORD dargestellt. Ein Rang ist die Summe einer Signaturbewertung, einer Merkmalsbewertung und einer Bezeichnerbewertung. Ein Rang wird als 0xSSGGTHHH formatiert, wobei S, G, T und H Vier-Bit-Felder sind und die Felder SS, GG und THHH die drei Ranglistenwerte wie folgt darstellen:

  • Bei der Signaturbewertung wird der Fahrer danach bewertet, wie ein Fahrer signiert ist. Die Signaturbewertung hängt nur vom Wert des SS-Felds ab. Eine nicht spezifizierte Signaturbewertung wird als 0xSS0000000 dargestellt.

Einen Überblick darüber, wie Windows Vista und spätere Versionen von Windows die Treibersignatur zum Bestimmen der Installation des Treibers verwenden, finden Sie unter Signaturkategorien und Treiberinstallation .

Grundsätzlich werden digitale Signaturen von einer Windows-Signaturbehörde am höchsten bewertet.

  • Bei der Feature-Bewertung wird ein Treiber basierend auf den vom Treiber unterstützten Features bewertet. Die Feature-Bewertung hängt nur vom Wert des GG-Felds ab. Eine nicht spezifizierte Merkmalsbewertung wird als 0x00GG0000 dargestellt.

Diese Informationen werden in der INF-Datei angegeben, sodass ein Hersteller seine eigenen Treiber bestellen kann.

  • Die Bezeichnerbewertung bewertet einen Treiber basierend auf dem Typ der Übereinstimmung zwischen einer Geräteidentifizierungszeichenfolge, die von einem Gerät gemeldet wird, und einer Geräteidentifizierungszeichenfolge, die in einem Eintrag eines INF-Models-Abschnitts einer Treiber-INF-Datei aufgeführt ist. Die Bezeichnerbewertung hängt nur vom Wert des THHH-Felds ab. Ein nicht angegebener Bezeichnerwert wird als 0x0000THHH dargestellt.

Dieser Text ist ziemlich verwirrt und verwirrend. Siehe den Link für eine viel bessere Beschreibung der Bezeichnerbewertung.

Vielen Dank, ich glaube, ich habe den Grund gefunden, den ich unter Chris 'Antwort erläutert habe. Nochmals vielen Dank, dass Sie sich die Zeit genommen haben, nach all den Informationen zu suchen, die dazu beigetragen haben, die Lösung zu finden. RJSmith92 vor 8 Jahren 0
2
Chris.C

Es ist eigentlich ein Hauptfahrer. Der andere, den Sie sehen, ist ein Filtertreiber - iaStorF.sys, wobei F Filter bedeutet.

Ein Filtertreiber ist ein Microsoft Windows-Treiber, der die Funktion von Peripheriegeräten erweitert oder ändert oder ein spezielles Gerät im Personal Computer unterstützt. Es ist ein Treiber oder Programm oder Modul, das in den vorhandenen Treiberstack eingefügt wird, um eine bestimmte Funktion auszuführen. ( Wikipedia )

Hier ist ein Screenshot meines Systems, für Festplattenlaufwerke

HKLM\System\CurrentControlSet\Control\Class\

Der Haupttreiber ist disk.sys, die anderen 3 sind alle Filtertreiber, EhStoreClass.sys und partmgr.sys sind Standard-MS-Treiber in Windows 8, edevmon.sys stammt von eset.

Für Monitore ist das zusätzliche inf optional, um die Kapazität zu erweitern, z. B. Farbprofil (.icm) oder EDID-Informationen. Diese inf sind nicht für den Betrieb des Monitors erforderlich. Es ist nur monitor.sys erforderlich. ( MSDN )


Weitere Informationen zum Filtertreiber, ich werde ihn hier nur zur späteren Verwendung reproduzieren. ( MSDN )

Filtertreiber sind optionale Treiber, die das Verhalten eines Geräts verbessern oder ändern. Ein Filtertreiber kann ein oder mehrere Geräte warten. Busfilter-Treiber

Busfiltertreiber bieten normalerweise einen Mehrwert für einen Bus und werden von Microsoft oder einem System-OEM bereitgestellt (siehe Abbildung „Mögliche Treiberebenen“). Busfiltertreiber sind optional. Es können beliebig viele Busfiltertreiber für einen Bus vorhanden sein.

Ein Busfiltertreiber könnte beispielsweise proprietäre Erweiterungen der Standard-Bushardware implementieren.

Bei Geräten, die von einem ACPI-BIOS beschrieben werden, fügt der Energiemanager für jedes derartige Gerät einen von Microsoft bereitgestellten ACPI-Filter (Busfiltertreiber) über dem Bustreiber ein. Der ACPI-Filter führt die Stromrichtlinie für Geräte aus und schaltet Geräte ein und aus. Der ACPI-Filter ist für andere Treiber transparent und auf Nicht-ACPI-Computern nicht vorhanden. Untergeordnete Filtertreiber

Untere Filtertreiber ändern normalerweise das Verhalten der Gerätehardware (siehe Abbildung „Mögliche Treiberebenen“). Sie werden normalerweise von IHVs geliefert und sind optional. Es können beliebig viele Filtertreiber auf einer unteren Ebene für ein Gerät vorhanden sein.

Ein untergeordneter Gerätefiltertreiber überwacht und / oder modifiziert E / A-Anforderungen an ein bestimmtes Gerät. Normalerweise definieren solche Filter das Hardwareverhalten neu, um die erwarteten Spezifikationen zu erfüllen.

Ein Filtertreiber für untergeordnete Klassen überwacht und / oder ändert E / A-Anforderungen für eine Klasse von Geräten. Beispielsweise könnte ein Filtertreiber für untergeordnete Klassen für Mausgeräte eine Beschleunigung bereitstellen und eine nichtlineare Umwandlung von Mausbewegungsdaten durchführen. Filtertreiber auf höherer Ebene

Filtertreiber auf höherer Ebene bieten normalerweise Zusatzfunktionen für ein Gerät (siehe Abbildung "Mögliche Treiberebenen"). Solche Treiber werden normalerweise von IHVs bereitgestellt und sind optional. Für ein Gerät können beliebig viele Filtertreiber auf höherer Ebene vorhanden sein.

Ein Gerätefiltertreiber auf höherer Ebene bietet einen Mehrwert für ein bestimmtes Gerät. Beispielsweise könnte ein Gerätefiltertreiber auf höherer Ebene für eine Tastatur zusätzliche Sicherheitsüberprüfungen erzwingen.

Ein Filtertreiber der übergeordneten Klasse bietet einen Mehrwert für alle Geräte einer bestimmten Klasse.

Hallo Chris, danke für die tolle Info. Ich glaube, ich habe es herausgefunden. Bei meinem Monitor stimmt die Klassen-ID mit zwei inf-Dateien überein, und Windows scheint die neuere als Treiber anzuzeigen (obwohl alle .ICM-Dateien und einige Reg-Einstellungen geladen werden, während die ältere inf-Datei von Microsoft tatsächlich monitor.sys lädt ). Meine Verwirrung war, warum der Disk-Tauchgang den älteren Microsoft-Treiber und nicht den neueren Intel-Treiber wie den Monitor anzeigt. Ich weiß jetzt, dass der iaStorF.sys-Treiber aus OEM2.inf geladen wird, wie ich dachte, aber die inf-Datei ist für den ACHI-Controller und enthält einen kleinen Abschnitt, der installiert wird. RJSmith92 vor 8 Jahren 0
..isStorF.sys für die Klassen-ID des Plattenlaufwerks. Nur die Klassen-ID einer inf-Datei stimmt tatsächlich mit dem Festplattenlaufwerk überein. Dies ist das von Microsoft, weshalb es angezeigt wird. Danke noch einmal. RJSmith92 vor 8 Jahren 0