The Enumeration Process

When the system starts, a bus enumerator for a bus device node (such as the system board BIOS) will enumerate its bus and detect the PCMCIA adapter. The bus enumerator will create an adapter device node for the adapter and add a logical configuration for the adapter at its current configured I/O address. Configuration Manager will load the device loader, based on information in the registry. The device loader for the adapter is contained in the PCMCIA bus enumerator - along with the Card Services component. The device loader is called at its PNP_NEW_DEVNODE control entry point. The device loader loads the Socket Services driver for the adapter device node, based on the Driver= entry in the registry for the adapter device node. The device loader registers an enumerator for the adapter device node.

Configuration Manager calls the Socket Services driver to filter the logical configuration for the adapter. The Socket Services driver will then be called by Configuration Manager to configure the adapter's IRQ, I/O, and a memory window.

Configuration Manager then calls the bus enumerator for the adapter device node to enumerate the devices on the PCMCIA bus. The bus enumerator enumerates each PC card in the sockets on the adapter. A device ID for each PC card is generated from the tuples on the card. The bus enumerator creates the device nodes for the cards in the sockets. Logical configurations will be created based on the configuration tuples on the PC card. If a card does not have configuration tuples, an empty logical configuration is added for the card. Overriding configurations may be defined in the registry to handle this case, or the driver for the card may define the logical configuration during the call to the CONFIG_FILTER configuration handler function. For this to happen, a valid Manufacturer ID tuple must exist on the card.