5.1 Services that UEFI drivers commonly use

The following table lists UEFI services commonly used by UEFI drivers. Following that, discussions briefly describe each service, why they are commonly used, or the particular circumstance in which they are useful. Code examples show how the services are typically used by UEFI drivers and are grouped by Service Type.

Table 18-UEFI services that are commonly used by UEFI drivers
Service Type Service Type Description
AllocatePool() Boot Memory Allocation Allocates a memory buffer of a particular type.
FreePool() Boot Memory Allocation Frees a previously allocated memory buffer.
AllocatePages() Boot Memory Allocation Allocates one memory buffer of a particular type with a 4KB aligned start address and a 4KB aligned length.
FreePages() Boot Memory Allocation Frees a memory buffer previously allocated with AllocatePages().
CopyMem() Boot Miscellaneous Copies a buffer from one location to another.
SetMem() Boot Miscellaneous Initializes the contents of a buffer with a specified value.
InstallMultipleProtocolInterfa ces() Boot Protocol Handler Installs one or more protocol interfaces onto a handle. Replaces the InstallProtocolInterface() service.
UninstallMultipleProtocolInter faces() Boot Protocol Handler Uninstalls one or more protocol interfaces from a handle. Replaces the UninstallProtocolInterface() service.
LocateHandleBuffer() Boot Protocol Handler Retrieves a list of handles from the handle database meeting the search criteria. The return buffer is automatically allocated.
LocateProtocol() Boot Protocol Handler Finds the first handle in the handle database supporting the requested protocol.
OpenProtocol() Boot Protocol Handler Adds elements to the list of agents consuming a protocol interface.
OpenProtocolInformation() Boot Protocol Handler Retrieves the list of agents currently consuming a protocol interface.
CloseProtocol() Boot Protocol Handler Removes elements from the list of agents consuming a protocol interface.
RaiseTPL() Boot Task Priority Raises the task priority level.
RestoreTPL() Boot Task Priority Restores/lowers the task priority level.
CreateEvent() Boot Event Creates a general-purpose event structure.
CreateEventEx() Boot Event Creates an event structure as part of an event group. This service is new.
CloseEvent() Boot Event Closes and frees an event structure.
SignalEvent() Boot Event Signals an event.
CheckEvent() Boot Event Checks whether an event is in the signaled state.
SetTimer() Boot Time-related Sets an event to be signaled at a particular time.
Stall() Boot Time-related Waits for a specified number of microseconds. This is a time-related service with the highest accuracy.