beautypg.com

Status codes returned – Intel Extensible Firmware Interface User Manual

Page 139

background image

Services — Boot Services

Version 1.10

12/01/02

5-41

components that use the

OpenProtocol()

and

CloseProtocol()

boot services, a safe

version of this function can be implemented.

When this function is called, a call is first made to the boot service

UninstallProtocolInterface()

. This will guarantee that all of the agents are currently

consuming the protocol interface

OldInterface

will stop using

OldInterface

. If

UninstallProtocolInterface()

returns

EFI_ACCESS_DENIED

, then this function

returns

EFI_ACCESS_DENIED

,

OldInterface

remains on

Handle

, and the protocol notifies

are not processed because

NewInterface

was never installed.

If

UninstallProtocolInterface()

succeeds, then a call is made to the boot service

InstallProtocolInterface()

to put the

NewInterface

onto

Handle

.

Finally, the boot service

ConnectController()

is called so all agents that were forced to

release

OldInterface

with

UninstallProtocolInterface()

can now consume the

protocol interface

NewInterface

that was installed with

InstallProtocolInterface()

.

After

OldInterface

has been replaced with

NewInterface

, any process that has registered

to wait for the installation of the interface is notified.

Status Codes Returned

EFI_SUCCESS

The protocol interface was reinstalled.

EFI_NOT_FOUND

The

OldInterface

on the handle was not found.

EFI_ACCESS_DENIED

The protocol interface could not be reinstalled,
because

OldInterface

is still being used by a

driver that will not release it.

EFI_INVALID_PARAMETER

One of the parameters has an invalid value.