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