INF 文字列セクション

INF ファイルには、その INF 内の他の場所で指定されたすべての %strkey% トークンを定義するために、少なくとも 1 つの Strings セクションが必要です。

[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""
 ...

エントリ

strkey1、 strkey2、...
INF ファイル内の各文字列キーは、文字、数字、またはその他の明示的に表示される文字で構成される一意の名前を指定する必要があります。 このような strkey トークン内の % 文字は、 %%として表す必要があります。

いくつかの文字列 | "some string"
文字、数字、句読点、および場合によっては特定の暗黙的に表示される文字 (特に内部スペースやタブ文字) を含む、二重引用符 (") を使用して区切られた文字列を指定します。 ただし、引用符で囲まれていない文字列には、内部二重引用符 (")、セミコロン (;)、改行、戻り値、または非表示の制御文字を含めることはできません。また、最後の文字として円記号 () を使用することはできません。

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

"very-long-multiline-string" |

"string-with-セミコロン" |

"string-ending-in-backslash" |

""double-quoted-string-value""
%strkey% トークンに指定する値は、次のいずれかの条件を満たす場合は、二重引用符 (") で囲む 必要があります 。

  • 指定した文字列に、値の一部として保持する必要がある先頭または末尾の空白がある場合は、その先頭または末尾の空白が INF パーサーによって破棄されないように、その文字列を二重引用符で囲む必要があります。

  • テキスト エディターで行の折り返しのために長い文字列に内部改行文字または戻り文字が含まれている可能性がある場合は、最初の内部改行文字または戻り文字での文字列の切り捨てを防ぐために、二重引用符で囲む必要もあります。

  • このような文字列にセミコロンが含まれている場合は、セミコロンで文字列が切り捨てられないように、二重引用符で囲む必要があります。 ( INF ファイルの一般的な構文規則で既に説明したように、INF ファイルの各コメントはセミコロン文字で始まります)。

  • このような文字列が円記号で終わる場合は、文字列が次のエントリと連結されないように、二重引用符で囲む必要があります。 (INF ファイルの一般的な構文規則で既に説明したように、INF ファイルでは円記号 () が行コンティニュエーターとして使用されます)。

  • 引用符で囲まれていない文字列の指定と同様に、このような "引用符で囲まれた文字列" には、内部の二重引用符文字を含めることはできません。 ただし、1 つ以上の追加の二重引用符文字のペア (例: ""some string") を使用して、明示的に二重引用符で囲まれた文字列値として指定できます。

    INF パーサーは、このセクションの "引用符で囲まれた文字列" の最も外側の二重引用符のペアを破棄するだけでなく、後続の連続する二重引用符の各ペアを単一の二重引用符文字に圧縮します。

    たとえば、"""some string"" は、解析時にも "some string" になります。

要約すると、次のいずれかに該当する場合は、文字列を二重引用符 (") のペアで囲む必要があります。

  • 文字列には、先頭または末尾の空白が含まれています。
  • 文字列は非常に長いので、行が折り返されます。
  • 文字列には、セミコロンまたは最後の円記号が含まれています。
  • 文字列自体は引用符で囲まれた文字列です。

システム INF パーサーは、このような文字列を区切る最も外側の二重引用符文字のペアと、二重引用符文字列区切り記号の外側の先頭または末尾の空白文字を破棄します。

Remarks

システム INF パーサーは、%strkey% トークンを定義する "引用符で囲まれた文字列" から最も外側の二重引用符のペアを除去するため、システム INF ファイルの多くは、INF 解析中に先頭と末尾の空白が意図せずに失われないように、すべての %strkey% トークンを "引用符付き文字列" として定義します。 "引用符で囲まれた文字列" を使用すると、行間で折り返される特に長い文字列値を切り捨てることはできません。また、末尾の円記号を持つ文字列を INF ファイル内の次の行に連結することもできなくなります。

1 つの国際 INF ファイルを作成するために、INF はロケール固有の文字列のセットを持つことができます。正式な構文ステートメントに示すように、LanguageID セクション。 LanguageID 拡張は、次のように定義された 4 桁の 16 進値 (先頭に "0x" がない) です。

  • 下位 10 ビットには主言語 ID が含まれ、次の 6 ビットには 、Winnt.h で定義された MAKELANGID マクロで指定されたサブ言語 ID が含まれます。
  • 言語 ID とサブ言語 ID は、Winnt.h で定義されている Win32 LANG_XXX および SUBLANG_XXX 定数のシステム定義値と一致する必要があります。

たとえば、 LanguageID 値 0407 は、次の例のように、SUBLANG_GERMAN (01) のサブ言語 ID を持つ LANG_GERMAN (07) のプライマリ言語 ID を表します。

[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"

INF ファイルには、1 つの文字列と共に、1 つの Strings セクションのみを含めることができます。各 LanguageID 値の LanguageID セクション。

Windowsは、インストールのすべての %strkey% トークンを変換するために使用される 1 つの Strings セクションを選択します。 特定のコンピューターの現在のロケールに応じて、Windowsは次のように Strings セクションを選択します。

  1. Windows最初に検索します。コンピューターに割り当てられている現在のロケールと一致する INF の LanguageID 値。 完全一致が見つかった場合、Windowsはその文字列を使用します。LanguageIDINF 内で定義されているすべての %strkey% トークンを変換する INF セクション。

    すべての Strings.* に対してすべての文字列トークンを複製する必要がありますセクション。ローカライズする必要のない数値/固定定数も含まれます。

  2. それ以外の場合、Windowsは、SUBLANG_XXX としてSUBLANG_NEUTRALの値を持つLANG_XXX 値との一致を探します。 このような一致が見つかった場合、Windowsはその INF セクションを使用して、INF 内で定義されているすべての %strkey% トークンを変換します。

  3. それ以外の場合、Windowsは、同じLANG_XXX ファミリに対して、LANG_XXX 値と有効な SUBLANG_XXX との一致を検索します。 このような部分的な一致が見つかった場合は、その文字列を使用 します。LanguageID INF 内で定義されているすべての %strkey% トークンを変換する INF セクション。

  4. それ以外の場合、Windowsは、INF 内で定義されている strkey% トークン %変換するために、未コーディングの Strings セクションを使用します。

慣例により、国際市場向けに一連の INF ファイルを作成する際の利便性のために、 Strings セクションはすべてのシステム INF ファイル内で最後になります。 INF 内のすべてのユーザーが参照できる文字列値に対して %strkey% トークンを使用し、ロケールごとの Strings セクションに配置することで、このような文字列の変換が簡略化されます。 ロケール固有の INF ファイルの詳細については、「 International INF ファイルの作成」を参照してください。

Strings セクションは、すべての INF ファイルの最後のセクションですが、指定された %strkey% トークンで定義されている文字列セクションは、そのトークンの変換された値が必要な場合は、特に INF の他の場所で繰り返し使用できます。 SetupAPI 関数は、各 %strkey% トークンを指定された文字列に展開し、その拡張値を使用して INF 処理を行います。

INF ファイル内での %strkey% トークンの使用は、ユーザーが参照できる文字列値に制限されません。 これらのトークンは、各トークンが Strings セクション内で定義されている限り、INF ライターに便利な任意の方法で使用できます。 たとえば、複数の GUID の指定を必要とする INF ファイルを記述する場合、GUID ごとに %strkey% トークンを作成すると便利な場合があります。そのような GUID 値の代わりにわかりやすい名前を使用します。

INF ファイルの Strings セクションで %strkey% = "{GUID}" 値のセットを指定するには、各明示的な GUID 値を 1 回だけ入力する必要があります。 これは、INF ファイル全体で明示的な GUID 値を使用するよりも、より読みやすい内部 INF ドキュメントを提供するのに役立ちます。

すべての %strkey% トークンは、それらが参照されている INF ファイル内で定義する必要があります。 したがって、Include エントリと Needs エントリを持つ INF ファイルの場合、含まれる INF には、その INF で参照されるすべての %strkey% トークンを定義するための独自の Strings セクションが必要です。

INF 文字列セクションでは、終端の NULL 文字を含む置換文字列の最大長 (文字単位) は 4096 (Windows Vista 以降のバージョンのWindows) と 512 (Windows Server 2003、Windows XP、Windows 2000) です。 文字列の置換後、INF ファイル文字列の最大長 (文字数) は 4096 (終端の NULL 文字を含む) になります。

Examples

次の例は、英語圏の国/地域でのインストール用に、システムが提供するロケール固有の dvd.inf の Strings セクションのフラグメントを示しています。

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

文字列連結の例を次に示します。

[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."

参照

DDInstall

DDInstall。CoInstallers

DDInstall。HW

DDInstall。インターフェイス

DDInstall。サービス

製造元

InterfaceInstall32

モデル

SourceDisksNames

バージョン