To support Plug and Play functionality, Windows 95 architecture includes a new component called Configuration Manager, which orchestrates the configuration process. This process might involve many bus and device architectures coexisting on a single system, with more than one device type using the same bus architecture, yet with each device having a separate set of configuration requirements.. (A bus is the mechanism that allows information to be transferred between the computer and the device.) For example, a mouse and a keyboard can both use the same keyboard controller bus; a CD-ROM drive and a hard disk drive might both use the same SCSI bus.
As shown in the following illustration, Configuration Manager works with a number of subcomponents to identify each bus and each device on the system, and to identify the configuration settings for each device. Configuration Manager ensures that each device on the computer can use an IRQ, I/O port addresses, and other resources without conflict with other devices.
Configuration Manager also helps monitor the computer for changes in the number and type of devices present and manages the reconfiguration of the devices, as needed, when changes take place. As these events occur, Configuration Manager communicates the information to applications.
To perform its role, Configuration Manager (implemented as part of the Virtual Memory Manager, VMM32) calls on the bus enumerators to identify all the devices on their specific buses and their respective resource requirements.
Bus enumerators are new drivers that are responsible for creating the Windows 95 hardware tree. A hardware tree is the hierarchical representation of all the buses and devices on a computer. Each bus and each device is represented as a node. The following is a graphical representation of a hardware tree.
During the device enumeration process, the bus enumerator locates and gathers information from either the device drivers or the BIOS services for that particular device type. For example, the SCSI bus enumerator calls the SCSI drivers to gather information. (Some bus enumerators may instead check the hardware directly.)
For each device, a driver is loaded. When loaded, the driver waits for Configuration Manager to assign specific resources (such as IRQs) to the device. Configuration Manager calls on resource arbitrators to allocate resources for each device.
Resource arbitrators resolve conflicts among devices that request identical resource assignments. Windows 95 provides arbitrators for the standard I/O, memory, hardware interrupt, and DMA channel resources. (The arbitrators are separate components, rather than a part of Configuration Manager, to ensure extensibility to new types of resources, such as power allocation or automatic SCSI IDs.)
To complete the configuration process, Configuration Manager informs the device drivers about the device configuration. This process is repeated when the BIOS or one of the other bus enumerators informs Configuration Manager about an event that requires a change to the system configuration, such as the removal or insertion of a Plug and Play-compliant PCMCIA card. For more information about Plug and Play, see Chapter 18, "Introduction to System Configuration."