ABSCHNITT "INF-Zeichenfolgen"

Eine INF-Datei muss mindestens einen Zeichenfolgenabschnitt enthalten, um jedes an anderer Stelle in diesem INF angegebene %strkey%-Token zu definieren.

[Strings] | 
[Strings.LanguageID] ...
 
strkey1 = ["]some string["]
strkey2 = "    string-with-leading-or-trailing-whitespace     "  | 
          "very-long-multiline-string" | 
          "string-with-semicolon" | 
          "string-ending-in-backslash" |
          ""double-quoted-string-value""
 ...

Einträge

strkey1, strkey2, ...
Jeder Zeichenfolgenschlüssel in einer INF-Datei muss einen eindeutigen Namen angeben, der aus Buchstaben, Ziffern und/oder anderen explizit sichtbaren Zeichen besteht. Ein %-Zeichen in einem solchen Strkey-Token muss als %%ausgedrückt werden.

einige Zeichenfolgen | "some string"
Gibt eine Zeichenfolge an, die optional durch doppelte Anführungszeichen (") getrennt wird und Buchstaben, Ziffern, Interpunktionszeichen und möglicherweise sogar bestimmte implizit sichtbare Zeichen enthält, insbesondere Leerzeichen und/oder Tabstoppzeichen. Eine Zeichenfolge ohne Anführungszeichen darf jedoch kein internes doppeltes Anführungszeichen ("), Semikolon (;), Zeilenvorschub, Rückgabezeichen oder unsichtbare Steuerzeichen enthalten, und sie kann keinen umgekehrten Schrägstrich () als endgültiges Zeichen aufweisen.

"* string-with-leading-or-trailing-whitespace* " |

"very-long-multiline-string" |

"string-with-semicolon" |

"string-ending-in-backslash" |

