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.
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 |