CSDN博客

img flyelf

INF Manufacturer Section

发表于2004/6/13 16:00:00  1292人阅读

分类: mfc

 

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章节有时也被称为“目录”,因为该章节为每一个厂商的设备模型类别的安装进行了设置。在INFManufacturer章节中的每个条目信息不仅简单的为厂商的名称用%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
.
.

 

0 0

相关博文

我的热门文章

img
取 消
img