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
Last modified 1yr ago