A VCOMM device (such as a COM port, LPT port, or modem) is installed into Windows 95 in one of the following ways:
Each installed VCOMM device is represented by two separate registry keys: one hardware key and one software key (also known as a "driver key").
The hardware key is located under the HKEY_LOCAL_MACHINE\Enum branch, along with hardware keys for all other devices that have been detected or enumerated in the system. Hardware keys for non-Plug and Play VCOMM devices are found under Enum\Root. Plug and Play device keys are found in their respective bus enumerator branches, for example, Enum\ISA, Enum\PCMCIA, Enum\PCI, and Enum\SERENUM. Examples of common Windows 95 VCOMM hardware keys are:
Enum\Root\*PNP0500\0000 | The first COM port detected by Setup, usually COM1. Subsequent detected COM ports would be enumerated as *PNP0500\0001, and so on. |
Enum\Root\*PNP0400\0000 | The first LPT port detected by Setup in the system, usually LPT1. |
Enum\Root\Ports\0000 | A manually installed port, either COM or LPT. |
Enum\SERENUM\PNP0F0A\ROOT&*PNP0500&0000 | A Plug and Play serial Microsoft Mouse, detected on port COM1 by SERENUM.VXD, the serial port bus enumerator. |
Enum\LPTENUM\ABC1234\ROOT&*PNP0400&0000 | A Plug and Play parallel port device, with Plug and Play device ID "ABC1234", detected on port LPT1 by LPTENUM.VXD, the parallel port bus enumerator. |
Hardware keys have a variety of subkeys and values. Most of these are created by the Plug and Play subsystem for its internal usage, and are common to all device classes. See the Plug and Play documentation for information about these. However, VCOMM stores two values in the hardware key for its use:
FriendlyName | User-readable description of the device, for example, "Communications Port (COM1)" or "Hayes compatible modem". Created either by the INF or by VCOMM. Can be used in device open calls to obtain a handle to the device. |
PortName | Short-style device port name, for example, "COM1" or "LPT1". These are assigned by VCOMM. It can be used in device open calls to obtain a handle to the device. |
When a VCOMM device is installed from an INF into Windows 95, its software key is created under HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class. For each installed COM or LPT port, there is a software key created under \ports, for example, \ports\0000. For each installed modem, there is a key under \modem; for example, \modem\0000. A pointer to a device's software key is stored in its hardware key as the value "Driver".
The software key contains subkeys and values installed by the device's INF file, class installer, and driver. The following values are common to all or most VCOMM devices in the software key:
ConfigDialog | Specifies the DLL called to service Win32 comm API functions CommConfigDialog, GetDefaultCommConfig, and SetDefaultCommConfig. For COM ports, this is "serialui.dll". For modems, this is "modemui.dll". LPT ports currently do not support these functions, so do not have this value. |
Contention | Specifies the static VxD (loaded at boot time from system.ini or the registry) which handles contention and virtualization for the device. This is "*vcd" for COM ports and PCMCIA modems, and "*vpd" for parallel ports. Non-standard port types can install their own contention VxD. |
DCB | This binary value is a DCB data structure stored by the configuration DLL for devices which use serial.vxd as their port driver (for example, COM ports and PCMCIA modems). It is created by the configuration dialog DLLs serialui.dll and modemui.dll, in response to SetDefaultCommConfig() calls. |
DevLoader | Always "*vcomm" |
DriverDesc | The name of the device specified by its INF file; for example, "Communications Port", "Printer Port", or "Hayes compatible modem". |
Enumerator | Specifies a Plug and Play enumerator that VCOMM will load at boot time to detect devices attached to the port device. This is "serenum.vxd" for COM ports, and "lptenum.vxd" for parallel ports. Non-standard port types can install their own enumerator VxD. Modems do not have an enumerator, since they do not have attached devices. |
EnumPropPages | Specifies the DLL and entry point name called to provide property sheet pages for the device in the System control panel Device Manager. For COM ports, this is "serialui.dll,EnumPropPages". For modems, this is "modemui.dll,EnumPropPages". LPT ports currently do not have property pages. |
FriendlyDriver | The VCOMM port driver loaded when the device is opened by a VCOMM client by its "FriendlyName" (located in the hardware key). If FriendlyDriver is not present, its PortDriver will be used instead. For modems, FriendlyDriver is always "unimodem.vxd". |
PortDriver | The VCOMM port driver loaded when the device is opened by a VCOMM client by its "PortName" (located in the hardware key). This is "serial.vxd" for COM ports, "lpt.vxd" for LPT ports. For internal and external modems, this is not used. However, UART-compatible PCMCIA modems have this set to "serial.vxd". |
PortSubClass | "00" for parallel ports, "01" for serial ports, "02" for modems. |
See the modem section of the Windows 95 DDK documentation for more information about registry values used for the Universal Modem Driver ("Unimodem").