9 protocols - efi driver model, 1 efi driver binding protocol, Efi_driver_binding_protocol – Intel Extensible Firmware Interface User Manual

Page 243: Driver_binding, Efi driver binding protocol, Chapt, 9protocols - efi driver model

Advertising
background image

Version 1.10

12/01/02

9-1

9

Protocols - EFI Driver Model

EFI drivers that follow the EFI Driver Model are not allowed to search for controllers to manage.
When a specific controller is needed, the EFI boot service

ConnectController()

is used

along with the

EFI_DRIVER_BINDING_PROTOCOL

services to identify the best drivers for a

controller. Once

ConnectController()

has identified the best drivers for a controller, the

start service in the

EFI_DRIVER_BINDING_PROTOCOL

is used by

ConnectController()

to start each driver on the controller. Once a controller is no longer needed, it can be released with
the EFI boot service

DisconnectController()

.

DisconnectController()

calls the

stop service in each

EFI_DRIVER_BINDING_PROTOCOL

to stop the controller.

The driver initialization routine of an EFI driver is not allowed to touch any device hardware.
Instead, it just installs an instance of the

EFI_DRIVER_BINDING_PROTOCOL

on the

ImageHandle

of the EFI driver. 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. As a result, most of the controller initialization code is present in the start
and stop services of the

EFI_DRIVER_BINDING_PROTOCOL

.

9.1 EFI Driver Binding Protocol

This section provides a detailed description of the

EFI_DRIVER_BINDING_PROTOCOL

. This

protocol is produced by every driver that follows the EFI Driver Model, and it is the central
component that allows drivers and controllers to be managed. It provides a service to test if a
specific controller is supported by a driver, a service to start managing a controller, and a service to
stop managing a controller. These services apply equally to drivers for both bus controllers and
device controllers.

EFI_DRIVER_BINDING_PROTOCOL

Summary

Provides the services required to determine if a driver supports a given controller. If a controller is

supported, then it also provides routines to start and stop the controller.

GUID

#define EFI_DRIVER_BINDING_PROTOCOL_GUID \

{0x18A031AB,0xB443,0x4D1A,0xA5,0xC0,0x0C,0x09,0x26,0x1E,0x9F,0x71}

Advertising