5 UEFI Services

This chapter focuses on the UEFI services that apply to the implementation of UEFI drivers. This includes descriptions of those services, along with code examples, that demonstrate how a UEFI driver typically uses those services. The EDK II provides a number of library functions that simplify the use of UEFI services as well as UEFI driver improvements in maintainability, portability, readability, robustness, and size. Additional descriptions and code examples using EDK II library functions also appear where applicable.

The UEFI Boot Services and UEFI Runtime Services available to UEFI Drivers fall into three general areas:

  • Commonly used services

  • Rarely used services

  • Services that should not be used from a UEFI driver

The full function prototypes and descriptions for each service, and their arguments, are available in the Boot Services and Runtime Services chapters of the UEFI Specification. The full function prototypes and descriptions of the EDK II library functions, and their arguments, are available in the EDK II MdePkg Package Document and the EDK II MdeModulePkg Package Document.

The following table lists alphabetically all UEFI Boot and Runtime Services.

Table 17-Alphabetical listing of UEFI services
Service Type Service Type
AllocatePool() Boot Memory Allocation
AllocatePages() Boot Memory Allocation
CalculateCrc32() Boot Miscellaneous
CheckEvent() Boot Event
CloseEvent() Boot Event
CloseProtocol() Boot Protocol Handler
ConnectController() Boot Protocol Handler
ConvertPointer() Runtime Miscellaneous
CopyMem() Boot Miscellaneous
CreateEvent() Boot Event
CreateEventEx() Boot Event
DisconnectController() Boot Protocol Handler
Exit() Boot Special
ExitBootServices() Boot Special
FreePages() Boot Memory Allocation
FreePool() Boot Memory Allocation
GetMemoryMap() Boot Memory Allocation
GetNextMonotonicCount() Boot Special
GetNextHighMonotonicCount() Runtime Special
GetNextVariableName() Runtime Variable
GetTime() Runtime Time-related
GetVariable() Runtime Variable
GetWakeupTime() Runtime Time-related
HandleProtocol() Boot Protocol Handler
InstallConfigurationTable() Boot Miscellaneous
InstallMultipleProtocolInterfaces() Boot Protocol Handler
InstallProtocolInterface() Boot Protocol Handler
LoadImage() Boot Image
LocateDevicePath() Boot Protocol Handler
LocateHandle() Boot Protocol Handler
LocateHandleBuffer() Boot Protocol Handler
LocateProtocol() Boot Protocol Handler
OpenProtocol() Boot Protocol Handler
OpenProtocolInformation() Boot Protocol Handler
ProtocolsPerHandle() Boot Protocol Handler
QueryCapsuleCapabilities() Runtime Special
QueryVariableInfo() Runtime Variable
RaiseTPL() Boot Task Priority
RegisterProtocolNotify() Boot Protocol Handler
ReinstallProtocolInterface() Boot Protocol Handler
ResetSystem() Runtime Special
RestoreTPL() Boot Task Priority
SetMem() Boot Miscellaneous
SetTime() Runtime Time-related
SetTimer() Boot Time-related
SetVariable() Runtime Variable
SetVirtualAddressMap() Runtime Special
SetWakeupTime() Runtime Time-related
SetWatchDogTimer() Boot Time-related
StartImage() Boot Image
SignalEvent() Boot Event
Stall() Boot Time-related
UninstallMultipleProtocolInterfaces() Boot Protocol Handler
UninstallProtocolInterface() Boot Protocol Handler
UnloadImage() Boot Image
UpdateCapsule() Runtime Special
WaitForEvent() Boot Event