beautypg.com

Intel Extensible Firmware Interface User Manual

Page 133

background image

Services — Boot Services

Version 1.10

12/01/02

5-35

The second group of boot services is used to deterministically connect and disconnect drivers to
controllers. The boot services in this group are

ConnectController()

and

DisconnectController()

. These services take advantage of the new features of the handle

database along with the new protocols described in this document to manage the drivers and
controllers present in the system.

ConnectController()

uses a set of strict precedence rules

to find the best set of drivers for a controller. This provides a deterministic matching of drivers to
controllers with extensibility mechanisms for OEMs, IBVs, and IHVs.

DisconnectController()

allows drivers to be disconnected from controllers in a controlled

manner, and by using the new features of the handle database it is possible to fail a disconnect
request because a protocol interface cannot be released at the time of the disconnect request.

The third group of boot services is designed to help simplify the implementation of drivers, and
produce drivers with smaller executable footprints. The

LocateHandleBuffer()

is a new

version of

LocateHandle()

that allocates the required buffer for the caller. This eliminates two

calls to

LocateHandle()

and a call to

AllocatePool()

from the caller's code.

LocateProtocol()

searches the handle database for the first protocol instance that matches the

search criteria. The

InstallMultipleProtocolInterfaces()

and

UninstallMutipleProtocolInterfaces()

are very useful to driver writers. These boot

services allow one or more protocol interfaces to be added or removed from a handle. In addition,

InstallMultipleProtocolInterfaces()

guarantees that a duplicate device path is

never added to the handle database. This is very useful to bus drivers that can create one child
handle at a time, because it guarantees that the bus driver will not inadvertently create two instances
of the same child handle.