Specification for Using PCI IDs in Windows
Updated: August 4, 2000
File name: pciidspec-11.doc
About This Download
On This Page
This specification describes the use of PCI IDs by Microsoft Windows operating systems and highlights why these IDs are critical in providing a true Plug and Play experience to Windows users. It also explains the rules associated with assigning IDs and provides examples of ID assignments for plug-in cards, motherboard implementations, and chipset integrations. In addition, it provides the testing criteria applied by Windows Hardware Quality Labs (WHQL) for the Microsoft Windows Logo program for hardware.
This specification includes and expands upon the PCI Local Bus Specification, Version 2.2. For detailed information on the location of IDs referenced in this specification, see PCI 2.2.
This specification does not currently cover AC97 devices or riser cards.
For information about obtaining a PCI Vendor ID, or to obtain the PCI 2.2 specification, see http://www.pcisig.com/
For more information about other issues related to PCI implementations for Windows operating systems, see PCI Technology.
Definition of Terms
This document uses multiple acronyms and terms, as defined in this section.
Class Code - CC (24-bit value located at offset 9, divided into Base Class, Sub-Class, and Programming interface)
Device ID - DID (16-bit value located at offset 2)
PCI device - refers to an electrical component that conforms to the PCI specification
Revision ID - REV (8-bit value located at offset 8)
Subsystem ID - SID (16-bit value located at offset 2E)
Subsystem Vendor ID - SVID (16-bit value located at offset 2C)
Vendor ID - VID (16-bit value located at offset 0)
Using PCI IDs with Windows
The Microsoft Windows family of operating systems including Windows 95/98/Me, Windows 2000, Windows XP, and later versions of these operating systems use combinations of six PCI values to create an ID that is unique to the device. The operating system reads and concatenates the VID, DID, SID, SVID, REV, and CC to create a multiple ID assignment for each device.
The ID assignment will range from using all six components to using only the CC component, such as for bridges. The operating system will use these IDs to install (or not install) drivers, install different or special versions of drivers, identify broken devices or specific implementations of devices, apply any exception processing required, detect the presence of a new device, or remove a device.
The operating system follows this sequence to find and use the IDs:
The operating system inherently relies on the IDs of devices. A change in any of the IDs of a device between boots or sleep/resume cycles can have devastating effects. A change in an SID when resuming from sleep would, at a minimum, trigger a Plug and Play event. The operating system would detect the new device ID and install a new instance of the device; a best-case example would be that the same driver is loaded for this instance. However, if the device had a custom driver or exceptions had been applied, adverse effects would occur; a worst-case example would be if the SID of the primary video controller changed during a resume, causing a surprise removal of the device that has a driver loaded. A race condition would result between the loaded driver being unloaded and the new driver being loaded, which would cause the system to hang.
Note: The INF file parsing code for Windows 95 (original and OEM Service Releases) will stop searching INF files once a match is found. If the DID&VID entry in an INF file is found before the DID&VID&SID&SVID entry is found, only the driver associated with the DID&VID entry will be loaded.
Rules for Assigning SIDs and SVIDs for Plug-in Cards
There is one simple rule to be applied when assigning the SID and SVID for PCI and Mini PCI plug-in cards:
It is required that all new card designs must have a new, unique SID assigned by the card manufacturer.
A new card design is defined as any design that incorporates new devices requiring any circuit board or supporting component changes.
Changes that Require an Update of the SID for Plug-in Cards
Some events require the SID of a card to be updated. Use the following guideline to determine whether an updated SID is needed:
If anything changes external to the PCI devices (chips) on the plug-in card, then the SID must be updated.
Note: A change in a chip on a card does not require a change in SID; however, an installation of an updated chip that has followed the ID rules for devices can cause a change of the driver for that chip due to a new ID being readfor example, if the REV changed from 1 to 2.
Examples of when SID updates are needed:
The following are examples of SID and SVID assignments for add-on cards using different manufacturers and devices.
Example: Add-on video card produced by manufacturer AAAA, using a device produced by company DDDD
Example: Multifunction network/modem add-on card produced by manufacturer AAAA, using devices from company CCCC
Example: Multifunction network/modem add-on card produced by manufacturer AAAA, using devices manufactured by AAAA
Example: Multifunction network/modem add-on card produced by manufacturer AAAA, using devices from companies CCCC and DDDD
Rules for Assigning SIDs for Devices Integrated on a Motherboard
There is one simple rule to be applied when assigning the SID and SVID for PCI devices integrated on a motherboard.
It is required that all new motherboard designs have a new, unique SID assigned by the manufacturer.
Note: It is recommended that all integrated devices on a motherboard are assigned the same SID value.
The operating system relies on being able to uniquely identify a device and each implementation of that device. For example, for form factor reasons, computer manufacturer AAAA decides not to connect the USB controller integrated in the south bridge of a specific design (a popular south bridge in current production). They inadvertently leave the pins as "no connects," causing an interrupt storm under a certain condition. They ship 700,000 systems before the problem is discovered. In order to apply a fix for the Windows operating system that does not adversely affect every component using the south bridge, the device and implementation must be able to be uniquely identified.
Example: SID and SVID assignments of a motherboard produced by manufacturer AAAA, using devices produced by the companies CCCC, DDDD, EEEE, and TTTT
Changes that Require an Update of the SID for Motherboards
Some events require the SID of a motherboard to be updated. Use the following guideline to determine whether an updated SID is needed:
If anything changes external to the PCI devices (chips) on the motherboard, then the SID of all devices must be updated.
Note: A change in a chip on a motherboard does not require a change in SID. However, an installation of an updated chip that has followed the ID rules for devices can cause a change of the driver for that chip due to a new Plug and Play ID being read, for example, if the REV value changed from 1 to 2.
Examples of when updates are needed:
Rule for Assigning VIDs for PCI Devices
The VID is always the Vendor ID assigned by the PCI SIG for the device (chip) manufacturer.
Rule for Assigning DIDs for PCI Devices
The DID is a value assigned by the device manufacturer that, in conjunction with the VID and REV values, uniquely identifies the PCI device.This number must be tracked by the device manufacturer and never used again in combination with the VID.
Changes that Require a DID Update
Examples of when updates are needed:
Rules for Assigning and Updating the REV for PCI Devices
The REV is a value assigned by the device manufacturer that identifies the revision number of the device.
The REV must be updated if any rules in the following section apply to changes made to the device.
Changes that Require an Update of the REV for PCI Devices
Examples of when updates are needed:
The following are examples of REV and DID assignments for integrating devices into an existing multifunction package.
Example: REV and DID assignments for a network device being integrated into a multifunction package already containing USB, ATA, and video devices by device manufacturer CCCC
Example: REV and DID assignments for adding another USB device into a multifunction package already containing USB, ATA, and video devices by device manufacturer CCCC
Rules for Assigning CCs for PCI Devices
CC assignments must comply with to the PCI 2.2 specification.
Windows Logo Program Test Criteria and Driver Requirements for PCI IDs
The following are test criteria that WHQL will use to develop tests for the Windows Logo Program for hardware:
This specification provides a hardware baseline that WHQL will use for testing. The driver requirements and rules are provided by the PCI ID requirements for PCI drivers published by Microsoft.