INF Manufacturer Section
Manufacturer章节用于识别这样一些厂商,该厂商的一个或者多个设备能够使用该inf文件进行安装。
该章节的语法结构为:
[Manufacturer]
manufacturer-identifier
[manufacturer-identifier]
[manufacturer-identifier]
下面分别对该语法条目进行详细说明:
manufacturer-identifier (厂商标识):
该标识唯一确定一个厂商和inf文件的一个章节,该章节包含有确定厂商的设备类型的信息。每一个厂商标识条目必须独占一行(即每个标识不能分成两行来些,一行中也不能有多个标识),并且使用下面的格式来描述:
manufacturer-name |
%strkey%=models-section-name |
%strkey%=models-section-name [,TargetOSVersion] [,TargetOSVersion] ... (用于XP以及以后版本)
这些条目的解释如下:
manufacturer-name :
该条目确定设备的厂商,并且在inf文件中必须有一个相应的同样的名字的Models章节。(以这种方式提供的条目将不能被本地化。(?——这是什么意思呢))
strkey :
指定一个在inf文件中唯一的记号来描绘厂商的名称。每个类似的%strkey%记号必须定义在inf文件的Strings章节中。
models-section-name :
在inf文件中为每一个厂商的Models章节指定一个inf创建者定义的名称。在名称在inf文件中必须是唯一的,并且必须遵循在inf文件一般语法规则中定义的确定章节名称规则。
TargetOSVersion :
适用于Windows XP以及以后的版本中。这指定了一个或者多个操作系统版本,和指定的Models章节组合被使用。安装程序会在Models章节中选择一个和操作系统版本最匹配的来执行。关于该修饰段的详细描述,请参考下面的注释。
注释
任何需要安装一个或者多个设备的INF文件必须拥有一个Manufacturer章节。一个IHV/OEM提供的INF文件在该章节中代表性的指定了一个唯一的条目。如果有多个条目被指定,那么每个条目必须在不同的行中。
正如在创建国际化INF文件和INF的String章节索引页中描述的,在国际化INF文件中使用%strkey%=models-section-name简化定位。
如果在一个INF文件中列出了一个或者多个manufacturer-name的格式条目,那么,每一个条目在INF文件的别处都有一个Models章节与之相应。
系统为设备类安装程序提供的INF文件中的Manufacturer章节有时也被称为“目录”,因为该章节为每一个厂商的设备模型类别的安装进行了设置。在INF的Manufacturer章节中的每个条目信息不仅简单的为厂商的名称用%strkey%记号来定位,而且为每个厂商在INF文件中指定了一个唯一的Models章节名称。
在基于NT技术的Windows XP以及以后版本的操作系统中,Manufacturer章节的所有条目都可以被装饰从而指定操作系统的版本。这意味着操作系统的不同版本会使用INF文件中的特定的Models章节。如果没有特殊的版本需求被指定,则安装程序会选择一个所有操作系统的所有版本都适用的Models章节。
下面就对TargetOSVersion的格式以及版本的装饰进行详细的说明:
NT[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.SuiteMask]]]]
其中每个域的单独解释如下:
NT
表明操作系统的版本支持与Windows XP以及以后的版本的操作系统。
Architecture
确定硬件平台,必须为x86或者ia64。
OSMajorVersion
表示操作系统主版本的数字。比如Windows XP,则该数字为5。
OSMinorVersion
表示操作系统次版本的数字。比如Windows XP,则该数字为1。
ProductType
表示VER_NT_xxxx标志之一的数字,该标志定义在winnt.h中,比如:
0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003 (VER_NT_SERVER)
只有当操作系统和指定的产品类型匹配时,该INF文件才被使用。如果该INF文件支持单个操作系统版本的多种产品类型的时候,则需要用多个TargetOSVersion条目来标识。
SuiteMask
表示VER_SUITE_xxxx标志的一个或者多个组合得到的数字,该标志定义在winnt.h中。这些标志包括:
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条目来标识。
如果在一个INF文件中的Manufacturer章节的条目拥有修饰字段,则必须包含和经过操作系统修饰的名称相匹配的Models章节。例如,如果一个INF文件中包含有如下的Manufacturer章节:
%FooCorp%=FooMfg, NT....0x80, NT
则在该INF中必须拥有类似如下名称的Models章节:
[FooMfg.NT....0x08] (仅仅支持Windows XP以及以后版本的数据中心版本)
[FooMfg.NT] (支持Windows XP以及以后版本的所有产品类型和套件)
在安装期间,如果是运行在包含数据中心产品套件的基于NT技术的操作系统版本(Windows XP或者以后版本),则安装程序会选择[FooMfg.NT....0x08] Models的章节。如果是运行在不包含数据中心套件的基于NT技术的操作系统版本,Windows XP或者以后版本上,则安装程序会选择[FooMfg.NT] Models的章节。
如果该INF文件特定为那些早于Windows XP并且基于NT技术的操作系统或者Windows 98/Me操作系统使用的,则在该INF文件中必须包含一个没有被修饰过的models章节名称[FooMfg]。
如果一个INF文件支持多个厂商,那么所有的厂商都必须遵循这个规则。
下面是由关于TargetOSVersion修饰的附加例子说明:
"Foo Corp." = FooMfg, NTx86
该例子中,合成得到的Models章节名称为[FooMfg.NTx86],适用于任何基于NT技术的x86版本的操作系统(Windows XP或者以后版本)。
"Foo Corp." = FooMfg, NT.7.8
在这个例子中,适用于基于NT技术,并且版本为7.8或者更高版本的操作系统,合成得到的Models章节名称为[FooMfg.NT.7.8]。对于那些早期版本的Windows XP系统,则使用[FooMfg]。
安装程序将采用下面的规则来选择哪个Models章节来使用:
l 如果在INF文件中的Models章节中有多个主要的或者次要的操作系统版本,安装程序将会选择一个不高于当前操作系统版本的最高版本的章节。
l 如果INF文件中和操作系统版本匹配的Models章节中又包含了产品类型或者/并且产品套件修饰,则安装程序会选择最接近于匹配当前系统的章节。
假设,例如,安装程序运行在没有数据中心产品套件的Windows XP(版本为5.1)上, 并且在Manufacturer章节中发现了下列的条目:
%FooCorp%=FooMfg, NT, NT.5, NT.5.5, NT....0x80
在这种情况下,安装程序将会寻找名称为[FooMfg.NT.5]的Models章节。(如果是在数据中心版本的Windows XP上运行,安装程序同样会选择的[FooMfg.NT.5]章节,这是因为特殊的版本数字优先于产品类型和套件掩码。)
如果想在INF中明析地排除一个特定的操作系统版本,产品类型,或套件,创建一个空的Model章节。例如,一个名为[FooMfg.NT.6.0]的空的Model章节将禁止在版本6.0和更高的版本上进行安装。
例子
这个例子演示了INF文件中单一厂商在Manufacturer章节的典型情况:
[Manufacturer]
%LogiMfg%=LogiMfg ; Models章节为LogiMfg
; ...
[Strings]
LogiMfg = "Logitech"
下面是Manufacturer章节的一部分,是一个典型的详细设备类安装的例子:
[Manufacturer]
%ADP%=ADAPTEC
; 中间省略了其他几个
%SONY%=SONY
%ULTRASTOR%=ULTRASTORE
接着的Manufacturer章节的例子则特定了x86的平台,Windows XP和更高版本的系统:
[Manufacturer]
%foo%=foosec,NTx86.5.1
[foosec.NTx86.5.1]
下面的两个例子演示了对不同的操作系统的版本对Models章节的应用:
例1:
[Manufacturer]
%MyName% = MyName,NTx86.5.1
.
.
[MyName]
%MyDev% = InstallA,hwid
.
.
[MyName.NTx86.5.1]
%MyDev% = InstallB,hwid
.
.
.
[InstallA.ntx86] ; Windows 2000 (NT4-x86 也会试图
. ; 分析该章节,没有工作区(?什么意思呢))
.
.
[InstallA] ; Win98/WinME (Win95 也会试图
. ; 分析该章节, 没有工作区(?什么意思呢))
. ; NT4-Alpha 也会试图分析该章节
. ; 除非INF有一个[InstallA.ntalpha]的章节。
.
.
[InstallB] ; Windows XP和更高版本, 只适用于x86
.
.
例2:
[Manufacturer]
%MyName% = MyName,NT.6.0,NTx86.5.1
.
.
[MyName.NT.6.0] ;空的章节, 因此,该INF不支持
. ; NT 6.0和更高的版本的
.
.
[MyName.NTx86.5.1] ; 适用于Used for NT 5.1和更高的版本
. ; (但是不适用于NT 6.0,因为NT.6.0是空的)
%MyDev% = InstallB,hwid
.
.
[MyName] ;空的章节, 所以该INF不支持
. ; Win9x/NT4/Win2000
.
.
本文地址:http://com.8s8s.com/it/it803.htm