Allgemeine Syntaxregeln für INF-Dateien

Eine INF-Datei ist eine Textdatei, die in benannten Abschnitten organisiert ist. Einige Abschnitte verfügen über systemdefinierte Namen, und einige Abschnitte haben Namen, die vom Writer der INF-Datei bestimmt wurden.

Jeder Abschnitt enthält abschnittsspezifische Einträge, die von Geräteinstallationskomponenten interpretiert werden. Einige Einträge beginnen mit einem vordefinierten Schlüsselwort (keyword). Diese Einträge werden als Anweisungen bezeichnet.

Einige INF-Dateieinträge sind grundsätzlich Zeiger von einem Abschnitt zu einem anderen, für einen bestimmten Zweck. Eine INF AddReg-Direktive identifiziert beispielsweise einen Abschnitt, der Einträge enthält, die Windows anweisen, die Registrierung zu ändern. Diese Einträge enthalten manchmal zusätzliche Argumente (erforderlich oder optional), die Windows während der Installation interpretieren soll.

Andere INF-Dateieinträge verweisen nicht auf andere Abschnitte, sondern geben Informationen an, die Windows während der Installation verwendet, z. B. Dateinamen, Registrierungswerte, Hardwarekonfigurationsinformationen, Flags usw. Beispielsweise stellt eine INF DriverVer-Direktive Treiberversionsinformationen bereit.

Wenn Windows mit einer Installation beginnt, sucht es zunächst nach einem Abschnitt "INF-Version" , um die Gültigkeit der INF-Datei zu überprüfen. Anschließend wird die Installation gestartet, indem sie einen InF-Herstellerabschnitt sucht. Dieser Abschnitt enthält Anweisungen zu INF-Modellen Abschnitten, die wiederum Anweisungen bereitstellen, die zu verschiedenen INF DDInstall-Abschnitten führen, basierend auf der Hardware-ID des zu installierenden Geräts.

Die folgenden Syntaxregeln regeln den erforderlichen und optionalen Inhalt von INF-Dateien, das Format der Abschnittsnamen mithilfe von Zeichenfolgentoken sowie das Zeilenformat, die Fortsetzung und kommentare.

Groß-/Kleinschreibung

  • Bei Abschnittsnamen, Einträgen und Anweisungen wird die Groß-/Kleinschreibung nicht beachtet. Beispielsweise sind Version, VERSION und Version gleichermaßen gültige Abschnittsnamensspezifikationen innerhalb einer INF-Datei.

Erforderliche und optionale Inhalte

  • Der Satz der erforderlichen und optionalen Abschnitte, Einträge und Anweisungen in einer bestimmten INF-Datei hängt vom Typ des zu installierenden Geräts/Treibers oder der zu installierenden Komponente ab.

  • Der Satz von Abschnitten, abschnittsspezifischen Einträgen und Anweisungen, die zum Installieren eines bestimmten Geräts und seiner Treiber erforderlich sind, hängt auch etwas vom entsprechenden Klasseninstallationsprogramm ab, sofern vorhanden. Weitere Informationen dazu, wie die vom System bereitgestellten Klasseninstallationsprogramme gerätetypspezifische INF-Dateien behandeln, finden Sie in der gerätetypspezifischen Dokumentation im WDK.

  • In Syntaxdefinitionen werden optionale Einträge durch nicht geboldte Klammern ([,]) getrennt. Andererseits sind fett formatierte Klammern ([, ]) pflichtige Elemente des Eintrags, in dem sie enthalten sind. Im folgenden Beispiel sind die Klammern um Version erforderlich, während die Klammern um Den Klassennamen der Klasse= angeben, dass dieser Eintrag optional ist.

    [Version]
    
    Signature="signature-name"
    [Class=class-name]
    ...
    

