Installmultipleprotocolinterfaces() – Intel Extensible Firmware Interface User Manual

Page 172

Advertising
background image

Extensible Firmware Interface Specification

5-74

12/01/02

Version 1.10

InstallMultipleProtocolInterfaces()

Summary

Installs one or more protocol interfaces into the boot services environment.

Prototype

typedef
EFI_STATUS
InstallMultipleProtocolInterfaces (

IN OUT EFI_HANDLE

*Handle,

...
);

Parameters

Handle

The handle to install the new protocol interfaces on, or

NULL

if a new

handle is to be allocated.

...

A variable argument list containing pairs of protocol GUIDs and protocol
interfaces.

Description

This function installs a set of protocol interfaces into the boot services environment. It removes
arguments from the variable argument list in pairs. The first item is always a pointer to the
protocol’s GUID, and the second item is always a pointer to the protocol’s interface. These pairs
are used to call the boot service

InstallProtocolInterface()

to add a protocol interface

to

Handle

. If

Handle

is

NULL

on entry, then a new handle will be allocated. The pairs of

arguments are removed in order from the variable argument list until a

NULL

protocol GUID value

is found. If any errors are generated while the protocol interfaces are being installed, then all the
protocols installed prior to the error will be uninstalled with the boot service

UninstallProtocolInterface()

before the error is returned. The same GUID cannot be

installed more than once onto the same handle. If the same GUID is installed more than once onto
the same handle, then the results are not predictable.

It is illegal to have two handles in the handle database with identical device paths. This service
performs a test to guarantee a duplicate device path is not inadvertently installed on two different
handles. Before any protocol interfaces are installed onto

Handle

, the list of GUID/pointer pair

parameters are searched to see if a Device Path Protocol instance is being installed. If a Device
Path Protocol instance is going to be installed onto

Handle

, then a check is made to see if a handle

is already present in the handle database with an identical Device Path Protocol instance. If an
identical Device Path Protocol instance is already present in the handle database, then no protocols
are installed onto

Handle

, and

EFI_ALREADY_STARTED

is returned.

Status Codes Returned

EFI_SUCCESS

All the protocol interfaces were installed.

EFI_ALREADY_STARTED

A Device PathProtocol instance was passed in that is already present in
the handle database.

EFI_OUT_OF_RESOURCES

There was not enough memory in pool to install all the protocols.

Advertising