17.3 Bus Specific Driver Override Protocol Installation
The example below shows a fragment from the Driver Binding Protocol Start()
that installs the Bus Specific Driver Override Protocol instance onto a child
handle produced by the bus driver.
Example 165-Install Bus Specific Driver Override Protocol
#include <Uefi.h>
#include <Protocol/DriverBinding.h>
#include <Protocol/BusSpecificDriverOverride.h>
#include <Library/UefiBootServicesTableLib.h>
EFI_STATUS EFIAPI
AbcStart (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL
)
{
EFI_STATUS Status;
ABC_PRIVATE_DATA *Private;
EFI_HANDLE ChildHandle;
. .
Status = gBS->InstallMultipleProtocolInterfaces (
ChildHandle,
&gEfiBusSpecificDriverOverrideProtocolGuid,
&Private->BusSpecificDriverOverride,
NULL
);
. .
}
The following example shows a fragment from the Driver Binding Protocol
Stop()
function that uninstalls the Bus Specific Driver Override Protocol
instance from a child handle produced by the bus driver.
Example 166-Uninstall Bus Specific Driver Override Protocol
#include <Uefi.h>
#include <Protocol/DriverBinding.h>
#include <Protocol/BusSpecificDriverOverride.h>
#include <Library/UefiBootServicesTableLib.h>
EFI_STATUS
EFIAPI
AbcStop (
IN EFI_DRIVER_BINDING_PROTOCOL *This,
IN EFI_HANDLE ControllerHandle,
IN UINTN NumberOfChildren,
IN EFI_HANDLE *ChildHandleBuffer
)
{
EFI_STATUS Status;
ABC_PRIVATE_DATA *Private;
EFI_HANDLE ChildHandle;
. .
Status = gBS->UninstallMultipleProtocolInterfaces (
ChildHandle,
&gEfiBusSpecificDriverOverrideProtocolGuid,
&Private->BusSpecificDriverOverride,
NULL
);
. .
}