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.
GetNextHighMonotonicCount Runtime Special Provides a 64-bit monotonic counter that is guaranteed to increase.