INF Requirements for 64-bit Systems
Changes to INF Requirements for the Windows Server 2003 Service Pack 1 Operating System
Updated: July 31, 2007
Windows Server 2003 SP1 and later versions of Windows do not install driver packages that have undecorated INF sections on x64-based systems. For compatibility with Intel Itanium systems, Windows Server 2003 SP1 will install driver packages that have undecorated INF sections; however, INF decorations are required by the Windows Logo Program for Hardware, so a driver package with undecorated INF sections cannot qualify for the logo.
This paper describes changes to INF requirements that affect device installation on non-x86-based 64-bit systems (Intel Itanium and AMD64). In this paper, "x64" refers to 64-bit architecture that is used in AMD64 and Intel Extended Memory 64 Technology systems.
On This Page
Windows XP introduced the ability to specify a TargetOsVersion decoration for the INF [Models] section name, although these decorations were not mandatory. Support for INF decorations for the Intel Itanium platform was introduced in Windows XP to support installation of device drivers on both 32-bit and 64-bit systems.
On Windows Server 2003 and earlier versions of Windows, when a user attempts to install a driver package with an undecorated INF file on an Itanium-based system, Plug and Play allows the attempt, because current INF syntax rules allow undecorated sections to be installed on all platforms. When the platform mismatch is detected on the service binary, the installation fails in an unintuitive way and it is unclear to the user why it failed.
Consumers do not necessarily understand the differences in 32-bit and 64-bit Windows operating systems or the differences among x64-based, Itanium-based, and x86-based architectures.
To protect users against attempting to install INF-based device driver packages on the wrong system platform and to help manufacturers avoid the associated support costs, INF syntax requirements have changed as follows for Windows Server 2003 SP1:
Important: The operating system will enforce this change for x64 versions of Windows Server 2003 SP1, beginning with Release Candidate 1. Manufacturers should update non-decorated INF files for all 64-bit platforms (x64 and Intel Itanium) as described in this paper.
How INF Decorations Affect Driver Package Installation
An INF section is considered to be decorated when its name contains a TargetOSVersionsuffix that identifies a particular platform and operating system. Decorated sections contain installation information that is relevant only to the platform and operating system that is specified by TargetOSVersion.
Installation Behavior for Windows Server 2003 and Earlier
This section describes how the operating system treats decorated and undecorated INFs during installation for the original release of Microsoft Windows Server 2003 and earlier versions of Windows. The following example shows how typical undecorated [Manufacturer] sections and [Models] section names might look in a device driver package INF file:
[Manufacturer] %mycompany% = MyCompanyModels [MyCompanyModels] %MyDev% = mydevInstall,mydevHwid
This example does not use TargetOsVersion decorations. Device matching syntax rules for Windows Server 2003 and earlier versions of Windows allow these statements to be parsed to install on any platform. Ideally, the user would not be given the choice of installing this device package unless it was certain that the package had the correct binary files, but this INF file would not prevent such an installation.
The following sample shows the same [Manufacturer] section and [Models] section name with a TargetOSVersion decoration that specifies the x64-based platform, where "x64" refers to the 64-bit architecture that is used in AMD64 and Intel Extended Memory 64 Technology systems. The .ntamd64 decoration in the INF is used for all x64-based systems.
[Manufacturer] %mycompany% = MyCompanyModels,NTamd64 [MyCompanyModels.NTamd64] %MyDev% = mydevInstall,mydevHwid
When this driver package is installed, the INF parser builds up a section name including the decoration, and then checks to see whether the section name applies to the platform being targeted. If so, then the INF parser looks for that section name within the INF and uses that section if it exists.
On Windows Server 2003 and earlier versions of Windows, if the decorated section does not exist, the INF parser then checks any undecorated sections for a match. Because these decorations are not commonly used, if there is a device match, Plug and Play would attempt to install the driver on the wrong platform.
Installation Behavior for Non-x86-Based 64-bit Platforms for Windows Server 2003 SP1 and Later
On Windows XP and the original release of Windows Server 2003, the INF parser uses the decorated section name if a decorated section name is specified; otherwise, it uses the undecorated section. However, in Windows Server 2003 SP1 and later versions, the INF parser does not look for undecorated section names on x64-based platforms.
On non-x86-based platforms running Windows Server 2003 SP1 and later versions, the INF parser requires the TargetOsVersion decoration for the [Models] section name. For example, if a user attempts to install an undecorated driver package on an x64-based system, PnP does not find a decorated [Models] section name and therefore does not try to match any device IDs.
Note: Storage drivers that use undecorated INFs will initially load using F6 but will generate bug check 7B when the system restarts for the last time after GUI Mode setup, because the F6 mechanism does not use SetupAPI logic to load the storage drivers. To install such drivers, either get a newer version of the driver that uses 64-bit INF decorations, or decorate the INF manually as described in "Installing Undecorated INFs on x64-based Systems" later in this article. It is not possible to recover from bug check 7B; instead, you must update the storage driver as described and restart the setup process by using F6.
Summary of Installation Behavior by Windows Platform
The following table summarizes the behavior of decorated and undecorated INFs on various platforms and Windows versions.
Table 1. INF Decorations and Installation Behavior by Platform and Operating System Version
• Device models within the corresponding INFs are found and matched for potential installation.
X Device models within the corresponding INF are not found; installation does not occur.
* Undecorated INFs for Itanium-based platforms are allowed to avoid breaking released driver packages. New driver packages for Itanium-based platforms must use decorated sections to qualify for the "Designed for Windows" Logo.
INF Files for Multiple Platforms
Multiple-platform INFs can be created by including decorated sections for x64- and Itanium-based systems and either undecorated or ntx86-decorated sections for x86-based systems.
Note: Driver packages with decorated INFs will not install on Windows 2000. Decorations were implemented for the first time on Windows XP.
Two approaches can be used to support driver packages for multiple platforms:
Method 1 is preferred, because at a minimum it requires only a single decoration on the [Models] section name. With Method 2, the INF parser provides the available syntax to decorate different sections and create a single INF. However, the resulting INF is more complex and might be more difficult to maintain.
The following example shows a multiple-platform INF.
[Manufacturer] %mycompany% = MyCompanyModels,NTx86,NTia64 [MyCompanyModels.NTx86] %MyDev% = mydevInstallx86,mydevHwid [MyCompanyModels.NTia64] %MyDev% = mydevInstallia64,mydevHwid
An INF can also include decorated CatalogFile entries in the [Version] section. For more information, see "Creating INF Files for Multiple Platforms and Operating Systems" in the Windows Driver Kit (WDK) documentation.
Installing Undecorated INFs on X64-based Systems
The following workarounds can be used to install undecorated INFs on x64-based systems. These workarounds are intended only for use on test systems and are not recommended for production drivers.
Method 1. Turn off the undecorated models check for AMD64. To turn off the undecorated models check for AMD64-based systems only, create the following non-zero numeric registry value:
HKLM\Software\Microsoft\Windows\CurrentVersion\Setup: REG_DWORD: DisableDecoratedModelsRequirement
Set the key to a non-zero value (such as 1) and restart the system, then install the driver.
Method 2: Edit the INF to add decorations. You can manually add decorations to the INF as described in this article or as shown by decorated INFs for other 64-bit driver packages. This will break the signature of a signed driver, but allow the driver to be installed (subject to the signed driver policy in effect on the local machine).
Checklist: Summary Actions for Driver Developers
[Manufacturer] section entries and [Models] section names of INFs must be decorated for driver packages to install on x64-based systems, and they should be decorated for Intel Itanium-based systems. These decorations are supported on all versions of Windows later than the original release of Windows XP; therefore, an INF decorated in this way will work on all released NT-based Windows operating systems for the respective non-x86-based platforms.
If Windows 2000 compatibility is required, then INF sections should remain undecorated, but can be decorated if the driver installation package is targeted for Windows XP or later.
Call to Action for INF Files for 64-bit Windows