Abschnittsnamen

  • Abschnitte können in beliebiger Reihenfolge angegeben werden. Die meisten INF-Dateien listen Abschnitte in einer bestimmten Reihenfolge nach Konvention auf, aber Windows findet Abschnitte nach Name, nicht nach Speicherort in der INF-Datei.

  • Jeder Abschnitt in einer INF-Datei beginnt mit dem Abschnittsnamen in Klammern ([ ]). Der Abschnittsname kann systemdefiniert oder INF-writer-defined sein.

    Beispielsweise gibt [Manufacturer] den Beginn des Abschnitts "Hersteller" mit dem Systemnamen an, während [Std.Mfg] einen bestimmten inF-writer-defined Models-Abschnittsnamen darstellt.

    Ein Abschnittsname hat eine maximale Länge von 255 Zeichen unter Windows 2000 und höheren Versionen von Windows.

    Jeder Abschnitt endet am Anfang eines neuen [Abschnittsnamens] oder am Ende der Dateimarke.

  • Wenn mehrere Abschnitte in einer INF-Datei denselben Namen haben, führt das System ihre Einträge und Anweisungen zu einem einzelnen Abschnitt zusammen.

  • Sofern er nicht in doppelte Anführungszeichen (") eingeschlossen ist, muss ein in INF-Writer definierter Abschnittsname eine eindeutige Zeichenfolge mit explizit sichtbaren Zeichen sein, wobei bestimmte Zeichen mit INF-spezifischen Bedeutungen ausgeschlossen werden. Insbesondere darf ein nicht notierter Abschnittsname, auf den von einem Abschnittseintrag oder einer -Anweisung verwiesen wird, keine führenden oder nachfolgenden Leerzeichen, ein Zeilenvorschubzeichen, ein Rückgabezeichen oder ein unsichtbares Steuerzeichen aufweisen und darf keine Registerkarten enthalten. Darüber hinaus kann er keines der Klammerzeichen ([ ]), ein einzelnes Prozentzeichen (%), ein Semikolon (;) oder keine internen doppelten Anführungszeichen (") enthalten, und es kann keinen umgekehrten Schrägstrich (\) als letztes Zeichen haben.

    Std.Mfg und Std_Mfg sind beispielsweise eindeutige und gültige Abschnittsnamen, wenn von einem INF-Dateieintrag oder einer Anweisung verwiesen wird, aber Std; Mfg (mit internem Semikolon) ist ungültig, es sei denn, es wird von doppelten Anführungszeichen (") eingeschlossen.

    Die Angabe eines inF-Writer definierten Abschnittsnamens als "Anführungszeichenzeichenfolge" überschreibt die meisten Einschränkungen, die zuvor für Zeichen in Abschnittsnamen beschrieben wurden, auf die verwiesen wird. Ein solcher abschnittsgetrennter Name kann fast alle explizit oder implizit sichtbaren Zeichen mit Ausnahme der schließende Klammer (]) enthalten, solange der entsprechende Abschnitt in der INF-Datei genau mit dieser "Anführungszeichenzeichenfolge" übereinstimmt.

    Beispiel : ";; Std Mfg " ist eine gültige Abschnittsnamenreferenz, wenn die entsprechende Abschnittsdeklaration in der INF-Datei genau mit dem Namen in den doppelten Anführungszeichen in Bezug auf das Leerzeichen und das Semikolon als [;; Std Mfg ].

Verwenden von Zeichenfolgentoken

  • Viele Werte in einer INF-Datei, einschließlich INF-Writer-definierter Abschnittsnamen, können als Zeichenfolgenschlüsseltoken des Formulars %strkey% ausgedrückt werden. Im Abschnitt INF-Zeichenfolgen der INF-Datei muss jeder Zeichenfolgenschlüssel einem Zeichenfolgenwert zugeordnet sein, der aus einer Sequenz explizit sichtbarer Zeichen besteht. Bei Bedarf konvertiert der Setupcode den Zeichenfolgenwert in Unicode.

    Weitere Informationen zum Definieren % von Strkeytoken% und ihren jeweiligen Werten finden Sie in der Beschreibung des Abschnitts INF-Zeichenfolgen.

