Multifunction Legacy Devices - Registry

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 preceding 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.