Logical Devices

The defined resource sets of the supported multimedia devices provide a logical device breakdown and account for the sometimes hidden dependencies inherent in the hardware design.

To determine if you should define a logical device, you must answer the question: "Does the resource set describe an independently functional device?" If yes, create a logical device. If no, you will need to merge these resources with the other components required to start and/or support this device.

The reason for this requirement is that there is no bus-independent method for a driver to determine the association of one logical device with another or which physical device contains the logical device. This reasserts the definition of a logical device: a logical device is functionally independent.

For example, a sound card could contain many functions: a 16-bit audio component (including internal FM synthesis and external MIDI), a joystick adapter, a SCSI adapter, and a second independent DAC for compatibility with other cards. The immediate response is to define a logical device for each of the functionally independent components. This is not necessary if the device is software-configurable, however. Instead of allowing each child component to configure the device independently, the parent retrieves the entire resource set and applies the configuration to the hardware. The Configuration Manager creates the child devices using subsets of the resources of the parent. Although this example is a special case, it serves the purpose of demonstrating the sometimes subtle dependencies of hardware devices.

Following is a list of general rules to use when determining if a resource set is an independent logical device:

Internal hardware mixer dependencies The most common example of this is the support of the FM synthesis device. Plug and Play devices most often include this I/O resource with the "audio" logical device. Most of the legacy device drivers shipped with Windows 95 adjust their mixer resources on the basis of whether an associated FM device is present. The determination of the FM association is the inclusion or exclusion of the I/O resource for the FM synthesis chip in "audio" logical device resource set.
Interrupt sharing An example of this strategy is Creative Lab's Sound Blaster 16-bit audio series. The MPU-401, 8-bit ADC/DAC and 16-bit ADC/DAC share a single interrupt. Consequently, the logical device descriptor for the Sound Blaster 16 includes the resources for the MPU-401 and wave audio devices.
Multiple register planes using a single I/O path The dependency of these designs is the I/O path (ADC/DAC). For example, the register planes provide the hardware interface for Sound Blaster compatibility and Windows Sound System compatibility, but are mutually exclusive such that register planes contend for the I/O path. Thus, the register planes are not functionally independent. Appropriate management of these register planes requires hardware contention management per device node.
DSP based solutions These devices require special consideration when designing the logical device structure. For more information, see .