Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
Protocols EFI Driver Model
Version 1.10 12/01/02 9-31
9.3 EFI Bus Specific Driver Override Protocol
This section provides a detailed description of the EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_
PROTOCOL. Bus drivers that have a bus specific algorithm for matching drivers to controllers are
required to produce this protocol for each controller. For example, a PCI Bus Driver will produce
an instance of this protocol for every PCI controller that has a PCI option ROM that contains one or
more EFI drivers. The protocol instance is attached to the handle of the PCI controller.
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
Summary
This protocol matches one or more drivers to a controller. This protocol is produced by a bus
driver, and it is installed on the child handles of buses that require a bus specific algorithm for
matching drivers to controllers. This protocol is used by the ConnectController()
boot
service to select the best driver for a controller. All of the drivers returned by this protocol have a
higher precedence than drivers found in the general EFI Driver Binding search algorithm, but a
lower precedence than those drivers returned by the EFI Platform Driver Override Protocol. If
more than one driver image handle is returned by this protocol, then the drivers image handles are
returned in order from highest precedence to lowest precedence.
GUID
#define EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL_GUID \
{ 0x3bc1b285,0x8a15,0x4a82,0xaa,0xbf,0x4d,0x7d,0x13,0xfb,0x32,0x65 }
Protocol Interface Structure
typedef struct _EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL {
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_GET_DRIVER GetDriver;
} EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL;
Parameters
GetDriver Uses a bus specific algorithm to retrieve a driver image handle
for a controller. See the GetDriver()
function description.
Description
The EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL provides a mechanism for bus
drivers to override the default driver selection performed by the ConnectController() boot
service. This protocol is attached to the handle of a child device after the child handle is created by
the bus driver. The service in this protocol can return a bus specific override driver to
ConnectController(). ConnectController() must call this service until all of the bus
specific override drivers have been retrieved. ConnectController() uses this information
along with the EFI Platform Driver Override Protocol and all of the EFI Driver Binding protocol
instances to select the best drivers for a controller. Since a controller can be managed by more than
one driver, this protocol can return more than one bus specific override driver.