The UEFI Specification defines the UEFI Driver Model. Drivers that follow the UEFI Driver Model are UEFI drivers. The driver initialization routine of a UEFI driver is not allowed to touch any hardware. Instead, it installs an instance of the
EFI_DRIVER_BINDING_PROTOCOL on the ImageHandle of the UEFI driver.
Later on, the driver may get calls through the
EFI_DRIVER_BINDING_PROTOCOL to test for support of a given piece of hardware. The test to determine if a driver supports a given controller must be performed in as little time as possible without causing any side effects on any of the controllers it is testing. Most of the controller initialization is done in the start and stop services of the