3.14 UEFI Driver Model Connection Process
All UEFI Drivers that adhere to the UEFI Driver Model follow the same basic procedure. When the driver is loaded, it installs a Driver Binding Protocol on the image handle from which it was loaded. It may also update a pointer to the
Unload()service of the Loaded Image Protocol and install the Component Name 2 Protocol and the Component Name Protocol, if needed, so its name is visible to any operator. The UEFI Driver then exits from the entry point with a return status of
EFI_SUCCESS, leaving the UEFI Driver resident in system memory.
The Driver Binding Protocol provides a version number and the following three services:
The Driver Binding Protocol is available on the driver's image handle after the entry point is exited. Later on when the system is "connecting" drivers to devices, the driver's Driver Binding Protocol
Supported()service is called.
Supported()service is passed a controller handle. The
Supported()function quickly examines the controller handle to see if it represents a device that the driver knows how to manage. If so, it returns
EFI_SUCCESS. The system then starts the driver by calling the driver's
Start()service, passing in the supported controller handle. The driver can later be disconnected from a controller handle by calling the
A platform connects the devices in a platform with the drivers available in the platform. This connection process appears complex at first, but as the process continues, it becomes evident that the same basic procedure is used over and over again to accomplish the complex task. This description does not go into all the details of the connection process but explains enough that the role of various drivers in the connection process can be understood. This knowledge is fundamental to designing new UEFI Drivers.
The UEFI boot service
ConnectController()demonstrates the flexibility of the UEFI Driver Model. The UEFI Shell command
connectdirectly exposes much of the functionality of this boot service and provides a convenient way to explore the flexibility and control offered by