Intel Extensible Firmware Interface Network Router User Manual


  Open as PDF
of 1084
 
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.IfHandle 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,andEFI_ALREADY_STARTED is returned.
Status Codes Returned
EFI_SUCCESS All the protocol interfaces were installed.
EFI_ALREADY_STARTED A Device Path Protocol 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.