Zeilenformat, Fortsetzung und Kommentare

  • Jeder Eintrag und jede Direktive in einem Abschnitt endet mit einem Rückgabe- oder Zeilenvorschubzeichen. Daher darf der Text-Editor, der zum Erstellen einer INF-Datei verwendet wird, nach einer beliebigen, vom Editor bestimmten Anzahl von Zeichen keine Rückgabe- oder Zeilenvorschubzeichen einfügen.

  • Der umgekehrte Schrägstrich (\) kann als expliziter Linienkontinuator in einem Eintrag oder einer Direktive verwendet werden. Umgekehrte Schrägstriche werden jedoch auch in Pfadspezifikationen verwendet. Verwenden Sie die folgende Strategie, um sicherzustellen, dass ein umgekehrter Schrägstrich, der in einer Pfadspezifikation angezeigt wird, nicht als Zeilenkontinuator falsch interpretiert wird:

    • Für eine Direktive, die zwei Zeilen umfasst, von denen eine ein Eintrag ist, der einen umgekehrten Schrägstrich enthält, verwenden Sie Anführungszeichen, um den Eintrag zu trennen, der den umgekehrten Schrägstrich enthält.

      CopyFiles = "SomeDirectory\"\
      ,SomeFile
      
    • Vermeiden Sie die Verwendung des umgekehrten Schrägstrichs in der im folgenden Beispiel gezeigten Weise. Windows ignoriert den ersten umgekehrten Schrägstrich und interpretiert den zweiten umgekehrten Schrägstrich als Zeilenkontinuator.

      CopyFiles = SomeDirectory\\
      ,SomeFile
      
    • Die folgende Syntax ist gültig und entspricht CopyFiles = "SomeDirectory\",SomeFile ; comment.

      CopyFiles = "SomeDirectory\"\ ; comment 
      ,SomeFile
      

      Da Text nach einem Semikolon ignoriert wird, CopyFiles = "SomeDirectory\" ; comment ,SomeFile funktioniert nicht.

  • Kommentare beginnen mit einem Semikolon (;) Zeichen. Beim Analysieren und Interpretieren einer INF-Datei geht das System davon aus, dass Folgendes für den Installationsprozess nicht relevant ist:

    • Alle Zeichen, die einem Semikolon in derselben Zeile folgen, es sei denn, das Semikolon wird in einer "Anführungszeichenzeichenfolge" oder %einem Strkeytoken% angezeigt.
    • Jede leere Zeile, die nichts außer einem Zeilenvorschub- oder Rückgabezeichen enthält
  • Kommas trennen die in Abschnittseinträgen und -anweisungen angegebenen Werte.

    Ein INF-Dateieintrag oder eine -Anweisung kann einen optionalen Wert in der Mitte einer Liste von Werten weglassen, die Kommas müssen jedoch beibehalten werden. INF-Dateien können nachfolgende Kommas weglassen.

    Betrachten Sie beispielsweise die Syntax für einen SourceDisksFiles-Abschnittseintrag :

    Dateiname=diskid[,[subdir][,size]]

    Ein Eintrag, der den Unterteilwert auslässt, aber den Größenwert angibt, muss die Kommatrennzeichen für beide Werte angeben, wie im folgenden Beispiel gezeigt:

    Dateiname=diskid,,size

    Ein Eintrag in einer INF-Datei, der die beiden optionalen Werte auslässt, kann dieses Format aufweisen:

    Dateiname=diskid

  • Um ein Prozentzeichen (%) in Werte einzuschließen, die in Abschnittseinträgen und -anweisungen angegeben werden, escapen Sie das Zeichen prozent mit einem anderen Prozentzeichen.

    Betrachten Sie beispielsweise diese Anweisung in einem Abschnitt [add-registry-section] :

    HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll"

    Der Registrierungswert wird mit dem folgenden Wert festgelegt:

    %SystemRoot%\System32\IoLogMsg.dll

  • Um ein Zeichen mit doppeltem Anführungszeichen (") in die Werte einzuschließen, die in Abschnittseinträgen und -anweisungen angegeben werden, escapen Sie das doppelte Anführungszeichen mit einem weiteren doppelten Anführungszeichen. Beachten Sie, dass sich die Zeichenfolge innerhalb einer "Anführungszeichenzeichenfolge" befinden muss.

    Betrachten Sie beispielsweise diese Anweisung in einem Abschnitt [add-registry-section] :

    HKR,,Example,,,"Display an "example"string"

    Der Registrierungswert wird mit dem folgenden Wert festgelegt:

    Anzeigen einer Beispielzeichenfolge

INF-Größenbeschränkungen

  • Die maximale Länge eines INF-Dateifelds in Zeichen vor der Zeichenfolgenersetzung und einschließlich eines beendenden NULL-Zeichens beträgt 4096.

  • Nach der Zeichenfolgenersetzung beträgt die maximale Länge einer INF-Dateizeichenfolge in Zeichen 4096, die ein beendendes NULL-Zeichen enthält.

  • Beachten Sie jedoch, dass Plug & Play (PnP) möglicherweise ein restriktiveres Limit für bestimmte INF-Dateifelder festlegt, die sie erkennt oder verwendet, z. B. Gerätebeschreibung, Treiberanbieter und Gerätehersteller.