共用方式為


INF 檔案的一般語法規則

INF 檔案是組織成具名區段的文本檔。 某些區段具有系統定義的名稱,有些區段的名稱是由 INF 檔案的寫入器所決定。

每個區段都包含由裝置安裝元件解譯的區段特定項目。 某些項目開頭為預先定義的關鍵詞。 這些項目稱為 指示詞

某些 INF 檔案專案基本上是特定用途,從某個區段到另一個區段的指標。 例如, INF AddReg 指示詞 會識別區段,其中包含指示 Windows 修改登錄的專案。 這些項目有時會包含 Windows 在安裝期間解譯的其他自變數(必要或選擇性)。

其他 INF 檔案專案不會指向其他區段,但提供 Windows 在安裝期間使用的資訊,例如檔名、登錄值、硬體設定資訊、旗標等等。 例如, INF DriverVer 指示詞 會提供驅動程式版本資訊。

當 Windows 開始安裝時,它會先尋找 INF 版本區段來驗證 INF 檔案的有效性。 然後,它會尋找 INF Manufacturer 區段來啟動安裝。 本節包含 INF 模型 區段的指示詞,其接著會根據所安裝裝置的硬體標識碼,提供導致各種 INF DDInstall 區段的指示詞。

下列語法規則會控管 INF 檔案的必要和選擇性內容、使用字串標記的區段名稱格式,以及行格式、接續和批註。

區分大小寫

  • 區段名稱、專案和指示詞不區分大小寫。 例如, 版本版本版本 在 INF 檔案中同樣有效區段名稱規格。

必要和選擇性內容

  • 任何特定 INF 檔案中的必要和選擇性區段、專案和指示詞集取決於要安裝的裝置/驅動程式或元件類型。

  • 安裝任何特定裝置及其驅動程式所需的區段、區段專屬項目和指令的集合,某種程度上也依賴於對應的類別安裝程式(如果有的話)。 如需系統提供類別安裝程式如何處理裝置類型特定 INF 檔案的詳細資訊,請參閱 WDK 中的裝置類型特定檔。

  • 在語法定義中,選擇性條目會以 非粗體 的括弧 ([,]) 分隔。 另一方面, 方括弧 ([]) 是包含在其中之專案的必要元素。 在下列範例中,需要 Version 周圍的括弧,而 Class 類別=名稱 周圍的括號則表示這個項目是選擇性的。

    [Version]
    
    Signature="signature-name"
    [Class=class-name]
    ...
    

區段名稱

  • 區段可以依任何順序指定。 依慣例,大部分的 INF 檔案會依慣例列出區段,但 Windows 會依名稱尋找區段,而不是依 INF 檔案內的位置。

  • INF 檔案中的每個區段都是以方括弧 ([ ]) 括住的區段名稱開頭。 區段名稱可以是系統定義或 INF 寫入器定義。

    例如, [Manufacturer] 會指定系統命名 的Manufacturer 區段的開頭,而 [Std.Blob] 則代表特定的 INF 寫入器定義 Models 區 段名稱。

    區段名稱在 Windows 2000 和更新版本的 Windows 上長度上限為 255 個字元。

    每個區段都會在新的 [section-name] 開頭或檔案結尾標記結束。

  • 如果 INF 檔案中的多個區段具有相同的名稱,系統就會將其專案和指示詞合併成單一區段。

  • 除非它以雙引號字元 (“) 括住,否則 INF 寫入器定義的區段名稱必須是明確可見字元的唯一到 INF 未加上引號字串,不包括具有 INF 特定意義的特定字元。 特別是,指令項目或未加引號的區段名稱不能有開頭或結尾的空格、換行符號、回車符號或任何不可見的控制字符,並且不應該包含製表符。 此外,它不能包含方括號 ([ ]) 字元、單一百分比% () 字元、分號 (;;), 或任何內部雙引號 () 字元,而且不能有反斜杠 (\) 作為最後一個字元。

    例如,當 INF 檔案專案或指令參考時,Std.Mfg 和 Std_Mfg 是獨特且有效的區段名稱,但 Std;Mfg(其內部分號)是無效的,除非以雙引號(")括住。

    將 INF 寫入器定義的區段名稱指定為 引號字串 會覆寫先前在參考區段名稱中的字元所描述的大部分限制。 只要 INF 檔案中的對應區段完全符合這個引號字串,這類分隔區段名稱幾乎可以包含任何明確或隱含可見的字元,但右括號 (]) 除外。

    例如 ;;Std Mfg 是有效的區段名稱參考,如果 INF 檔案中的對應區段宣告與双引号內的名稱完全一致,包括其空格和分號字元,為 [;;Std Mfg]

