Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine INF-Datei ist eine Textdatei, die in benannte Abschnitte unterteilt ist. Einige Abschnitte weisen systemdefinierte Namen auf, und einige Abschnitte weisen Namen auf, die vom Writer der INF-Datei bestimmt wurden.
Jeder Abschnitt enthält abschnittsspezifische Einträge, die von Komponenten der Geräteinstallation interpretiert werden. Einige Einträge beginnen mit einem vordefinierten Schlüsselwort. Diese Einträge werden als Anweisungen bezeichnet.
Einige INF-Dateieinträge sind im Wesentlichen Zeiger von einem Abschnitt auf einen anderen, für einen bestimmten Zweck. Beispielsweise identifiziert eine INF-AddReg-Direktive 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 werden, z. B. Dateinamen, Registrierungswerte, Hardwarekonfigurationsinformationen, Flags usw. Beispielsweise liefert eine INF DriverVer-Direktive Informationen zur Treiberversion.
Wenn Windows eine Installation beginnt, wird zunächst nach einem Abschnitt „INF-Version“ gesucht, um die Gültigkeit der INF-Datei zu überprüfen. Anschließend wird die Installation gestartet, indem ein INF Manufacturer-Abschnitt gesucht wird. Dieser Abschnitt enthält Direktiven zu INF Models sections, die wiederum Direktiven bereitstellen, die zu verschiedenen INF DDInstall-Abschnitten führen, basierend auf der Hardware-ID des installierten Geräts.
Die folgenden Syntaxregeln regeln die erforderlichen und optionalen Inhalte von INF-Dateien, das Format von Abschnittsnamen mithilfe von Stringtokens sowie das Zeilenformat, die Fortsetzung und Kommentare.
Groß-/Kleinschreibung
- Bei Abschnittsnamen, Einträgen und Direktiven wird die Groß-/Kleinschreibung nicht beachtet. Beispielsweise sind version, VERSION und Version gleichermaßen gültige Abschnittsnamenspezifikationen in einer INF-Datei.
Erforderliche und optionale Inhalte
Die Menge der erforderlichen und optionalen Abschnitte, Einträge und Direktiven in einer bestimmten INF-Datei hängt vom Typ des zu installierenden Geräts/Treibers oder der Komponente ab.
Der Satz von Abschnitten, abschnittsspezifischen Einträgen und Direktiven, die zum Installieren eines bestimmten Geräts und seiner Treiber erforderlich sind, hängt auch etwas vom entsprechenden Klasseninstaller ab, sofern vorhanden. Weitere Informationen dazu, wie die vom System bereitgestellten Klasseninstallationsprogramme gerätetypspezifische INF-Dateien verarbeiten, finden Sie in der gerätetypspezifischen Dokumentation im WDK.
Innerhalb von Syntaxdefinitionen werden optionale Einträge durch nicht fettgedruckte Klammern ([,]) gekennzeichnet. Auf der anderen Seite sind fett formatierte Klammern ([, ]) erforderliche Elemente des Eintrags, in dem sie enthalten sind. Im folgenden Beispiel sind die eckigen Klammern um Version erforderlich, während die Klammern um Class=class-name 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 Namen, nicht nach Position innerhalb der INF-Datei.
Jeder Abschnitt in einer INF-Datei beginnt mit dem Abschnittsnamen in eckigen Klammern ([ ]). Der Abschnittsname kann systemdefiniert oder vom INF-Writer definiert sein.
[Manufacturer] gibt z. B. den Anfang des vom System benannten Abschnitts Manufacturer an, während [Std.Mfg] einen bestimmten vom INF-Autor definierten Models-Abschnittsnamen darstellt.
Ein Abschnittsname hat eine maximale Länge von 255 Zeichen auf Windows 2000 und späteren Windows-Versionen.
Jeder Abschnitt endet am Anfang eines neuen [Abschnittsname] oder an der Ende-der-Datei-Markierung.
Wenn mehrere Abschnitte in einer INF-Datei denselben Namen haben, führt das System ihre Einträge und Direktiven in einem einzelnen Abschnitt zusammen.
Sofern er nicht in doppelte Anführungszeichen (") eingeschlossen ist, muss ein INF-Writer-definierter Abschnittsname eine nicht in Anführungszeichen gesetzte, INF-eindeutige Zeichenfolge aus explizit sichtbaren Zeichen sein, unter Ausschluss bestimmter Zeichen mit INF-spezifischen Bedeutungen. Insbesondere kann ein nicht in Anführungszeichen gesetzter Abschnittsname, auf den durch einen Abschnittseintrag oder eine Direktive verwiesen wird, keine führenden oder nachgestellten Leerzeichen, ein Zeilenvorschubzeichen, ein Wagenrücklaufzeichen oder ein unsichtbares Steuerelementzeichen enthalten und darf keine Tabulatorzeichen enthalten. Darüber hinaus darf es weder eines der Klammerzeichen ([ ]) noch ein einzelnes Prozentzeichen (%), ein Semikolon (;) oder interne doppelte Anführungszeichen (") enthalten, und es darf keinen umgekehrten Schrägstrich (\) als letztes Zeichen aufweisen.
Beispielsweise sind Std.Mfg und Std_Mfg eindeutige und gültige Abschnittsnamen, wenn in einem INF-Dateieintrag oder einer Direktive darauf verwiesen wird, aber Std;Mfg (mit seinem internen Semikolon) ist ungültig, es sei denn, es wird durch doppelte Anführungszeichen (") eingeschlossen.
Wenn Sie einen INF-Writer-definierten Abschnittsnamen als "in Anführungszeichen gesetzte Zeichenfolge" angeben, werden die meisten Einschränkungen außer Kraft gesetzt, die zuvor für Zeichen in referenzierten Abschnittsnamen beschrieben wurden. Ein solcher durch Trennzeichen getrennter Abschnittsname kann fast alle explizit oder implizit sichtbaren Zeichen enthalten, mit Ausnahme der schließenden Klammer (]), solange der entsprechende Abschnitt in der INF-Datei genau dieser "in Anführungszeichen gesetzten Zeichenfolge" entspricht.
Beispiel: ";; Std Mfg " ist ein gültiger Abschnittsnamenverweis, wenn die entsprechende Abschnittsdeklaration in der INF-Datei exakt mit dem Namen innerhalb der doppelten Anführungszeichen in Bezug auf das Leerzeichen und die Semikolonzeichen übereinstimmt, als [;; Std Mfg ].
Verwendung von String-Tokens
Viele Werte in einer INF-Datei, einschließlich INF-writer-definierter Abschnittsnamen, können als Zeichenfolgenschlüsseltoken in der Form %% ausgedrückt werden. Im INF-Abschnitt Strings der INF-Datei muss jeder Zeichenfolgenschlüssel einem Zeichenfolgenwert zugeordnet werden, der aus einer Sequenz explizit sichtbarer Zeichen besteht. Bei Bedarf konvertiert der Setupcode den Zeichenfolgenwert in Unicode.
Weitere Informationen zum Definieren von strkey-Token und deren jeweiligen Werten finden Sie in der Beschreibung des Abschnitts „INF Strings“.
Zeilenformat, Fortsetzung und Kommentare
Jeder Eintrag und jede Direktive in einem Abschnitt endet mit einem Wagenrücklauf- oder Zeilenvorschubzeichen. Daher darf der Text-Editor, der zum Erstellen einer INF-Datei verwendet wird, keine Wagenrücklauf- oder Zeilenvorschubzeichen nach einer beliebigen, vom Editor festgelegten Anzahl von Zeichen einfügen.
Das Backslash-Zeichen (\) kann als explizites Zeilenfortsetzungszeichen in einem Eintrag oder einer Direktive verwendet werden. Backslash-Zeichen werden jedoch auch in Pfadspezifikationen verwendet. Um sicherzustellen, dass ein Backslash-Zeichen, das in einer Pfadangabe vorkommt, nicht als Zeilenfortsetzungszeichen interpretiert wird, verwenden Sie die folgende Strategie:
Verwenden Sie für eine Direktive, die zwei Zeilen umfasst, von denen eine ein Eintrag ist, der einen umgekehrten Schrägstrich enthält, Anführungszeichen, um den Eintrag zu trennen, der den umgekehrten Schrägstrich enthält.
CopyFiles = "SomeDirectory\"\ ,SomeFileVermeiden Sie die Verwendung des Backslash-Zeichens in der im folgenden Beispiel gezeigten Weise. Windows ignoriert den ersten Backslash und interpretiert den zweiten Backslash als Zeilenfortsetzungszeichen.
CopyFiles = SomeDirectory\\ ,SomeFileDie folgende Syntax ist gültig und entspricht
CopyFiles = "SomeDirectory\",SomeFile ; comment.CopyFiles = "SomeDirectory\"\ ; comment ,SomeFileDa Text nach einem Semikolon ignoriert wird, funktioniert
CopyFiles = "SomeDirectory\" ; comment ,SomeFilenicht.
Kommentare beginnen mit einem Semikolon (;) Zeichen. Beim Analysieren und Interpretieren einer INF-Datei geht das System davon aus, dass folgendes für den Installationsprozess keine Relevanz hat:
- Alle Zeichen, die auf ein Semikolon in derselben Zeile folgen, es sei denn, das Semikolon kommt innerhalb einer "Zeichenfolge" oder %Strkey%-Token vor.
- Eine leere Zeile, die nichts mit Ausnahme eines Zeilenfeed- oder Carriage-Return-Zeichens enthält
Kommas trennen die in Abschnittseinträgen und Direktiven angegebenen Werte.
Ein INF-Dateieintrag oder eine Direktive kann einen optionalen Wert in der Mitte einer Liste von Werten weglassen, aber die Kommas müssen beibehalten werden. INF-Dateien können abschließende Kommas weglassen.
Betrachten Sie beispielsweise die Syntax für einen SourceDisksFiles-Abschnittseintrag :
filename=diskid[,[subdir][,size]]
Ein Eintrag, der den Wert subdir auslässt, aber den Wert size angibt, muss die Kommatrennzeichen für beide Werte angeben, wie im folgenden Beispiel gezeigt:
Dateiname=diskid,,Größe
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 Direktiven angegeben sind, escapen Sie das Prozentzeichen mit einem anderen Prozentzeichen.
Betrachten Sie beispielsweise diese Aussage 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 doppeltes Anführungszeichen-Zeichen (") in in Abschnittseinträgen und Direktiven angegebenen Werten einzuschließen, escapen Sie das doppelte Anführungszeichen-Zeichen mit einem anderen doppelten Anführungszeichen-Zeichen. Beachten Sie, dass die Zeichenfolge innerhalb einer "in Anführungszeichen gesetzten Zeichenfolge" stehen muss.
Betrachten Sie diese Aussage beispielsweise in einem Abschnitt [add-registry-section]:
HKR,,Example,,"Eine ""Beispiel""-Zeichenfolge anzeigen"
Der Registrierungswert wird mit dem folgenden Wert festgelegt:
Eine „example“-Zeichenfolge anzeigen
INF-Größenbeschränkungen
Die maximale Länge eines INF-Dateifelds vor der Zeichenfolgenersetzung und einschließlich eines endenden NULL-Zeichens in Zeichen ist 4096.
Nach der Zeichenfolgenersetzung beträgt die maximale Länge einer INF-Dateizeichenfolge 4096, die ein abschließendes NULL-Zeichen enthält.
Beachten Sie jedoch, dass Plug & Play (PnP) für bestimmte INF-Dateifelder, die von Plug & Play erkannt oder verwendet werden, ein restriktiveres Limit auferlegen kann, z. B. Gerätebeschreibung, Treiberanbieter und Gerätehersteller.