6.3.2 Optional Hybrid Driver Features
The following is a list of features a hybrid driver can optionally implement. Those recommended are noted below.
- Install one or more instances of the
EFI_COMPONENT_NAME2_PROTOCOL
in the driver's entry point. Implementing this feature isstrongly
recommended
It allows a driver to provide human-readable names for the name of the driver and the controllers that the driver is managing.
- Register one or more HII packages in the driver's entry point.
These HII packages provide strings, fonts and forms that allow users (such as IT administrators) to change the driver's configuration. These HII packages are required only if a driver must provide the ability for a user to change configuration settings for a device.
- Install one or more instances of the
EFI_DRIVER_DIAGNOSTICS2_PROTOCOL
in the driver's entry point.
If a driver needs to provide diagnostics for the controllers the driver manages, this protocol is required.
- Provide an
EFI_LOADED_IMAGE_PROTOCOL.Unload()
service, so the driver can be dynamically unloaded.
It is recommended
that this feature be implemented during driver development,
driver debug, and system integration. It is strongly recommended
that this
service remain in drivers for add-in adapters to help debug interaction issues
during system integration.
- Parses the
RemainingDevicePath
parameter that is passed into theSupported()
andStart()
services of the Driver Binding Protocol if it is notNULL
.
This is strongly recommended
so a bus driver can start only the one child
specified by RemainingDevicePath
. Implementing this feature may
significantly improve platform boot performance.
- Install an
EFI_DEVICE_PATH_PROTOCOL
on each child handle that is created.
This feature is required only if the child handle represents a physical device.
If the child handle represents a virtual device, then an
EFI_DEVICE_PATH_PROTOCOL
is not required.
- Install one or more instances of the
EFI_DRIVER_FAMILY_OVERRIDE_PROTOCOL
in the driver's entry point.
This protocol is required only if a higher priority rule for connecting drivers
to a controller through the UEFI Boot Service ConnectController()
is needed.
- Install one or more instances of the
EFI_DRIVER_HEALTH_PROTOCOL
in the driver's entry point.
This protocol is required only for drivers that manage devices that can be in a recoverably bad state through either a repair operation or a configuration operation.
- Install one or more instances of the
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL
in the driver's entry point.
This protocol is required only for bus drivers for a bus type where the devices on the bus can provide a container for more than one UEFI Driver. An example of such a bus type is PCI, with PCI Option ROMs on PCI Adapters containing more than one UEFI Driver.
- Install an instance of the
EFI_DRIVER_SUPPORTED_EFI_VERSION_PROTOCOL
in the driver's entry point.
This protocol is required for PCI controller or other plug-in cards
Implementation of this feature is recommended
.
- Create an Exit Boot Services event in the driver's entry point.
This feature is required only if the driver is required to place the devices it manages in a specific state just before control is handed to an operating system.
- Creates a Set Virtual Address Map event in the driver's entry point.
This feature is required only for a device driver that is a UEFI runtime driver.
6.3.2.1 Compatibility with Older EFI/UEFI Specifications
The following is the list of features a hybrid driver can optionally implement to provide compatibility with older versions of the EFI Specification and UEFI Specification.
- Install one or more instances of the
EFI_COMPONENT_NAME_PROTOCOL
in the driver's entry point.
Implementing this feature is strongly recommended
for drivers that are
required to be compatible with EFI 1.10 It allows a driver to provide
human-readable names for the name of the driver and the controllers it manages.
The EDK II libraries provide easy methods to produce both the Component Name
Protocol and the Component Name 2 Protocol with very little additional overhead.
- Install one or more instances of the
EFI_DRIVER_CONFIGURATION_PROTOCOL
in the driver's entry point.
It is required if a driver must be compatible with EFI 1.10 and has any configurable options.
- Install one or more instances of the
EFI_DRIVER_CONFIGURATION2_PROTOCOL
in the driver's entry point.
It is required if a driver must be compatible with UEFI 2.0 and has any configurable options.
- Install one or more instances of the
EFI_DRIVER_DIAGNOSTICS_PROTOCOL
in the driver's entry point.
It is required if a driver must be compatible with EFI 1.10 and provide diagnostics for the controllers that the driver manages.