A legacy multifunction card is enumerated by the relevant Windows 95 enumerator as a single device with all resources allocated to that device. When a legacy multifunction card is detected, the configuration manager will act as the default enumerator for its children (the logical devices on the device). This is depicted in the registry by listing CONFIGMG as the enumerator and device loader for child devices. The following example shows how a multifunction sound/SCSI card will appear in the registry:
[HKEY_LOCAL_MACHINE\Enum\Root\ACM1234\0000] InfName=ACMAMF.INF DeviceDesc=ACMA Audio card with SCSI Class=MEDIA HardwareID=ACM1234 Driver=MEDIA\0000 Mfg=ACMA Corp. ConfigFlags=hex:00,00,00,00 [HKEY_LOCAL_MACHINE\Enum\Root\ACM1234\0000\LogConfig] 0=<logical configuration 0> 1=<logical configuration 1> [HKEY_LOCAL_MACHINE\Enum\Root\ACM1234\0000\Child0000] HardwareID=MF\ACM1234_Dev0 ResourceMap=hex:00,01,02,03,04,05,06,07,0c,0e [HKEY_LOCAL_MACHINE\Enum\Root\ACM1234\0000\Child0001] HardwareID=MF\ACM1234_Dev1 ResourceMap=hex:01,05,06,08,09,0a,0b,0d
In the above example a legacy multifunction card by ACMA has two child devices. The driver branch for the parent device MEDIA\0000 includes information about the parent driver which may be used for initialization\configuration of the physical card as well as coordination between the children. The child branches include information about the simulated hardware Ids and indexes of the parent's logical configurations.
[HKEY_LOCAL_MACHINE\Enum\MF\CHILD0000\ROOT&ACM1234&0000] HardwareID=MF\ACM1234_Dev0 Class=MEDIA Driver=MEDIA\0001 Mfg=ACMA Corp. DeviceDesc= ACMA Audio card with SCSI (Audio) ConfigFlags=hex:00,00,00,00 [HKEY_LOCAL_MACHINE\Enum\MF\CHILD0001\ROOT&ACM1234&0000] HardwareID=MF\ACM1234_Dev1 Class=SCSIAdapter Driver=SCSIAdapter\0000 Mfg=ACMA Corp. DeviceDesc= ACMA Audio card with SCSI (SCSI) ConfigFlags=hex:00,00,00,00
The device information of the child devices is kept under the Enum\MF (for multifunction). Beside the location, these entries look exactly the same as standard single function device entries. Each of the devices specifies an independent device class and device descriptions.
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\MEDIA\0000] DevLoader=*CONFIGMG Enumerator=*CONFIGMG DeviceDriver=acma.vxd InfPath=ACMAMF.INF InfSection=ACM1234_Device DriverDesc= ACMA Audio card with SCSI [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\MEDIA\0001] DevLoader=mmdevldr.vxd Driver=acmaudio.vxd InfPath=ACMAUDIO.INF InfSection=ACM1234_Dev0_Device DriverDesc= ACMA Audio card with SCSI (Audio) [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\SCSIAdapter\0000] DevLoader=*IOS PortDriver=acma.mpd InfPath=ACMASCSI.INF InfSection= acm1234.drv DriverDesc= ACMA Audio card with SCSI (SCSI)
The device loader and enumerator for the multifunction parent is CONFIGMG. The driver itself is provided by the vendor for initialization and coordination purposes.