次の方法で共有


INF Strings セクション

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

エントリ

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

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

"* 先頭または末尾の空白を含む文字列* " |

"very-long-multiline-string" |

"string-with-semicolon" |

"string-ending-in-backslash" |

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

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

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

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

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

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

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

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

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

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

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

解説

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

単一の国際INFファイルを作成するために、INFは、正式な構文文に示されるように、ロケール固有の Strings.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) の第 1 言語 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 ファイルには、 LanguageID 値ごとに 1 つの Strings.LanguageID セクションと 1 つの Strings セクションのみを含めることができます。

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

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

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

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

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

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

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

Strings セクションはすべての INF ファイルの最後のセクションですが、 Strings セクションで定義されている %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ファイル文字列の最大文字数は、終端の NULL 文字を含む 4096文字です。

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

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

DDInstall.Services

メーカー

InterfaceInstall32

Models

SourceDisksNames

Version