INF Manufacturer 區段
[製造商] 區段會識別可使用 INF 檔案安裝的一或多個裝置製造商。
[Manufacturer]
manufacturer-identifier
[manufacturer-identifier]
[manufacturer-identifier]
...
項目
manufacturer-identifier
唯一識別製造商和 INF 區段,其中包含識別製造商裝置型號的資訊。 每個 製造商識別碼 項目都必須存在於個別行,並使用下列格式:
manufacturer-name |
%strkey%=models-section-name |
%strkey%=models-section-name [,TargetOSVersion] [,TargetOSVersion] ... (Windows XP and later versions of Windows)
這些項目定義如下:
manufacturer-name
識別裝置的製造商。 INF 也必須包含相同名稱的對應 INF 模型 區段 。 製造商名稱的最大長度,以字元為單位,是LINE_LEN。 (無法本地化以這種方式指定的專案。
strkey
指定代表製造商名稱之 INF 檔案內的唯一令牌。 每個這類 %strkey% 令牌都必須定義在 INF 檔案的 INF 字串區段中 。
models-section-name
指定 INF 檔案中個別製造商 INF 模型區段的 INF 寫入器定義名稱。 此值在 INF 檔案中必須是唯一的,而且必須遵循定義區段名稱的一般規則。 如需這些規則的詳細資訊,請參閱 INF 檔案的一般語法規則。
TargetOSVersion
指定可以使用各種 INF 模型 區段的一或多個目標作業系統版本。 Windows 選擇最符合其執行作業系統版本的 INF 模型 區段。
如需 TargetOSVersion 裝飾的描述,請參閱下列一節,以及下方範例 3 中的相關信息。
重要
從 Windows Server 2003 SP1 開始,INF 檔案必須針對非 x86 目標操作系統版本裝飾 INF 製造商區段中的 models-section-name 專案,以及相關聯的 INF Models 區段名稱。 x86 型目標操作系統版本的 INF 檔案中不需要這些平臺延伸模組,但建議使用。
備註
任何安裝一或多個裝置的 INF 檔案都必須具有 [製造商] 區段。 IHV/OEM 提供的 INF 檔案通常只會指定本節中的單一專案。 如果指定多個專案,每個專案都必須位於 INF 的個別行上。
使用 %strkey%=models-section-name 專案可簡化國際市場 INF 檔案的當地語系化,如建立國際 INF 檔案和 INF 字串一節的參考頁面中所述。
如果 INF 檔案以製造商名稱格式指定一或多個專案,則每個這類專案都會隱含地指定 INF 中其他地方對應 Models 區段的名稱。
您可以將每個系統提供的 INF 檔案 的 Manufacturer 區段視為目錄,因為本節會設定每個製造商裝置型號的 裝置安裝類別。 INF 檔案 的 [製造商 ] 區段中的每個專案都會針對製造商的名稱指定容易本地化的 %strkey% 令牌,以及唯一到 INF 每一製造商 型號 區段名稱。
[製造商] 區段中的 models-section-name 專案可以裝飾,以指定目標操作系統版本。 您可以為不同版本的作業系統指定不同的 INF 模型 區段 。 指定的版本表示使用 INF 模型 區段的作業系統版本。 如果未指定任何版本,Windows 會針對所有作業系統的所有版本使用指定的 Models 區段。
針對 Windows XP 到 Windows 10 版本 1511,TargetOSVersion 裝飾的格式如下所示:
NT[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.SuiteMask]]]]
從 Windows 10 版本 1607 (組建 14310 和更新版本)開始,TargetOSVersion 裝飾的格式如下所示:
NT[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.[SuiteMask][.[BuildNumber]]]]]
每個欄位的定義如下:
NT
指定目標作業系統是以 NT 為基礎。 Windows 2000 和更新版本的 Windows 都是以 NT 為基礎的。
架構
識別硬體平臺。 如果指定,這必須是 x86、ia64、amd64、arm 或 arm64。
在 Windows Server 2003 SP1 之前,如果未 指定架構 ,相關聯的 INF 模型 區段可以搭配任何硬體平臺使用。
從 Windows Server 2003 SP1 開始,必須在非 x86 目標作業系統版本的 INF 模型區段名稱中指定架構。 架構在 x86 型目標操作系統版本的 INF 模型 區段名稱中是選擇性的,但建議使用。
OSMajorVersion
代表操作系統主要版本號碼的數位。 下表定義 Windows 作業系統的主要版本。
注意
若要區分 INF 檔案中的特定 Windows 10 和 11 版本,您必須使用 BuildNumber (請參閱下方)。
Windows 版本 | 主要版本 |
---|---|
Windows 11 (所有版本) | 10 |
Windows Server 2022 | 10 |
Windows Server 2019 | 10 |
Windows Server 2016 | 10 |
Windows 10 (所有版本) | 10 |
Windows Server 2012 R2 | 6 |
Windows 8.1 | 6 |
Windows Server 2012 | 6 |
Windows 8 | 6 |
Windows Server 2008 R2 | 6 |
Windows 7 | 6 |
Windows Server 2008 | 6 |
Windows Vista | 6 |
Windows Server 2003 R2 | 5 |
Windows Server 2003 | 5 |
Windows XP | 5 |
Windows 2000 | 5 |
OSMinorVersion
數位,表示操作系統的次要版本號碼。 下表定義 Windows 作業系統的次要版本。
Windows 版本 | 次要版本 |
---|---|
Windows 11 (所有版本) | 0 |
Windows Server 2022 | 0 |
Windows Server 2019 | 0 |
Windows Server 2016 | 0 |
Windows 10 (所有版本) | 0 |
Windows Server 2012 R2 | 3 |
Windows 8.1 | 3 |
Windows Server 2012 | 2 |
Windows 8 | 2 |
Windows Server 2008 R2 | 1 |
Windows 7 | 1 |
Windows Server 2008 | 0 |
Windows Vista | 0 |
Windows Server 2003 R2 | 2 |
Windows Server 2003 | 2 |
Windows XP | 1 |
Windows 2000 | 0 |
ProductType
數位,表示 Winnt.h 中定義的其中一個VER_NT_xxxx旗標,如下所示:
0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003(VER_NT_SERVER)
如果指定了產品類型,則只有在操作系統符合指定的產品類型時,才會使用 INF 檔案。 如果 INF 支援單一操作系統版本的多個產品類型,則需要多個 TargetOSVersion 專案。
SuiteMask
數位,表示 Winnt.h 中定義的一或多個VER_SUITE_xxxx旗標的組合。 這些旗標包括下列各項:
0x00000001(VER_SUITE_SMALLBUSINESS)
0x00000002 (VER_SUITE_ENTERPRISE)
0x00000004 (VER_SUITE_BACKOFFICE)
0x00000008 (VER_SUITE_COMMUNICATIONS)
0x00000010 (VER_SUITE_TERMINAL)
0x00000020 (VER_SUITE_SMALLBUSINESS_RESTRICTED)
0x00000040 (VER_SUITE_EMBEDDEDNT)
0x00000080 (VER_SUITE_DATACENTER)
0x00000100 (VER_SUITE_SINGLEUSERTS)
0x00000200 (VER_SUITE_PERSONAL)
0x00000400 (VER_SUITE_SERVERAPPLIANCE)
如果指定了一或多個套件遮罩值,則只有在操作系統符合所有指定的產品套件時,才會使用 INF。 如果 INF 支援單一操作系統版本的多個產品套件群組,則需要多個 TargetOSVersion 專案。
BuildNumber
數位,表示從組建 14310 或更新版本開始,該區段適用的 Windows 版本最小 OS 組建編號。
組建編號假設僅相對於某些特定的OS主要/次要版本,而且可能會針對某些未來的OS主要/次要版本重設。
只有在 TargetOSVersion 主要 /次要版本的 OS 與目前的 OS (或 AltPlatformInfo) 版本完全相符時,才會評估 TargetOSVersion 裝飾所指定的任何組建編號。 如果目前的OS版本大於TargetOSVersion裝飾所指定的OS版本(OSMajorVersion,OSMinorVersion),則不論指定的組建編號為何,區段都會被視為適用。 同樣地,如果目前的OS版本小於 TargetOSVersion 裝飾所指定的 OS 版本,則區段不適用。
如果提供組建編號,則 TargetOSVersion 裝飾的 OS 版本和 BuildNumber 必須大於操作系統版本,以及第一次引進此裝飾的 Windows 10 組建 14310 組建組建編號。 沒有這些變更的舊版操作系統(例如,Windows 10 組建 10240)將不會剖析未知的裝飾,因此嘗試以這些舊版組建為目標實際上會防止 OS 考慮裝飾是否有效。
下表定義 Windows 作業系統的組建編號。
Windows 版本 | 建立編號 |
---|---|
Windows 11 版本 23H2 | 22631 |
Windows 11 版本 22H2 | 22621 |
Windows 11 版本 21H2 | 22000 |
Windows Server 2022 | 20348 |
Windows 10 版本 22H2 | 19045 |
Windows 10 版本 21H2 | 19044 |
Windows 10 版本 21H1 | 19043 |
Windows 10 版本 20H2 | 19042 |
Windows 10 版本 2004 | 19041 |
Windows 10 版本 1909 | 18363 |
Windows 10 版本 1903 | 18362 |
Windows Server 2019 | 17763 |
Windows 10 1809 版 | 17763 |
Windows 10 1803 版 | 17134 |
Windows 10 版本 1709 | 16299 |
Windows 10 版本 1703 | 15063 |
Windows Server 2016 | 14393 |
Windows 10 1607 版 | 14393 |
如需 TargetOSVersion 裝飾的詳細資訊,請參閱結合平臺延伸模組與操作系統版本。
重要
強烈建議您一律使用 Windows XP 或更新版本的 Windows 操作系統的平臺擴充功能,裝飾製造商和型號區段中的 models-section-name 專案。 針對以 x86 為基礎的硬體平臺,您應該避免使用 。NT 平臺延伸模組並使用 。請改用 NTx86 。
如果您的 INF 包含具有裝飾的製造商區段專案,它也必須包含符合操作系統裝飾名稱的 INF 模型區段。 例如,如果 INF 包含下列 Manufacturer 區段:
%FooCorp%=FooMfg,NTx86....0x80,NTamd64
然後 INF 也必須包含 具有下列名稱的 INF 模型 區段 :
[FooMfg.NTx86....0x80]
此名稱適用於 x86 型硬體平臺上的 Windows XP 和更新版本的 Windows 資料中心套件。
[FooMfg.NTamd64]
此名稱適用於 x64 型硬體平臺上所有 Windows XP 和更新版本的 Windows 產品類型和套件。
在安裝期間,Windows 會以下列方式選取 INF 模型 區段 :
如果 Windows 是以 x86 為基礎的作業系統版本(Windows XP 或更新版本)中執行,其中包含資料中心產品套件,Windows 會 選取 [FooMfg.NTx86...]。0x80] Models 區 段。
如果 Windows 在任何產品套件的 x64 型作業系統版本 (Windows XP 或更新版本) 中執行,Windows 會選取 [FooMfg.NTamd64] Models 區段。
如果 INF 是要與 Windows XP 之前的作業系統版本搭配使用,它也必須包含名為 [FooMfg] 的未編碼 Models 區段。
如果 INF 支援多個製造商,則必須針對每個製造商遵循這些規則。
以下是 TargetOSVersion 裝飾的其他範例:
%FooCorp% = FooMfg,NTx86
在此範例中,產生的 INF Models 區段名稱為 [FooMfg.NTx86],適用於任何 x86 版本的作業系統(Windows XP 或更新版本)。
%FooCorp% = FooMfg, NT.7.8
在此範例中,針對操作系統 7.8 版和更新版本,產生的 INF Models 區段名稱為 [FooMfg.NT.7.8]。 若是舊版的操作系統,例如 Windows XP,則會使用 [FooMfg.NT]。
安裝程式要使用的 INF 模型 區段選取專案是以下列規則為基礎:
如果 INF 包含 數個主要或次要操作系統版本號碼的 INF 模型 區段 ,Windows 會使用版本號碼高於安裝所在操作系統版本的最高版本號碼區段。
如果符合操作系統版本的 INF 模型 區段也包含產品類型和/或產品套件裝飾,Windows 會選取最符合執行中操作系統的區段。
例如,假設 Windows 在 Windows XP(5.1 版)上執行,而沒有數據中心產品套件,它會在 Manufacturer 區段中找到下列專案:
%FooCorp%=FooMfg,NT,NT.5,NT.5.5,NT....0x80
在此情況下,Windows 會尋找名為 [FooMfg.NT.5] 的 INF 模型區段。 如果 Windows XP 在資料中心版本的 Windows XP 上執行,Windows 也會使用 [FooMfg.NT.5] 區段,因為特定版本號碼的優先順序高於產品類型和套件遮罩。
如果您想要讓 INF 明確排除特定的作業系統版本、產品類型或套件,請建立空 的 INF 模型 區段。 例如,名為 [FooMfg.NTx86.6.0] 的空白區段禁止在 x86 型作業系統 6.0 版和更新版本上安裝。
範例
此範例示範 單一 IHV 的 INF 一般製造商 區段。
[Manufacturer]
%Mfg%=Contoso,NTamd64 ; Models section == Contoso
[Contoso.NTamd64]
; ...
[Strings]
Mfg = "Contoso, Ltd."
下一個 範例顯示裝置類別特定安裝程式的 INF 一般製造商 區段的一部分:
[Manufacturer]
%CONTOSO%=Contoso_Section,NTamd64
; several entries omitted here for brevity
%FABRIKAM%=Fabrikam_Section,NTamd64
%ADATUM%=Adatum_Section,NTamd64
下列範例顯示 x86 平臺、Windows XP 和更新版本專屬的 Manufacturer 區段:
[Manufacturer]
%foo%=foosec,NTx86.5.1
[foosec.NTx86.5.1]
下列範例顯示 x64 平臺、Windows 10 組建 14393 和更新版本專屬的 Manufacturer 區段:
[Manufacturer]
%foo%=foosec,NTamd64.10.0...14393
[foosec.NTamd64.10.0...14393]
下列兩個範例顯示具有各種 OS 特定 INF 模型區段的基本架構 INF 檔案:
範例 1:
[Manufacturer]
%MyName% = MyName,NTx86.5.1
.
[MyName]
%MyDev% = InstallA,hwid
.
[MyName.NTx86.5.1]
%MyDev% = InstallB,hwid
.
[InstallA] ; Windows 2000
.
.
[InstallB] ; Windows XP and later, x86 only
.
範例 2:
[Manufacturer]
%MyName% = MyName,NTx86.6.0,NTx86.5.1,
.
[MyName.NTx86.6.0] ; Empty section, so this INF does not support
. ; NT 6.0 and later.
.
[MyName.NTx86.5.1] ; Used for NT 5.1 and later
. ; (but not NT 6.0 and later due to the NTx86.6.0 entry)
%MyDev% = InstallB,hwid
.
[MyName] ; Empty section, so this INF does not support
. ; Win2000
.
範例 3:
[Manufacturer]
%MyMfg% = MyMfg, NTamd64.6.1, NTamd64.10.0, NTamd64.10.0...14310
.
[MyMfg.NTamd64.6.1] ; Used for Windows 7 and later
. ; (but not for Windows 10 and later due to the NT.10.0 entry)
.
[MyMfg.NTamd64.10.0] ; Used for Windows 10
. ; (but not for Windows 10 build 14393 and later due to the NT.10.0...14393 entry)
.
[MyMfg.NTamd64.10.0...14393] ; Used for Windows 10 build 14393 and later
.
.
注意
指定多個 TargetOSVersions 時,請將它們串在一個專案中,如本範例所示。 請勿將每個目標表示為個別專案。