Plug and Play Vendor and Device IDs

All non-BIOS enumerated devices must not use “PNP” in their vendor and device codes. Instead, the vendor must register with Extended Industry Standard Architecture (EISA) and have a vendor code assigned (for example, CTL for Creative Labs). The PNP vendor code is reserved for Microsoft and can be used only when defining a device’s CompatibleID after indicating the device’s HardwareID in the Plug and Play header.

Use of CompatibleIDs is strongly recommended for devices that use inbox device drivers, such as a “Standard PC COM Port” (PNP0500) or “Sound Blaster 16-compatible Sound Device” (PNPB003).

The following example output of a Plug and Play header from Isolate.exe is provided as a reference for the Microsoft Windows operating system.

Vendor ID: XXXFFFF

Serial Number: 00000001

Checksum (reported): 0x5E

PNP Version: 1.0

Vendor Ver.: 10

Device Description: IDE Port

Device ID: XXX0001

Doesn't Support I/O Range Checking

Vendor Defined Logical Device Control Registers:

None

Compatible Device ID: PNP0600

Device Description: IDE

Dependent Function 0

.

.

.

Dependent Function 1

.

.

.

End of Dependent Functions

When the user is installing devices that use this method, a dialog box appears at the beginning of the enumeration sequence to suggest use of the Windows 95 default driver. Windows 95 also provides the option of using a manufacturer-supplied disk in case the user wants to choose a manufacturer-supplied driver.

For multifunction adapters, you should supply an INF file that chooses the appropriate drivers (including default drivers) for all the adapter’s devices. This prevents additional dialog boxes from repeatedly requesting the default driver or a manufacturer’s disk for the remaining devices on the adapter.

When an INF file is used in this manner for default driver selection, it must link the HardwareID (XXX0000) to the appropriate compatible device driver from the Windows 95 distribution CD or installation disks. If this is not done, Windows 95 will continue to query the user for either the default driver or a new driver, thus defeating the purpose of using the INF file in this way.