Previous Next

INF Manufacturer Section

[Manufacturer]
manufacturer-identifier
[manufacturer-identifier]
[manufacturer-identifier]
...
 

The Manufacturer section identifies the manufacturer of one or more devices that can be installed using the INF file.

Entries and Values

manufacturer-identifier
Uniquely identifies a manufacturer and an INF section containing information that identifies a manufacturer's device models. Each manufacturer-identifier entry must exist on a separate line and use the following format:

manufacturer-name |
%strkey%=models-section-name |
%strkey%=models-section-name [,TargetOSVersion] [,TargetOSVersion] ...    (Windows XP and later)

These entries are defined as follows:

manufacturer-name
Identifies the devices' manufacturer. The INF must also contain a corresponding INF Models section of the same name. (An entry specified in this manner cannot be localized.)
strkey
Specifies a token, unique within the INF, representing the name of a manufacturer. Each such %strkey% token must be defined in a Strings section of the INF file.
models-section-name
Specifies an INF-writer-defined name for the per-manufacturer INF Models section within the INF file. This value must be unique within the INF and must follow the general rules for defining section names. These rules are described in General Syntax Rules for INF Files.
TargetOSVersion
For Windows XP and later OS versions, this specifies one or more target operating system versions with which various INF Models sections can be used. Setup chooses the INF Models section that most closely matches the operating system version on which it is executing. For a description of this decoration, see the following Comments section.

Comments

Any INF file that installs one or more devices must have a Manufacturer section. An IHV/OEM-supplied INF file typically specifies only a single entry in this section. If multiple entries are specified, each entry must be on a separate line of the INF.

Using a %strkey%=models-section-name entry simplifies the localization of the INF file for the international market, as described in Creating International INF Files and the reference page for the INF Strings section.

If an INF file specifies one or more entries in the manufacturer-name format, each such entry implicitly specifies the name of the corresponding Models section elsewhere in the INF.

You can think of each system-supplied INF file's Manufacturer section as a table of contents, because this section sets up the installation of every manufacturer's device models for a device setup class. Each entry in an INF file's Manufacturer section specifies both an easily localizable %strkey% token for the name of a manufacturer and a unique-to-the-INF per-manufacturer Models section name.

For Windows XP and later versions of NT-based operating systems, entries in the Manufacturer section can be decorated to specify operating system versions. Different INF Models sections can be specified for different versions of the operating system. The specified versions indicate OS versions with which the INF Models sections will be used. If no versions are specified, Setup uses a specified Models section for all versions of all operating systems.

The format of TargetOSVersion, the version decoration, is as follows:

NT[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.SuiteMask]]]]

Each field is defined as follows:

NT
Operating system version recognition is supported for Windows XP and later versions of the NT-based operating system.
Architecture
Identifies the hardware platform. If specified, this must be x86 or ia64. If not specified, the associated INF Models section can be used with any hardware platform.
OSMajorVersion
A number representing the operating system's major version number. For Windows XP, this number is 5.
OSMinorVersion
A number representing the operating system's minor version number. For Windows XP, this number is 1.
ProductType
A number representing one of the VER_NT_xxxx flags defined in winnt.h, such as:

0x0000001 (VER_NT_WORKSTATION)
0x0000002 (VER_NT_DOMAIN_CONTROLLER)
0x0000003 (VER_NT_SERVER)

If a product type is specified, the INF will be used only if the operating system matches the specified product type. If the INF supports multiple product types for a single OS version, multiple TargetOSVersion entries are required.

SuiteMask
A number representing a combination of one or more of the VER_SUITE_xxxx flags defined in winnt.h. These flags include:

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)

If one or more suite mask values are specified, the INF will be used only if the operating system matches all of the specified product suites. If the INF supports multiple product suite combinations for a single OS version, multiple TargetOSVersion entries are required.

If your INF contains Manufacturer section entries with decorations, it must also include Models sections with names that match the OS decorations. For example, if an INF contains the following Manufacturer section:

%FooCorp%=FooMfg, NT....0x80, NT

Then the INF must also contain Models sections with the following names:

[FooMfg.NT....0x08] (Valid for Windows XP and later, Data Center only)

[FooMfg.NT] (Valid for Windows XP and later, all product types and suites)

During installation, Setup will use the [FooMfg.NT....0x08] Models section if it is running on any NT-based operating system version (Windows XP or later) that includes the Data Center product suite. If Setup is running on any NT-based operating system version, Windows XP or later, that does not include the Data Center product suite, Setup will use the [FooMfg.NT] Models section.

If the INF is intended for use with NT-based OS versions earlier than Windows XP, or for use with Windows 98/Me operating systems, it must also contain an undecorated models section named [FooMfg].

If an INF supports multiple manufacturers, these rules must be followed for each manufacturer.

Following are additional examples of TargetOSVersion decorations:

%FooCorp% = FooMfg, NTx86

For this example, the resultant Models section name is [FooMfg.NTx86], and is applicable for any x86 version of the NT-based operating system (Windows XP or later).

%FooCorp% = FooMfg, NT.7.8

In this case, for version 7.8 and later of the NT-based OS, the resultant Models section name is [FooMfg.NT.7.8]. For earlier versions such as Windows XP, [FooMfg] is used.

Setup's selection of which Models section to use is based on the following rules:

Suppose, for example, Setup is executing on Windows XP (version 5.1), without the Data Center product suite, and it finds the following entry in a Manufacturer section:

%FooCorp%=FooMfg, NT, NT.5, NT.5.5, NT....0x80

In this case, Setup will look for a Models section named [FooMfg.NT.5]. (Setup will also use the [FooMfg.NT.5] section if it is executing on a DataCenter version of Windows XP, because a specific version number takes precedence over the product type and suite mask.)

If you want an INF to explicitly exclude a specific OS version, product type, or suite, create an empty Models section. For example, an empty section named [FooMfg.NT.6.0] will prohibit installation on OS versions 6.0 and higher.

Examples

This example shows a Manufacturer section typical to an INF for a single IHV.

[Manufacturer]
%LogiMfg%=LogiMfg        ; Models section == LogiMfg
 
; ...
[Strings]
LogiMfg = "Logitech"
 

The next example shows part of a Manufacturer section typical to an INF for a device-class-specific installer:

[Manufacturer]
%ADP%=ADAPTEC
; several entries omitted here for brevity
%SONY%=SONY
%ULTRASTOR%=ULTRASTORE

The following example shows a Manufacturer section that is specific to x86 platforms, Windows XP and later:

[Manufacturer]
%foo%=foosec,NTx86.5.1

[foosec.NTx86.5.1]

The following two examples show skeletal INF files with a variety of OS-specific Models sections:

Example 1:

[Manufacturer]
%MyName% = MyName,NTx86.5.1
.
.
[MyName]
%MyDev% = InstallA,hwid
.
.
[MyName.NTx86.5.1]
%MyDev% = InstallB,hwid
.
.
.
[InstallA.ntx86]   ; Windows 2000 (NT4-x86 will also try
.                  ; to parse this section, no workaround)
.
.
[InstallA]         ; Win98/WinME (Win95 will also try
.                  ; to parse this section, no workaround)
.
.
[InstallB]         ; Windows XP and later, x86 only
.
.

Example 2:

[Manufacturer]
%MyName% = MyName,NT.6.0,NTx86.5.1
.
.
[MyName.NT.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 due to the NT.6.0 entry)
%MyDev% = InstallB,hwid
.
.
[MyName]           ; Empty section, so this INF does not support
.                  ; Win9x/NT4/Win2000
.
.

See Also

Models, Strings