INF 字串區段

INF 檔案至少必須有一個 Strings 區 段,才能定義該 INF 中其他地方指定的每個 %strkey% 權杖。

[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
指定字串,選擇性地使用雙引號字元分隔 (「) ,其中包含字母、數位、標點符號,甚至可能甚至某些隱含可見字元,特別是內部空格和/或定位字元。 不過,未加上引號的字串不能包含內部雙引號 (「) 、分號 (;) 、換行字元、傳回或任何不可見的控制字元,而且不能有反斜線 () 做為其最終字元。

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

very-long-multiline-string |

string-with-semicolon |

string-ending-in-backslash |

」double-quoted-string-value「
如果 %strkey% 標記符合下列任一準則,則指定給 %strkey% 標記的值 必須 以雙引號括住 (「) :

  • 如果指定的字串具有必須保留為值一部分的前置或尾端空白字元,該字串必須以雙引號字元括住,以防止 INF 剖析器捨棄其前置和/或尾端空白字元。

  • 如果長字串可能包含任何內部換行字元或傳回字元,因為文字編輯器中的換行,它也應該以雙引號括住,以防止在初始內部換行字元或傳回字元截斷字串。

  • 如果這類字串包含分號,則必須以雙引號括住,以防止在分號處截斷字串。 (如 INF 檔案的一般語法規則中所述,分號字元會在 INF files.) 開始每個批註

  • 如果這類字串以反斜線結尾,則必須以雙引號括住,以防止字串與下一個專案串連。 (INF 檔案的一般語法規則中所述,反斜線字元 () 會作為 INF 檔案中的行持續性程式使用。)

  • 如同未加上引號的字串規格,這類「引號字串」不能包含內部雙引號字元。 不過,您可以使用一或多個額外的雙引號字元組, (例如 「」some string「」) ,將它指定為明確雙引號字串值。

    INF 剖析器不僅會捨棄本節中任何「引號字串」的最外層雙引號,也會將每個後續的雙引號順序配對壓縮成單一雙引號字元。

    例如,剖析 「」「」some string「」 也會變成 「some string」。

為了總結,如果下列任一項為 true,任何字串都必須以雙引號字元組括住 (「) :

  • 字串包含開頭或尾端空白字元。
  • 字串太長,行會換行。
  • 字串包含分號或最終反斜線字元。
  • 字串本身是引號字串。

系統 INF 剖析器會捨棄最外層的雙引號字元組分隔這類字串,以及雙引號字串分隔符號以外的任何前置或尾端空白字元。

備註

由於系統 INF 剖析器會從任何定義 %strkey% 標記的quoted string移除最外層的雙引號,因此許多系統 INF 檔案會將所有 %strkey% 標記定義為quoted strings,以避免在 INF 剖析期間,意外遺失前置和尾端空白字元。 使用 引號字串也可確保無法截斷跨行換行的長字串值,而且具有結尾反斜線的字串不能串連至 INF 檔案中的下一行。

若要建立單一國際 INF 檔案,INF 可以有一組地區設定特定的 字串。LanguageID 區段,如正式語法語句所示。 LanguageID延伸模組是 4 位數的十六進位值, (沒有定義如下的前置 「0x」) :

  • 較低的 10 位包含主要語言識別項,而下一個 6 位則包含子語言識別項,如 Winnt.h中定義的 MAKELANGID 宏所指定。
  • 語言和子語言識別項必須符合 Win32 LANG_XXX的系統定義值,以及Winnt.h中定義的 SUBLANG_XXX常數。

例如, LanguageID 值為 0407 代表LANG_GERMAN (07) 的主要語言識別項,其子語言識別項為 SUBLANG_GERMAN (01) ,例如下列範例所示:

[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 檔案只能包含一個Strings區段,以及一個字串。每個LanguageID值的LanguageID區段。

Windows 會選取單一 Strings 區段,用來轉譯安裝的所有 %strkey% 權杖。 視特定電腦的目前地區設定而定,Windows 會以下列方式選取 Strings 區段:

  1. Windows 會先尋找 INF 中的 LanguageID 值,符合指派給電腦的目前地區設定。 如果找到完全相符的專案,Windows 就會使用該 字串。LanguageID INF 區段,可轉譯 INF 內定義的所有 %strkey% 權杖。

    您必須跨所有字串複製所有字串權杖*區段,甚至是不需要當地語系化的數值/固定常數。

  2. 否則,Windows 會尋找與 LANG_XXX 值的相符專案,並將 SUBLANG_NEUTRAL 的值當做 SUBLANG_XXX。 如果找到這類相符專案,Windows 會使用該 INF 區段來轉譯 INF 內定義的所有 %strkey% 權杖。

  3. 否則,Windows 會尋找與 LANG_XXX值的相符專案,以及相同 LANG_XXX系列的任何有效 SUBLANG_XXX。 如果找到這類部分相符專案,請使用 該字串。LanguageID INF 區段,可轉譯 INF 內定義的所有 %strkey% 權杖。

  4. 否則,Windows 會使用未編碼 的 Strings 區段來轉譯 INF 內定義的 %strkey% 權杖。

根據慣例,以及為了方便建立一組國際市場 INF 檔案, Strings 區段是所有系統 INF 檔案中的最後一個。 針對 INF 內所有使用者可見的字串值使用 %strkey% 標記,並將其放在每個地區設定 的 Strings 區段中,可簡化這類字串的轉譯。 如需地區設定特定 INF 檔案的詳細資訊,請參閱 建立國際 INF 檔案

雖然Strings 區段是每個 INF 檔案中的最後一個區段,但Strings區段中定義的任何指定 %strkey% 權杖都可以重複使用 INF 中的其他位置,特別是,不論該權杖的轉譯值是必要位置。 SetupAPI函式會將每個 %strkey% 權杖展開至指定的字串,然後使用該展開的值進行進一步的 INF 處理。

INF 檔案中 %strkey% 權杖的使用不限於使用者可見的字串值。 只要每個權杖都定義在 Strings 區段中,這些權杖可以方便 INF 寫入器使用。 例如,當您撰寫需要數個 GUID 規格的 INF 檔案時,使用有意義的名稱來取代每個 GUID 值,可能會方便建立每個 GUID 的 %strkey% 權杖。

在 INF 檔案的Strings區段中指定一組 %strkey% = 「{GUID}」值,需要您只輸入每個明確的 GUID 值一次。 這可協助提供比在整個 INF 檔案中使用明確 GUID 值更易讀的內部 INF 檔。

所有 %strkey% 權杖都必須定義在參考它們的 INF 檔案內。 因此,對於包含和需要專案的任何 INF 檔案,包含的 INF 必須有自己的Strings區段,才能定義該 INF 中所參考的所有 %strkey% 權杖。

在 INF 字串區 段中,替代字串的最大長度,包括終止的 Null 字元,是 4096 (Windows Vista 和更新版本的 Windows) 和 512 (Windows Server 2003、Windows XP 和 Windows 2000) 。 在字串替代之後,INF 檔案字串的最大長度為 4096,包括終止的 Null 字元。

範例

下列範例顯示來自系統提供地區設定特定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。硬體

DDInstall。介面

DDInstall。服務

製造商

InterfaceInstall32

模型

SourceDisksNames

版本