使用字串令牌

  • INF 檔案中的許多值,包括 INF 寫入器定義的區段名稱,可以表示為格式 %strkey 的字串索引鍵%標記。 在 INF 檔案的 INF 字串區 段中,每個字串索引鍵都必須與由明確可見字元序列組成的字串值相關聯。 如有必要,安裝程式程式代碼會將字串值轉換成 Unicode。

    如需如何定義 %strkey% 令牌及其個別值的詳細資訊,請參閱 INF 字串的描述一節

行格式、接續和批注

  • 區段中的每個條目和指令都會以傳回字元或換行字元結尾。 因此,用來建立 INF 檔案的文字編輯器不得在一些任意、由編輯器決定的字元數目之後插入傳回字元或換行字元。

  • 反斜杠字元(\)可以作為條目或指令中明確的行延續符號。 不過,反斜杠字元也會用於路徑規格中。 若要確保出現在路徑規格中的反斜杠字元不會誤譯為行持續性程式,請使用下列策略:

    • 對於跨越兩行的指令,其中一行是包含反斜杠的項目,請使用引號括住包含反斜杠的項目。

      CopyFiles = "SomeDirectory\"\
      ,SomeFile
      
    • 請避免以下列範例所示的方式使用反斜杠字元。 Windows 會忽略第一個反斜杠,並將第二個反斜杠解譯為線條持續性器。

      CopyFiles = SomeDirectory\\
      ,SomeFile
      
    • 下列語法有效,相當於 CopyFiles = "SomeDirectory\",SomeFile ; comment

      CopyFiles = "SomeDirectory\"\ ; comment 
      ,SomeFile
      

      因為會忽略分號之後的文字, CopyFiles = "SomeDirectory\" ; comment ,SomeFile 因此無法運作。

  • 批注開頭為分號 (;) 字元。 剖析和解譯 INF 檔案時,系統會假設下列專案與安裝程序無關:

    • 除非分號出現在 quoted string%strkey% 標記內,否則相同行上的分號之後的任何字元
    • 任何只包含換行字元或傳回字元的空行
  • 逗號會分隔區段項目和指令中提供的值。

    INF 檔案專案或指示詞可以在值清單中間省略選擇性值,但逗號必須保留。 INF 檔案可以省略尾端逗號。

    例如,請考慮 SourceDisksFiles 區段專案的語法:

    檔名=diskid[[subdir][size]]

    省略 subdir 值但提供 大小 值的項目必須指定這兩個值的逗號分隔符,如下列範例所示:

    檔名=diskid,,size

    INF 檔案中省略兩個選擇性值的專案可以有下列格式:

    檔名=diskid

  • 若要在區段專案和指示詞中提供的值中包含百分比 (%) 字元,請以另一個百分比字元逸出百分比字元。

    例如,請考慮 [add-registry-section] 區段中 的這個語句:

    HKR,EventMessageFile,0x00020000,“%%SystemRoot%%\System32\IoLogMsg.dll”

    登錄值將會設定為以下值:

    %SystemRoot%\System32\IoLogMsg.dll

  • 若要在區段專案和指示詞中提供的值中包含雙引號 (“) 字元,請使用另一個雙引號字元逸出雙引號字元。 請注意,字串必須位於 引號字串內。

    例如,請考慮 [add-registry-section] 區段中 的這個語句:

    HKR,範例,,“顯示一個「example」字串”

    登錄值將設定為以下值:

    顯示「範例」字串

INF 大小限制

  • 在字串替代之前並包括結尾的 NULL 字元,INF 檔案欄位的長度上限(以字元為單位)為 4096。

  • 字串替代之後,INF 檔案字串的最大長度為 4096,其中包含終止的 NULL 字元。

  • 不過,請注意,即插即用 (PnP) 可能會對其辨識或使用的特定 INF 檔案欄位施加更嚴格的限制,例如裝置描述、驅動程式提供者和裝置製造商。