5.3 Services that UEFI drivers should not use
The following table lists the UEFI services that should not be used by UEFI drivers. These services may be used by components other than UEFI Drivers, or these services may have been replaced by newer services and should no longer be used by UEFI Drivers. The following sections describe why each of these services should not be used in UEFI drivers and are grouped by Service Type.

Table 20-UEFI services that should not be used by UEFI drivers

Service
Type
Service Type
Notes
InstallProtocolInterface()
Boot
Protocol Handler
Installs a protocol interface on a device handle. Replaced by InstallMultipleProtocolInterfaces().
UninstallProtocolInterface()
Boot
Protocol Handler
Removes a protocol interface from a device handle. Replaced by UninstallMultipleProtocolInterfaces().
HandleProtocol()
Boot
Protocol Handler
Queries a handle to determine if it supports a specified protocol. Replaced by OpenProtocol().
LocateHandle()
Boot
Protocol Handler
Returns an array of handles that support a specified protocol. This service has been replaced by LocateHandleBuffer().
ProtocolsPerHandle()
Boot
Protocol Handler
Retrieves the list of protocols installed on a handle. The return buffer is automatically allocated. This service has been replaced with: The Start function in the UEFI Driver Binding Protocol.
RegisterProtocolNotify()
Boot
Protocol Handler
Registers an event that is to be signaled whenever an interface is installed for a specified protocol. This service has been replaced with: The Supported() function in the UEFI Driver Binding Protocol.
UnloadImage()
Boot
Image
Used to unload a previously loaded UEFI Driver.
GetNextVariableName()
Runtime
Variable
Used to walk the list of UEFI variables that are maintained through the UEFI variable services. Use of this service is not usually necessary.
SetWatchDogTimer()
Boot
Time-related
Sets the current local time and date information. UEFI drivers should not use this service; UEFI drivers should not modify the system time or the wakeup timer.
SetTime()
Runtime
Time-related
Sets the current local time and date information. UEFI drivers should not use this service; UEFI drivers should not modify the system time or the wakeup timer.
GetWakeupTime()
Runtime
Time-related
Returns the current wakeup alarm clock setting. UEFI drivers should not use this service; the watchdog timer is managed from the UEFI boot manager.
SetWakeupTime()
Runtime
Time-related
Sets the system wakeup alarm clock time. UEFI drivers should not use this service; the watchdog timer is managed from the UEFI boot manager.
GetMemoryMap()
Boot
Memory Allocation
Returns the current boot services memory map and memory map key.
ExitBootServices()
Boot
Special
This service hands control of the platform from the UEFI conformant firmware to an OS. UEFI drivers must never use this service.
SetVirtualAddressMap()
Runtime
Special
This service is used only by UEFI OS loaders or OS kernels for operating systems that wish to call UEFI runtime services using virtual addresses. UEFI drivers must never use this service.
QueryCapsuleCapabilities()
Runtime
Special
Test to see if a capsule or capsules can be updated via UpdateCapsule().
UpdateCapsule()
Runtime
Special
Allows the operating system to pass information to firmware.
ResetSystem()
Runtime
Special
Resets and sets a watchdog timer used during boot services time. UEFI drivers should not use this service; the watchdog timer is managed from the UEFI boot manager.
Exit()
Boot
Special
UEFI drivers should not use this service. This service is typically used by applications.
Copy link