""double-quoted-string-value""
Der für ein %strkey%-Token angegebene Wert muss in doppelte Anführungszeichen (") eingeschlossen werden, wenn er eines der folgenden Kriterien erfüllt:

  • Wenn eine angegebene Zeichenfolge führende oder nachfolgende Leerzeichen aufweist, die als Teil ihres Werts beibehalten werden müssen, muss diese Zeichenfolge in doppelte Anführungszeichen eingeschlossen werden, um zu verhindern, dass ihre führenden und/oder nachfolgenden Leerzeichen vom INF-Parser verworfen werden.

  • Wenn eine lange Zeichenfolge aufgrund von Zeilenumbruch im Text-Editor möglicherweise interne Zeilenvorschub- oder Rückgabezeichen enthalten kann, sollte sie auch in doppelte Anführungszeichen eingeschlossen werden, um zu verhindern, dass die Zeichenfolge beim anfänglichen internen Zeilenvorschub- oder Rückgabezeichen abgeschnitten wird.

  • Wenn eine solche Zeichenfolge ein Semikolon enthält, muss sie in doppelte Anführungszeichen eingeschlossen werden, um zu verhindern, dass die Zeichenfolge am Semikolon abgeschnitten wird. (Wie bereits unter Allgemeine Syntaxregeln für INF-Dateien erwähnt, beginnt das Semikolon mit jedem Kommentar in INF-Dateien.)

  • Wenn eine solche Zeichenfolge mit einem umgekehrten Schrägstrich endet, muss sie in doppelte Anführungszeichen eingeschlossen werden, um zu verhindern, dass die Zeichenfolge mit dem nächsten Eintrag verkettet wird. (Wie bereits unter Allgemeine Syntaxregeln für INF-Dateien erwähnt, wird der umgekehrte Schrägstrich () als Zeilenkontinuator in INF-Dateien verwendet.)

  • Wie bei einer Zeichenfolgenspezifikation ohne Anführungszeichen darf eine solche "Zeichenfolge in Anführungszeichen" keine internen doppelten Anführungszeichen enthalten. Es kann jedoch als expliziter Zeichenfolgenwert mit doppeltem Anführungszeichen angegeben werden, indem ein oder mehrere zusätzliche Anführungszeichenpaare verwendet werden (z. B. "einige Zeichenfolge").

    Der INF-Parser verwirft nicht nur das äußerste Paar von doppelten Anführungszeichen für alle "Anführungszeichen" in diesem Abschnitt, sondern komprimiert auch jedes nachfolgende sequenzielle Paar doppelter Anführungszeichen in ein einzelnes doppeltes Anführungszeichenzeichen.

    Beispielsweise wird ""einige Zeichenfolge""" bei der Analyse auch zu "some string".

Um zusammenzufassen, muss jede Zeichenfolge in ein Paar doppelte Anführungszeichen (") eingeschlossen werden, wenn eines der folgenden Werte zutrifft:

  • Die Zeichenfolge enthält führende oder nachfolgende Leerzeichen.
  • Die Zeichenfolge ist so lang, dass sie umschließt.
  • Die Zeichenfolge enthält ein Semikolon oder ein endgültiges umgekehrtes Schrägstrichzeichen.
  • Die Zeichenfolge selbst ist eine Zeichenfolge in Anführungszeichen.

Der System-INF-Parser verwirft das äußerst umschließende Paar von doppelten Anführungszeichen, die eine solche Zeichenfolge trennen, zusammen mit allen führenden oder nachfolgenden Leerzeichen außerhalb der doppelten Anführungszeichen Zeichenfolgentrennzeichen.

Bemerkungen

Da der System-INF-Parser das äußerste Paar von umschließenden doppelten Anführungszeichen von jeder "Zeichenfolge in Anführungszeichen" entfernt, die ein %strkey%-Token definiert, definieren viele der System-INF-Dateien alle %strkey%-Token als "Zeichenfolgen in Anführungszeichen", um den unbeabsichtigten Verlust von führenden und nachfolgenden Leerzeichen während der INF-Analyse zu vermeiden. Die Verwendung von "Zeichenfolgen in Anführungszeichen" stellt außerdem sicher, dass insbesondere lange Zeichenfolgenwerte, die zeilenübergreifend umgebrochen sind, nicht abgeschnitten werden können und dass Zeichenfolgen mit endenden umgekehrten Schrägstrichen nicht mit der nächsten Zeile in der INF-Datei verkettet werden können.

Um eine einzelne internationale INF-Datei zu erstellen, kann ein INF über einen Satz gebietsschemaspezifischer Zeichenfolgen verfügen.LanguageID-Abschnitte, wie in der formalen Syntax-Anweisung gezeigt. Die LanguageID-Erweiterung ist ein 4-stelliger Hexadezimalwert (ohne führendes "0x"), der wie folgt definiert wird:

  • Die unteren 10 Bits enthalten die primäre Sprach-ID, und die nächsten 6 Bits enthalten die Untersprache-ID, wie durch das makelangID-Makro angegeben, das in Winnt.h definiert ist.
  • Die Sprach- und Untersprach-IDs müssen mit den systemdefinierten Werten der win32-konstanten LANG_XXX und SUBLANG_XXX übereinstimmen, die in Winnt.h definiert sind.

Ein LanguageID-Wert von 0407 stellt beispielsweise eine primäre Sprach-ID von LANG_GERMAN (07) mit einer Untersprache-ID von SUBLANG_GERMAN (01) dar, wie im folgenden Beispiel gezeigt:

[Strings]              ; No language ID implies English
DiskName="My Excellent Software"
LocaleSubDir="English"

[Strings.0407]         ; 0407 is the language ID for German
DiskName="Meine ausgezeichnete Software"
LocaleSubDir="German"

Eine INF-Datei kann nur einen Zeichenfolgenabschnitt zusammen mit einer Zeichenfolge enthalten.LanguageID-Abschnitt für jeden LanguageID-Wert.

Windows wählt einen einzelnen Strings-Abschnitt aus, der zum Übersetzen aller %strkey%-Token für die Installation verwendet wird. Abhängig vom aktuellen Gebietsschema eines bestimmten Computers wählt Windows einen Abschnitt Zeichenfolgen auf folgende Weise aus:

  1. Windows sucht zuerst nach . LanguageID-Werte im INF, die dem aktuellen Gebietsschema entsprechen, das dem Computer zugewiesen ist. Wenn eine genaue Übereinstimmung gefunden wird, verwendet Windows diese Zeichenfolgen.Languageid INF-Abschnitt, um alle %strkey%-Token zu übersetzen, die innerhalb des INF definiert sind.

    Sie müssen alle Zeichenfolgentoken in allen Zeichenfolgen duplizieren.* -Abschnitte, sogar numerische/feste Konstanten, die nicht lokalisiert werden müssen.

  2. Andernfalls sucht Windows als Nächstes nach einer Übereinstimmung mit dem LANG_XXX-Wert mit dem Wert von SUBLANG_NEUTRAL als SUBLANG_XXX. Wenn eine solche Übereinstimmung gefunden wird, verwendet Windows diesen INF-Abschnitt, um alle %strkey%-Token zu übersetzen, die innerhalb des INF definiert sind.

  3. Andernfalls sucht Windows als Nächstes nach einer Übereinstimmung mit dem LANG_XXX-Wert und allen gültigen SUBLANG_XXX für dieselbe LANG_XXX-Familie . Wenn eine solche partielle Übereinstimmung gefunden wird, verwenden Sie diese Zeichenfolgen.Languageid INF-Abschnitt, um alle %strkey%-Token zu übersetzen, die innerhalb des INF definiert sind.

  4. Andernfalls verwendet Windows den Abschnitt nicht ergänzte Zeichenfolgen , um alle %strkey%-Token zu übersetzen, die innerhalb des INF definiert sind.

Gemäß Konvention und zur Vereinfachung bei der Erstellung einer Reihe von INF-Dateien für den internationalen Markt sind Zeichenfolgenabschnitte die letzten in allen System-INF-Dateien. Die Verwendung von %strkey%-Token für alle vom Benutzer sichtbaren Zeichenfolgenwerte innerhalb eines INF und das Platzieren in abschnitten mit gebietsschemaspezifischen Zeichenfolgen vereinfacht die Übersetzung solcher Zeichenfolgen. Weitere Informationen zu gebietsschemaspezifischen INF-Dateien finden Sie unter Erstellen internationaler INF-Dateien.

Obwohl Zeichenfolgenabschnitte die letzten Abschnitte in jeder INF-Datei sind, kann jedes angegebene %strkey%-Token, das in einem Abschnitt " Strings " definiert ist, wiederholt an anderer Stelle im INF verwendet werden, insbesondere wenn der übersetzte Wert dieses Tokens erforderlich ist. Die SetupAPI-Funktionen erweitern jedes %strkey%-Token auf die angegebene Zeichenfolge und verwenden diesen erweiterten Wert dann für die weitere INF-Verarbeitung.

Die Verwendung von %strkey%-Token in INF-Dateien ist nicht auf vom Benutzer sichtbare Zeichenfolgenwerte beschränkt. Diese Token können in beliebiger Weise verwendet werden, die für den INF-Writer geeignet ist, solange jedes Token innerhalb eines Strings-Abschnitts definiert ist. Wenn Sie beispielsweise eine INF-Datei schreiben, die die Spezifikation mehrerer GUIDs erfordert, kann es sinnvoll sein, ein %strkey%-Token für jede GUID zu erstellen, indem Sie einen aussagekräftigen Namen als Ersatz für jeden solchen GUID-Wert verwenden.

Wenn Sie einen Satz von %strkey% = "{GUID}" -Werten im Abschnitt Strings der INF-Datei angeben, müssen Sie alle expliziten GUID-Werte nur einmal eingeben. Dies kann helfen, eine besser lesbare interne INF-Dokumentation bereitzustellen als die Verwendung expliziter GUID-Werte in der GESAMTEN INF-Datei.

Alle %strkey%-Token müssen in der INF-Datei definiert werden, in der auf sie verwiesen wird. Daher muss für jede INF-Datei mit den Einträgen Include und Needs ein eingeschlossener INF über einen eigenen Abschnitt Zeichenfolgen verfügen, um alle %strkey%-Token zu definieren, auf die in diesem INF verwiesen wird.

In einem Abschnitt in INF-Zeichenfolgen beträgt die maximale Länge einer Ersetzungszeichenfolge in Zeichen, einschließlich eines endenden NULL-Zeichens, 4096 (Windows Vista und höhere Versionen von Windows) und 512 (Windows Server 2003, Windows XP und Windows 2000). Nach der Zeichenfolgenersetzung beträgt die maximale Länge einer INF-Dateizeichenfolge in Zeichen 4096, einschließlich eines abschließenden NULL-Zeichens.

Beispiele

Das folgende Beispiel zeigt ein Fragment eines Strings-Abschnitts aus einer vom System bereitgestellten gebietsschemaspezifischen dvd.inf für Installationen in englischsprachigen Ländern/Regionen.

[Strings]
Msft="Microsoft"
MfgToshiba="Toshiba"
Tosh404.DeviceDesc="Toshiba DVD decoder card"
; ... 

Das folgende Beispiel zeigt die Zeichenfolgenverkettung.

[OEM Windows System Component Verification]
OID = 1.3.6.1.4.1.311.10.3.7    ; WHQL OEM OID 
Notice = "%A% %B% %C% %D% %E%" 
[Strings]
A = "This certificate is used to sign untested drivers that have not passed the Windows Hardware Quality Labs (WHQL) testing process."
B = "This certificate and drivers signed with this certificate are intended for use in test environments only, and are not intended for use in any other context."
C = "Vendors who distribute this certificate or drivers signed with this certificate outside a test environment may be in violation of their driver signing agreement."
D = "Vendors who have their drivers signed with this certificate do so at their own risk." 
E = "In particular, Microsoft assumes no liability for any damages that may result from the distribution of this certificate or drivers signed with this certificate outside the test environment described in a vendor's driver signing agreement."

Weitere Informationen

DDInstall

DDInstall. CoInstaller

DDInstall. HW

DDInstall. Schnittstellen

DDInstall. Dienstleistungen

Hersteller

InterfaceInstall32

Modelle

SourceDisksNames

Version