6.2.4 Bus drivers with multiple driver binding protocols
The driver entry point of a bus driver is very similar to the driver entry
point of a device driver. The discussion in Section 6.1.5 applies equally
well to both bus drivers and device drivers. The differences between bus
drivers and device drivers are exposed in the implementations of the Driver
Binding Protocol. The following discussions describe the behaviors of the
Start()
function of the Driver Binding Protocol for each type of bus driver.
An example bus driver in EDK II that produces multiple instances of the EFI_DRIVER_BINDING_PROTOCOL
, is the console splitter driver in the
MdeModulePkg/Universal/Console/ConSplitterDxe
subdirectory. This driver
multiplexes multiple console output and console input devices into a single
virtual console device. It produces instances of the Driver Binding Protocol
for the following:
Console input device
Console output devices
Standard error device
Simple pointer devices
Absolute pointer devices
This driver is an example of a single feature that can be added or removed from a platform by adding or removing a single component. It could have been implemented as five different drivers, but there were many common functions between the drivers, so it also saved code space to combine these five functions.