mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 13:02:07 +00:00 
			
		
		
		
	 9c1f455f5f
			
		
	
	
		9c1f455f5f
		
	
	
	
	
		
			
			REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2777 Code wrapped by DISABLE_NEW_DEPRECATED_INTERFACES is deprecated. So remove it. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Signed-off-by: Shenglei Zhang <shenglei.zhang@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			1762 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1762 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Provides library functions for common UEFI operations. Only available to DXE
 | |
|   and UEFI module types.
 | |
| 
 | |
|   The UEFI Library provides functions and macros that simplify the development of
 | |
|   UEFI Drivers and UEFI Applications.  These functions and macros help manage EFI
 | |
|   events, build simple locks utilizing EFI Task Priority Levels (TPLs), install
 | |
|   EFI Driver Model related protocols, manage Unicode string tables for UEFI Drivers,
 | |
|   and print messages on the console output and standard error devices.
 | |
| 
 | |
|   Note that a reserved macro named MDEPKG_NDEBUG is introduced for the intention
 | |
|   of size reduction when compiler optimization is disabled. If MDEPKG_NDEBUG is
 | |
|   defined, then debug and assert related macros wrapped by it are the NULL implementations.
 | |
| 
 | |
| Copyright (c) 2019, NVIDIA Corporation. All rights reserved.
 | |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __UEFI_LIB_H__
 | |
| #define __UEFI_LIB_H__
 | |
| 
 | |
| #include <IndustryStandard/Acpi.h>
 | |
| 
 | |
| #include <Protocol/DriverBinding.h>
 | |
| #include <Protocol/DriverConfiguration.h>
 | |
| #include <Protocol/ComponentName.h>
 | |
| #include <Protocol/ComponentName2.h>
 | |
| #include <Protocol/DriverDiagnostics.h>
 | |
| #include <Protocol/DriverDiagnostics2.h>
 | |
| #include <Protocol/GraphicsOutput.h>
 | |
| #include <Protocol/DevicePath.h>
 | |
| #include <Protocol/SimpleFileSystem.h>
 | |
| 
 | |
| #include <Library/BaseLib.h>
 | |
| 
 | |
| ///
 | |
| /// Unicode String Table
 | |
| ///
 | |
| typedef struct {
 | |
|   CHAR8   *Language;
 | |
|   CHAR16  *UnicodeString;
 | |
| } EFI_UNICODE_STRING_TABLE;
 | |
| 
 | |
| ///
 | |
| /// EFI Lock Status
 | |
| ///
 | |
| typedef enum {
 | |
|   EfiLockUninitialized = 0,
 | |
|   EfiLockReleased      = 1,
 | |
|   EfiLockAcquired      = 2
 | |
| } EFI_LOCK_STATE;
 | |
| 
 | |
| ///
 | |
| /// EFI Lock
 | |
| ///
 | |
| typedef struct {
 | |
|   EFI_TPL         Tpl;
 | |
|   EFI_TPL         OwnerTpl;
 | |
|   EFI_LOCK_STATE  Lock;
 | |
| } EFI_LOCK;
 | |
| 
 | |
| /**
 | |
|   Macro that returns the number of 100 ns units for a specified number of microseconds.
 | |
|   This is useful for managing EFI timer events.
 | |
| 
 | |
|   @param  Microseconds           The number of microseconds.
 | |
| 
 | |
|   @return The number of 100 ns units equivalent to the number of microseconds specified
 | |
|           by Microseconds.
 | |
| 
 | |
| **/
 | |
| #define EFI_TIMER_PERIOD_MICROSECONDS(Microseconds) MultU64x32((UINT64)(Microseconds), 10)
 | |
| 
 | |
| /**
 | |
|   Macro that returns the number of 100 ns units for a specified number of milliseconds.
 | |
|   This is useful for managing EFI timer events.
 | |
| 
 | |
|   @param  Milliseconds           The number of milliseconds.
 | |
| 
 | |
|   @return The number of 100 ns units equivalent to the number of milliseconds specified
 | |
|           by Milliseconds.
 | |
| 
 | |
| **/
 | |
| #define EFI_TIMER_PERIOD_MILLISECONDS(Milliseconds) MultU64x32((UINT64)(Milliseconds), 10000)
 | |
| 
 | |
| /**
 | |
|   Macro that returns the number of 100 ns units for a specified number of seconds.
 | |
|   This is useful for managing EFI timer events.
 | |
| 
 | |
|   @param  Seconds                The number of seconds.
 | |
| 
 | |
|   @return The number of 100 ns units equivalent to the number of seconds specified
 | |
|           by Seconds.
 | |
| 
 | |
| **/
 | |
| #define EFI_TIMER_PERIOD_SECONDS(Seconds)           MultU64x32((UINT64)(Seconds), 10000000)
 | |
| 
 | |
| /**
 | |
|   Macro that returns the a pointer to the next EFI_MEMORY_DESCRIPTOR in an array
 | |
|   returned from GetMemoryMap().
 | |
| 
 | |
|   @param  MemoryDescriptor  A pointer to an EFI_MEMORY_DESCRIPTOR.
 | |
| 
 | |
|   @param  Size              The size, in bytes, of the current EFI_MEMORY_DESCRIPTOR.
 | |
| 
 | |
|   @return A pointer to the next EFI_MEMORY_DESCRIPTOR.
 | |
| 
 | |
| **/
 | |
| #define NEXT_MEMORY_DESCRIPTOR(MemoryDescriptor, Size) \
 | |
|   ((EFI_MEMORY_DESCRIPTOR *)((UINT8 *)(MemoryDescriptor) + (Size)))
 | |
| 
 | |
| /**
 | |
|   Retrieves a pointer to the system configuration table from the EFI System Table
 | |
|   based on a specified GUID.
 | |
| 
 | |
|   This function searches the list of configuration tables stored in the EFI System Table
 | |
|   for a table with a GUID that matches TableGuid. If a match is found, then a pointer to
 | |
|   the configuration table is returned in Table, and EFI_SUCCESS is returned. If a matching GUID
 | |
|   is not found, then EFI_NOT_FOUND is returned.
 | |
|   If TableGuid is NULL, then ASSERT().
 | |
|   If Table is NULL, then ASSERT().
 | |
| 
 | |
|   @param  TableGuid       The pointer to table's GUID type..
 | |
|   @param  Table           The pointer to the table associated with TableGuid in the EFI System Table.
 | |
| 
 | |
|   @retval EFI_SUCCESS     A configuration table matching TableGuid was found.
 | |
|   @retval EFI_NOT_FOUND   A configuration table matching TableGuid could not be found.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiGetSystemConfigurationTable (
 | |
|   IN  EFI_GUID  *TableGuid,
 | |
|   OUT VOID      **Table
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Creates and returns a notification event and registers that event with all the protocol
 | |
|   instances specified by ProtocolGuid.
 | |
| 
 | |
|   This function causes the notification function to be executed for every protocol of type
 | |
|   ProtocolGuid instance that exists in the system when this function is invoked. If there are
 | |
|   no instances of ProtocolGuid in the handle database at the time this function is invoked,
 | |
|   then the notification function is still executed one time. In addition, every time a protocol
 | |
|   of type ProtocolGuid instance is installed or reinstalled, the notification function is also
 | |
|   executed. This function returns the notification event that was created.
 | |
|   If ProtocolGuid is NULL, then ASSERT().
 | |
|   If NotifyTpl is not a legal TPL value, then ASSERT().
 | |
|   If NotifyFunction is NULL, then ASSERT().
 | |
|   If Registration is NULL, then ASSERT().
 | |
| 
 | |
| 
 | |
|   @param  ProtocolGuid    Supplies GUID of the protocol upon whose installation the event is fired.
 | |
|   @param  NotifyTpl       Supplies the task priority level of the event notifications.
 | |
|   @param  NotifyFunction  Supplies the function to notify when the event is signaled.
 | |
|   @param  NotifyContext   The context parameter to pass to NotifyFunction.
 | |
|   @param  Registration    A pointer to a memory location to receive the registration value.
 | |
|                           This value is passed to LocateHandle() to obtain new handles that
 | |
|                           have been added that support the ProtocolGuid-specified protocol.
 | |
| 
 | |
|   @return The notification event that was created.
 | |
| 
 | |
| **/
 | |
| EFI_EVENT
 | |
| EFIAPI
 | |
| EfiCreateProtocolNotifyEvent(
 | |
|   IN  EFI_GUID          *ProtocolGuid,
 | |
|   IN  EFI_TPL           NotifyTpl,
 | |
|   IN  EFI_EVENT_NOTIFY  NotifyFunction,
 | |
|   IN  VOID              *NotifyContext,  OPTIONAL
 | |
|   OUT VOID              **Registration
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Creates a named event that can be signaled with EfiNamedEventSignal().
 | |
| 
 | |
|   This function creates an event using NotifyTpl, NoifyFunction, and NotifyContext.
 | |
|   This event is signaled with EfiNamedEventSignal(). This provides the ability for one or more
 | |
|   listeners on the same event named by the GUID specified by Name.
 | |
|   If Name is NULL, then ASSERT().
 | |
|   If NotifyTpl is not a legal TPL value, then ASSERT().
 | |
|   If NotifyFunction is NULL, then ASSERT().
 | |
| 
 | |
|   @param  Name                  Supplies GUID name of the event.
 | |
|   @param  NotifyTpl             Supplies the task priority level of the event notifications.
 | |
|   @param  NotifyFunction        Supplies the function to notify when the event is signaled.
 | |
|   @param  NotifyContext         The context parameter to pass to NotifyFunction.
 | |
|   @param  Registration          A pointer to a memory location to receive the registration value.
 | |
| 
 | |
|   @retval EFI_SUCCESS           A named event was created.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There are not enough resources to create the named event.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiNamedEventListen (
 | |
|   IN CONST EFI_GUID    *Name,
 | |
|   IN EFI_TPL           NotifyTpl,
 | |
|   IN EFI_EVENT_NOTIFY  NotifyFunction,
 | |
|   IN CONST VOID        *NotifyContext,  OPTIONAL
 | |
|   OUT VOID             *Registration OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Signals a named event created with EfiNamedEventListen().
 | |
| 
 | |
|   This function signals the named event specified by Name. The named event must have been
 | |
|   created with EfiNamedEventListen().
 | |
|   If Name is NULL, then ASSERT().
 | |
| 
 | |
|   @param  Name                  Supplies the GUID name of the event.
 | |
| 
 | |
|   @retval EFI_SUCCESS           A named event was signaled.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There are not enough resources to signal the named event.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiNamedEventSignal (
 | |
|   IN CONST EFI_GUID  *Name
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Signals an event group by placing a new event in the group temporarily and
 | |
|   signaling it.
 | |
| 
 | |
|   @param[in] EventGroup          Supplies the unique identifier of the event
 | |
|                                  group to signal.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The event group was signaled successfully.
 | |
|   @retval EFI_INVALID_PARAMETER  EventGroup is NULL.
 | |
|   @return                        Error codes that report problems about event
 | |
|                                  creation or signaling.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiEventGroupSignal (
 | |
|   IN CONST EFI_GUID *EventGroup
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   An empty function that can be used as NotifyFunction parameter of
 | |
|   CreateEvent() or CreateEventEx().
 | |
| 
 | |
|   @param Event              Event whose notification function is being invoked.
 | |
|   @param Context            The pointer to the notification function's context,
 | |
|                             which is implementation-dependent.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| EfiEventEmptyFunction (
 | |
|   IN EFI_EVENT              Event,
 | |
|   IN VOID                   *Context
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Returns the current TPL.
 | |
| 
 | |
|   This function returns the current TPL.  There is no EFI service to directly
 | |
|   retrieve the current TPL. Instead, the RaiseTPL() function is used to raise
 | |
|   the TPL to TPL_HIGH_LEVEL.  This will return the current TPL.  The TPL level
 | |
|   can then immediately be restored back to the current TPL level with a call
 | |
|   to RestoreTPL().
 | |
| 
 | |
|   @return The current TPL.
 | |
| 
 | |
| **/
 | |
| EFI_TPL
 | |
| EFIAPI
 | |
| EfiGetCurrentTpl (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initializes a basic mutual exclusion lock.
 | |
| 
 | |
|   This function initializes a basic mutual exclusion lock to the released state
 | |
|   and returns the lock.  Each lock provides mutual exclusion access at its task
 | |
|   priority level.  Since there is no preemption or multiprocessor support in EFI,
 | |
|   acquiring the lock only consists of raising to the locks TPL.
 | |
|   If Lock is NULL, then ASSERT().
 | |
|   If Priority is not a valid TPL value, then ASSERT().
 | |
| 
 | |
|   @param  Lock       A pointer to the lock data structure to initialize.
 | |
|   @param  Priority   The EFI TPL associated with the lock.
 | |
| 
 | |
|   @return The lock.
 | |
| 
 | |
| **/
 | |
| EFI_LOCK *
 | |
| EFIAPI
 | |
| EfiInitializeLock (
 | |
|   IN OUT EFI_LOCK  *Lock,
 | |
|   IN EFI_TPL        Priority
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initializes a basic mutual exclusion lock.
 | |
| 
 | |
|   This macro initializes the contents of a basic mutual exclusion lock to the
 | |
|   released state.  Each lock provides mutual exclusion access at its task
 | |
|   priority level.  Since there is no preemption or multiprocessor support in EFI,
 | |
|   acquiring the lock only consists of raising to the locks TPL.
 | |
| 
 | |
|   @param  Priority  The task priority level of the lock.
 | |
| 
 | |
|   @return The lock.
 | |
| 
 | |
| **/
 | |
| #define EFI_INITIALIZE_LOCK_VARIABLE(Priority) \
 | |
|   {Priority, TPL_APPLICATION, EfiLockReleased }
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Macro that calls DebugAssert() if an EFI_LOCK structure is not in the locked state.
 | |
| 
 | |
|   If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED
 | |
|   bit of PcdDebugProperyMask is set, then this macro evaluates the EFI_LOCK
 | |
|   structure specified by Lock.  If Lock is not in the locked state, then
 | |
|   DebugAssert() is called passing in the source filename, source line number,
 | |
|   and Lock.
 | |
| 
 | |
|   If Lock is NULL, then ASSERT().
 | |
| 
 | |
|   @param  LockParameter  A pointer to the lock to acquire.
 | |
| 
 | |
| **/
 | |
| #if !defined(MDEPKG_NDEBUG)
 | |
|   #define ASSERT_LOCKED(LockParameter)                  \
 | |
|     do {                                                \
 | |
|       if (DebugAssertEnabled ()) {                      \
 | |
|         ASSERT (LockParameter != NULL);                 \
 | |
|         if ((LockParameter)->Lock != EfiLockAcquired) { \
 | |
|           _ASSERT (LockParameter not locked);           \
 | |
|         }                                               \
 | |
|       }                                                 \
 | |
|     } while (FALSE)
 | |
| #else
 | |
|   #define ASSERT_LOCKED(LockParameter)
 | |
| #endif
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Acquires ownership of a lock.
 | |
| 
 | |
|   This function raises the system's current task priority level to the task
 | |
|   priority level of the mutual exclusion lock.  Then, it places the lock in the
 | |
|   acquired state.
 | |
|   If Lock is NULL, then ASSERT().
 | |
|   If Lock is not initialized, then ASSERT().
 | |
|   If Lock is already in the acquired state, then ASSERT().
 | |
| 
 | |
|   @param  Lock              A pointer to the lock to acquire.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| EfiAcquireLock (
 | |
|   IN EFI_LOCK  *Lock
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Acquires ownership of a lock.
 | |
| 
 | |
|   This function raises the system's current task priority level to the task priority
 | |
|   level of the mutual exclusion lock.  Then, it attempts to place the lock in the acquired state.
 | |
|   If the lock is already in the acquired state, then EFI_ACCESS_DENIED is returned.
 | |
|   Otherwise, EFI_SUCCESS is returned.
 | |
|   If Lock is NULL, then ASSERT().
 | |
|   If Lock is not initialized, then ASSERT().
 | |
| 
 | |
|   @param  Lock              A pointer to the lock to acquire.
 | |
| 
 | |
|   @retval EFI_SUCCESS       The lock was acquired.
 | |
|   @retval EFI_ACCESS_DENIED The lock could not be acquired because it is already owned.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiAcquireLockOrFail (
 | |
|   IN EFI_LOCK  *Lock
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Releases ownership of a lock.
 | |
| 
 | |
|   This function transitions a mutual exclusion lock from the acquired state to
 | |
|   the released state, and restores the system's task priority level to its
 | |
|   previous level.
 | |
|   If Lock is NULL, then ASSERT().
 | |
|   If Lock is not initialized, then ASSERT().
 | |
|   If Lock is already in the released state, then ASSERT().
 | |
| 
 | |
|   @param  Lock  A pointer to the lock to release.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| EfiReleaseLock (
 | |
|   IN EFI_LOCK  *Lock
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Tests whether a controller handle is being managed by a specific driver.
 | |
| 
 | |
|   This function tests whether the driver specified by DriverBindingHandle is
 | |
|   currently managing the controller specified by ControllerHandle.  This test
 | |
|   is performed by evaluating if the the protocol specified by ProtocolGuid is
 | |
|   present on ControllerHandle and is was opened by DriverBindingHandle with an
 | |
|   attribute of EFI_OPEN_PROTOCOL_BY_DRIVER.
 | |
|   If ProtocolGuid is NULL, then ASSERT().
 | |
| 
 | |
|   @param  ControllerHandle     A handle for a controller to test.
 | |
|   @param  DriverBindingHandle  Specifies the driver binding handle for the
 | |
|                                driver.
 | |
|   @param  ProtocolGuid         Specifies the protocol that the driver specified
 | |
|                                by DriverBindingHandle opens in its Start()
 | |
|                                function.
 | |
| 
 | |
|   @retval EFI_SUCCESS          ControllerHandle is managed by the driver
 | |
|                                specified by DriverBindingHandle.
 | |
|   @retval EFI_UNSUPPORTED      ControllerHandle is not managed by the driver
 | |
|                                specified by DriverBindingHandle.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiTestManagedDevice (
 | |
|   IN CONST EFI_HANDLE       ControllerHandle,
 | |
|   IN CONST EFI_HANDLE       DriverBindingHandle,
 | |
|   IN CONST EFI_GUID         *ProtocolGuid
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Tests whether a child handle is a child device of the controller.
 | |
| 
 | |
|   This function tests whether ChildHandle is one of the children of
 | |
|   ControllerHandle.  This test is performed by checking to see if the protocol
 | |
|   specified by ProtocolGuid is present on ControllerHandle and opened by
 | |
|   ChildHandle with an attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER.
 | |
|   If ProtocolGuid is NULL, then ASSERT().
 | |
| 
 | |
|   @param  ControllerHandle     A handle for a (parent) controller to test.
 | |
|   @param  ChildHandle          A child handle to test.
 | |
|   @param  ProtocolGuid         Supplies the protocol that the child controller
 | |
|                                opens on its parent controller.
 | |
| 
 | |
|   @retval EFI_SUCCESS          ChildHandle is a child of the ControllerHandle.
 | |
|   @retval EFI_UNSUPPORTED      ChildHandle is not a child of the
 | |
|                                ControllerHandle.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiTestChildHandle (
 | |
|   IN CONST EFI_HANDLE       ControllerHandle,
 | |
|   IN CONST EFI_HANDLE       ChildHandle,
 | |
|   IN CONST EFI_GUID         *ProtocolGuid
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function checks the supported languages list for a target language,
 | |
|   This only supports RFC 4646 Languages.
 | |
| 
 | |
|   @param  SupportedLanguages  The supported languages
 | |
|   @param  TargetLanguage      The target language
 | |
| 
 | |
|   @retval Returns EFI_SUCCESS if the language is supported,
 | |
|           EFI_UNSUPPORTED otherwise
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| IsLanguageSupported (
 | |
|   IN CONST CHAR8 *SupportedLanguages,
 | |
|   IN CONST CHAR8 *TargetLanguage
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function looks up a Unicode string in UnicodeStringTable.
 | |
| 
 | |
|   If Language is a member of SupportedLanguages and a Unicode string is found in
 | |
|   UnicodeStringTable that matches the language code specified by Language, then it
 | |
|   is returned in UnicodeString.
 | |
| 
 | |
|   @param  Language                A pointer to the ISO 639-2 language code for the
 | |
|                                   Unicode string to look up and return.
 | |
|   @param  SupportedLanguages      A pointer to the set of ISO 639-2 language codes
 | |
|                                   that the Unicode string table supports.  Language
 | |
|                                   must be a member of this set.
 | |
|   @param  UnicodeStringTable      A pointer to the table of Unicode strings.
 | |
|   @param  UnicodeString           A pointer to the Unicode string from UnicodeStringTable
 | |
|                                   that matches the language specified by Language.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The Unicode string that matches the language
 | |
|                                   specified by Language was found
 | |
|                                   in the table of Unicode strings UnicodeStringTable,
 | |
|                                   and it was returned in UnicodeString.
 | |
|   @retval EFI_INVALID_PARAMETER   Language is NULL.
 | |
|   @retval EFI_INVALID_PARAMETER   UnicodeString is NULL.
 | |
|   @retval EFI_UNSUPPORTED         SupportedLanguages is NULL.
 | |
|   @retval EFI_UNSUPPORTED         UnicodeStringTable is NULL.
 | |
|   @retval EFI_UNSUPPORTED         The language specified by Language is not a
 | |
|                                   member of SupportedLanguages.
 | |
|   @retval EFI_UNSUPPORTED         The language specified by Language is not
 | |
|                                   supported by UnicodeStringTable.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| LookupUnicodeString (
 | |
|   IN CONST CHAR8                     *Language,
 | |
|   IN CONST CHAR8                     *SupportedLanguages,
 | |
|   IN CONST EFI_UNICODE_STRING_TABLE  *UnicodeStringTable,
 | |
|   OUT CHAR16                         **UnicodeString
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function looks up a Unicode string in UnicodeStringTable.
 | |
| 
 | |
|   If Language is a member of SupportedLanguages and a Unicode string is found in
 | |
|   UnicodeStringTable that matches the language code specified by Language, then
 | |
|   it is returned in UnicodeString.
 | |
| 
 | |
|   @param  Language             A pointer to an ASCII string containing the ISO 639-2 or the
 | |
|                                RFC 4646 language code for the Unicode string to look up and
 | |
|                                return. If Iso639Language is TRUE, then this ASCII string is
 | |
|                                not assumed to be Null-terminated, and only the first three
 | |
|                                characters are used. If Iso639Language is FALSE, then this ASCII
 | |
|                                string must be Null-terminated.
 | |
|   @param  SupportedLanguages   A pointer to a Null-terminated ASCII string that contains a
 | |
|                                set of ISO 639-2 or RFC 4646 language codes that the Unicode
 | |
|                                string table supports.  Language must be a member of this set.
 | |
|                                If Iso639Language is TRUE, then this string contains one or more
 | |
|                                ISO 639-2 language codes with no separator characters. If Iso639Language
 | |
|                                is FALSE, then is string contains one or more RFC 4646 language
 | |
|                                codes separated by ';'.
 | |
|   @param  UnicodeStringTable   A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE
 | |
|                                is defined in "Related Definitions".
 | |
|   @param  UnicodeString        A pointer to the Null-terminated Unicode string from UnicodeStringTable
 | |
|                                that matches the language specified by Language.
 | |
|   @param  Iso639Language       Specifies the supported language code format. If it is TRUE, then
 | |
|                                Language and SupportedLanguages follow ISO 639-2 language code format.
 | |
|                                Otherwise, they follow the RFC 4646 language code format.
 | |
| 
 | |
| 
 | |
|   @retval  EFI_SUCCESS            The Unicode string that matches the language specified by Language
 | |
|                                   was found in the table of Unicode strings UnicodeStringTable, and
 | |
|                                   it was returned in UnicodeString.
 | |
|   @retval  EFI_INVALID_PARAMETER  Language is NULL.
 | |
|   @retval  EFI_INVALID_PARAMETER  UnicodeString is NULL.
 | |
|   @retval  EFI_UNSUPPORTED        SupportedLanguages is NULL.
 | |
|   @retval  EFI_UNSUPPORTED        UnicodeStringTable is NULL.
 | |
|   @retval  EFI_UNSUPPORTED        The language specified by Language is not a member of SupportedLanguages.
 | |
|   @retval  EFI_UNSUPPORTED        The language specified by Language is not supported by UnicodeStringTable.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| LookupUnicodeString2 (
 | |
|   IN CONST CHAR8                     *Language,
 | |
|   IN CONST CHAR8                     *SupportedLanguages,
 | |
|   IN CONST EFI_UNICODE_STRING_TABLE  *UnicodeStringTable,
 | |
|   OUT CHAR16                         **UnicodeString,
 | |
|   IN BOOLEAN                         Iso639Language
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function adds a Unicode string to UnicodeStringTable.
 | |
| 
 | |
|   If Language is a member of SupportedLanguages then UnicodeString is added to
 | |
|   UnicodeStringTable.  New buffers are allocated for both Language and
 | |
|   UnicodeString.  The contents of Language and UnicodeString are copied into
 | |
|   these new buffers.  These buffers are automatically freed when
 | |
|   FreeUnicodeStringTable() is called.
 | |
| 
 | |
|   @param  Language                A pointer to the ISO 639-2 language code for the Unicode
 | |
|                                   string to add.
 | |
|   @param  SupportedLanguages      A pointer to the set of ISO 639-2 language codes
 | |
|                                   that the Unicode string table supports.
 | |
|                                   Language must be a member of this set.
 | |
|   @param  UnicodeStringTable      A pointer to the table of Unicode strings.
 | |
|   @param  UnicodeString           A pointer to the Unicode string to add.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The Unicode string that matches the language
 | |
|                                   specified by Language was found in the table of
 | |
|                                   Unicode strings UnicodeStringTable, and it was
 | |
|                                   returned in UnicodeString.
 | |
|   @retval EFI_INVALID_PARAMETER   Language is NULL.
 | |
|   @retval EFI_INVALID_PARAMETER   UnicodeString is NULL.
 | |
|   @retval EFI_INVALID_PARAMETER   UnicodeString is an empty string.
 | |
|   @retval EFI_UNSUPPORTED         SupportedLanguages is NULL.
 | |
|   @retval EFI_ALREADY_STARTED     A Unicode string with language Language is
 | |
|                                   already present in UnicodeStringTable.
 | |
|   @retval EFI_OUT_OF_RESOURCES    There is not enough memory to add another
 | |
|                                   Unicode string to UnicodeStringTable.
 | |
|   @retval EFI_UNSUPPORTED         The language specified by Language is not a
 | |
|                                   member of SupportedLanguages.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| AddUnicodeString (
 | |
|   IN     CONST CHAR8               *Language,
 | |
|   IN     CONST CHAR8               *SupportedLanguages,
 | |
|   IN OUT EFI_UNICODE_STRING_TABLE  **UnicodeStringTable,
 | |
|   IN     CONST CHAR16              *UnicodeString
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function adds the Null-terminated Unicode string specified by UnicodeString
 | |
|   to UnicodeStringTable.
 | |
| 
 | |
|   If Language is a member of SupportedLanguages then UnicodeString is added to
 | |
|   UnicodeStringTable.  New buffers are allocated for both Language and UnicodeString.
 | |
|   The contents of Language and UnicodeString are copied into these new buffers.
 | |
|   These buffers are automatically freed when EfiLibFreeUnicodeStringTable() is called.
 | |
| 
 | |
|   @param  Language            A pointer to an ASCII string containing the ISO 639-2 or
 | |
|                               the RFC 4646 language code for the Unicode string to add.
 | |
|                               If Iso639Language is TRUE, then this ASCII string is not
 | |
|                               assumed to be Null-terminated, and only the first three
 | |
|                               chacters are used. If Iso639Language is FALSE, then this
 | |
|                               ASCII string must be Null-terminated.
 | |
|   @param  SupportedLanguages  A pointer to a Null-terminated ASCII string that contains
 | |
|                               a set of ISO 639-2 or RFC 4646 language codes that the Unicode
 | |
|                               string table supports.  Language must be a member of this set.
 | |
|                               If Iso639Language is TRUE, then this string contains one or more
 | |
|                               ISO 639-2 language codes with no separator characters.
 | |
|                               If Iso639Language is FALSE, then is string contains one or more
 | |
|                               RFC 4646 language codes separated by ';'.
 | |
|   @param  UnicodeStringTable  A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE
 | |
|                               is defined in "Related Definitions".
 | |
|   @param  UnicodeString       A pointer to the Unicode string to add.
 | |
|   @param  Iso639Language      Specifies the supported language code format. If it is TRUE,
 | |
|                               then Language and SupportedLanguages follow ISO 639-2 language code format.
 | |
|                               Otherwise, they follow RFC 4646 language code format.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The Unicode string that matches the language specified by
 | |
|                                  Language was found in the table of Unicode strings UnicodeStringTable,
 | |
|                                  and it was returned in UnicodeString.
 | |
|   @retval EFI_INVALID_PARAMETER  Language is NULL.
 | |
|   @retval EFI_INVALID_PARAMETER  UnicodeString is NULL.
 | |
|   @retval EFI_INVALID_PARAMETER  UnicodeString is an empty string.
 | |
|   @retval EFI_UNSUPPORTED        SupportedLanguages is NULL.
 | |
|   @retval EFI_ALREADY_STARTED    A Unicode string with language Language is already present in
 | |
|                                  UnicodeStringTable.
 | |
|   @retval EFI_OUT_OF_RESOURCES   There is not enough memory to add another Unicode string UnicodeStringTable.
 | |
|   @retval EFI_UNSUPPORTED        The language specified by Language is not a member of SupportedLanguages.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| AddUnicodeString2 (
 | |
|   IN     CONST CHAR8               *Language,
 | |
|   IN     CONST CHAR8               *SupportedLanguages,
 | |
|   IN OUT EFI_UNICODE_STRING_TABLE  **UnicodeStringTable,
 | |
|   IN     CONST CHAR16              *UnicodeString,
 | |
|   IN     BOOLEAN                   Iso639Language
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function frees the table of Unicode strings in UnicodeStringTable.
 | |
| 
 | |
|   If UnicodeStringTable is NULL, then EFI_SUCCESS is returned.
 | |
|   Otherwise, each language code, and each Unicode string in the Unicode string
 | |
|   table are freed, and EFI_SUCCESS is returned.
 | |
| 
 | |
|   @param  UnicodeStringTable  A pointer to the table of Unicode strings.
 | |
| 
 | |
|   @retval EFI_SUCCESS         The Unicode string table was freed.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| FreeUnicodeStringTable (
 | |
|   IN EFI_UNICODE_STRING_TABLE  *UnicodeStringTable
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Returns the status whether get the variable success. The function retrieves
 | |
|   variable  through the UEFI Runtime Service GetVariable().  The
 | |
|   returned buffer is allocated using AllocatePool().  The caller is responsible
 | |
|   for freeing this buffer with FreePool().
 | |
| 
 | |
|   If Name  is NULL, then ASSERT().
 | |
|   If Guid  is NULL, then ASSERT().
 | |
|   If Value is NULL, then ASSERT().
 | |
| 
 | |
|   @param[in]  Name  The pointer to a Null-terminated Unicode string.
 | |
|   @param[in]  Guid  The pointer to an EFI_GUID structure
 | |
|   @param[out] Value The buffer point saved the variable info.
 | |
|   @param[out] Size  The buffer size of the variable.
 | |
| 
 | |
|   @retval EFI_OUT_OF_RESOURCES      Allocate buffer failed.
 | |
|   @retval EFI_SUCCESS               Find the specified variable.
 | |
|   @retval Others Errors             Return errors from call to gRT->GetVariable.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| GetVariable2 (
 | |
|   IN CONST CHAR16    *Name,
 | |
|   IN CONST EFI_GUID  *Guid,
 | |
|   OUT VOID           **Value,
 | |
|   OUT UINTN          *Size OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Returns a pointer to an allocated buffer that contains the contents of a
 | |
|   variable retrieved through the UEFI Runtime Service GetVariable().  This
 | |
|   function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables.
 | |
|   The returned buffer is allocated using AllocatePool().  The caller is
 | |
|   responsible for freeing this buffer with FreePool().
 | |
| 
 | |
|   If Name  is NULL, then ASSERT().
 | |
|   If Value is NULL, then ASSERT().
 | |
| 
 | |
|   @param[in]  Name  The pointer to a Null-terminated Unicode string.
 | |
|   @param[out] Value The buffer point saved the variable info.
 | |
|   @param[out] Size  The buffer size of the variable.
 | |
| 
 | |
|   @retval EFI_OUT_OF_RESOURCES      Allocate buffer failed.
 | |
|   @retval EFI_SUCCESS               Find the specified variable.
 | |
|   @retval Others Errors             Return errors from call to gRT->GetVariable.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| GetEfiGlobalVariable2 (
 | |
|   IN CONST CHAR16    *Name,
 | |
|   OUT VOID           **Value,
 | |
|   OUT UINTN          *Size OPTIONAL
 | |
|   );
 | |
| 
 | |
| /** Return the attributes of the variable.
 | |
| 
 | |
|   Returns the status whether get the variable success. The function retrieves
 | |
|   variable  through the UEFI Runtime Service GetVariable().  The
 | |
|   returned buffer is allocated using AllocatePool().  The caller is responsible
 | |
|   for freeing this buffer with FreePool().  The attributes are returned if
 | |
|   the caller provides a valid Attribute parameter.
 | |
| 
 | |
|   If Name  is NULL, then ASSERT().
 | |
|   If Guid  is NULL, then ASSERT().
 | |
|   If Value is NULL, then ASSERT().
 | |
| 
 | |
|   @param[in]  Name  The pointer to a Null-terminated Unicode string.
 | |
|   @param[in]  Guid  The pointer to an EFI_GUID structure
 | |
|   @param[out] Value The buffer point saved the variable info.
 | |
|   @param[out] Size  The buffer size of the variable.
 | |
|   @param[out] Attr  The pointer to the variable attributes as found in var store
 | |
| 
 | |
|   @retval EFI_OUT_OF_RESOURCES      Allocate buffer failed.
 | |
|   @retval EFI_SUCCESS               Find the specified variable.
 | |
|   @retval Others Errors             Return errors from call to gRT->GetVariable.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| GetVariable3(
 | |
|   IN CONST CHAR16       *Name,
 | |
|   IN CONST EFI_GUID     *Guid,
 | |
|      OUT VOID           **Value,
 | |
|      OUT UINTN          *Size OPTIONAL,
 | |
|      OUT UINT32         *Attr OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Returns a pointer to an allocated buffer that contains the best matching language
 | |
|   from a set of supported languages.
 | |
| 
 | |
|   This function supports both ISO 639-2 and RFC 4646 language codes, but language
 | |
|   code types may not be mixed in a single call to this function.  The language
 | |
|   code returned is allocated using AllocatePool().  The caller is responsible for
 | |
|   freeing the allocated buffer using FreePool().  This function supports a variable
 | |
|   argument list that allows the caller to pass in a prioritized list of language
 | |
|   codes to test against all the language codes in SupportedLanguages.
 | |
| 
 | |
|   If SupportedLanguages is NULL, then ASSERT().
 | |
| 
 | |
|   @param[in]  SupportedLanguages  A pointer to a Null-terminated ASCII string that
 | |
|                                   contains a set of language codes in the format
 | |
|                                   specified by Iso639Language.
 | |
|   @param[in]  Iso639Language      If not zero, then all language codes are assumed to be
 | |
|                                   in ISO 639-2 format.  If zero, then all language
 | |
|                                   codes are assumed to be in RFC 4646 language format
 | |
|   @param[in]  ...                 A variable argument list that contains pointers to
 | |
|                                   Null-terminated ASCII strings that contain one or more
 | |
|                                   language codes in the format specified by Iso639Language.
 | |
|                                   The first language code from each of these language
 | |
|                                   code lists is used to determine if it is an exact or
 | |
|                                   close match to any of the language codes in
 | |
|                                   SupportedLanguages.  Close matches only apply to RFC 4646
 | |
|                                   language codes, and the matching algorithm from RFC 4647
 | |
|                                   is used to determine if a close match is present.  If
 | |
|                                   an exact or close match is found, then the matching
 | |
|                                   language code from SupportedLanguages is returned.  If
 | |
|                                   no matches are found, then the next variable argument
 | |
|                                   parameter is evaluated.  The variable argument list
 | |
|                                   is terminated by a NULL.
 | |
| 
 | |
|   @retval NULL   The best matching language could not be found in SupportedLanguages.
 | |
|   @retval NULL   There are not enough resources available to return the best matching
 | |
|                  language.
 | |
|   @retval Other  A pointer to a Null-terminated ASCII string that is the best matching
 | |
|                  language in SupportedLanguages.
 | |
| 
 | |
| **/
 | |
| CHAR8 *
 | |
| EFIAPI
 | |
| GetBestLanguage (
 | |
|   IN CONST CHAR8  *SupportedLanguages,
 | |
|   IN UINTN        Iso639Language,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Draws a dialog box to the console output device specified by
 | |
|   ConOut defined in the EFI_SYSTEM_TABLE and waits for a keystroke
 | |
|   from the console input device specified by ConIn defined in the
 | |
|   EFI_SYSTEM_TABLE.
 | |
| 
 | |
|   If there are no strings in the variable argument list, then ASSERT().
 | |
|   If all the strings in the variable argument list are empty, then ASSERT().
 | |
| 
 | |
|   @param[in]   Attribute  Specifies the foreground and background color of the popup.
 | |
|   @param[out]  Key        A pointer to the EFI_KEY value of the key that was
 | |
|                           pressed.  This is an optional parameter that may be NULL.
 | |
|                           If it is NULL then no wait for a keypress will be performed.
 | |
|   @param[in]  ...         The variable argument list that contains pointers to Null-
 | |
|                           terminated Unicode strings to display in the dialog box.
 | |
|                           The variable argument list is terminated by a NULL.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| CreatePopUp (
 | |
|   IN  UINTN          Attribute,
 | |
|   OUT EFI_INPUT_KEY  *Key,      OPTIONAL
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Retrieves the width of a Unicode character.
 | |
| 
 | |
|   This function computes and returns the width of the Unicode character specified
 | |
|   by UnicodeChar.
 | |
| 
 | |
|   @param  UnicodeChar   A Unicode character.
 | |
| 
 | |
|   @retval 0             The width if UnicodeChar could not be determined.
 | |
|   @retval 1             UnicodeChar is a narrow glyph.
 | |
|   @retval 2             UnicodeChar is a wide glyph.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| GetGlyphWidth (
 | |
|   IN CHAR16  UnicodeChar
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Computes the display length of a Null-terminated Unicode String.
 | |
| 
 | |
|   This function computes and returns the display length of the Null-terminated Unicode
 | |
|   string specified by String.  If String is NULL then 0 is returned. If any of the widths
 | |
|   of the Unicode characters in String can not be determined, then 0 is returned. The display
 | |
|   width of String can be computed by summing the display widths of each Unicode character
 | |
|   in String.  Unicode characters that are narrow glyphs have a width of 1, and Unicode
 | |
|   characters that are width glyphs have a width of 2.
 | |
|   If String is not aligned on a 16-bit boundary, then ASSERT().
 | |
| 
 | |
|   @param  String      A pointer to a Null-terminated Unicode string.
 | |
| 
 | |
|   @return The display length of the Null-terminated Unicode string specified by String.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| UnicodeStringDisplayLength (
 | |
|   IN CONST CHAR16  *String
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Functions that abstract early Framework contamination of UEFI.
 | |
| //
 | |
| /**
 | |
|   Create, Signal, and Close the Ready to Boot event using EfiSignalEventReadyToBoot().
 | |
| 
 | |
|   This function abstracts the signaling of the Ready to Boot Event. The Framework moved
 | |
|   from a proprietary to UEFI 2.0 based mechanism. This library abstracts the caller
 | |
|   from how this event is created to prevent to code form having to change with the
 | |
|   version of the specification supported.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| EfiSignalEventReadyToBoot (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Create, Signal, and Close the Ready to Boot event using EfiSignalEventLegacyBoot().
 | |
| 
 | |
|   This function abstracts the signaling of the Legacy Boot Event. The Framework moved from
 | |
|   a proprietary to UEFI 2.0 based mechanism.  This library abstracts the caller from how
 | |
|   this event is created to prevent to code form having to change with the version of the
 | |
|   specification supported.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| EfiSignalEventLegacyBoot (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Creates an EFI event in the Legacy Boot Event Group.
 | |
| 
 | |
|   Prior to UEFI 2.0 this was done via a non blessed UEFI extensions and this library
 | |
|   abstracts the implementation mechanism of this event from the caller. This function
 | |
|   abstracts the creation of the Legacy Boot Event. The Framework moved from a proprietary
 | |
|   to UEFI 2.0 based mechanism.  This library abstracts the caller from how this event
 | |
|   is created to prevent to code form having to change with the version of the
 | |
|   specification supported.
 | |
|   If LegacyBootEvent is NULL, then ASSERT().
 | |
| 
 | |
|   @param  LegacyBootEvent   Returns the EFI event returned from gBS->CreateEvent(Ex).
 | |
| 
 | |
|   @retval EFI_SUCCESS       The event was created.
 | |
|   @retval Other             The event was not created.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiCreateEventLegacyBoot (
 | |
|   OUT EFI_EVENT  *LegacyBootEvent
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Create an EFI event in the Legacy Boot Event Group and allows
 | |
|   the caller to specify a notification function.
 | |
| 
 | |
|   This function abstracts the creation of the Legacy Boot Event.
 | |
|   The Framework moved from a proprietary to UEFI 2.0 based mechanism.
 | |
|   This library abstracts the caller from how this event is created to prevent
 | |
|   to code form having to change with the version of the specification supported.
 | |
|   If LegacyBootEvent is NULL, then ASSERT().
 | |
| 
 | |
|   @param  NotifyTpl         The task priority level of the event.
 | |
|   @param  NotifyFunction    The notification function to call when the event is signaled.
 | |
|   @param  NotifyContext     The content to pass to NotifyFunction when the event is signaled.
 | |
|   @param  LegacyBootEvent   Returns the EFI event returned from gBS->CreateEvent(Ex).
 | |
| 
 | |
|   @retval EFI_SUCCESS       The event was created.
 | |
|   @retval Other             The event was not created.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiCreateEventLegacyBootEx (
 | |
|   IN  EFI_TPL           NotifyTpl,
 | |
|   IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL
 | |
|   IN  VOID              *NotifyContext,  OPTIONAL
 | |
|   OUT EFI_EVENT         *LegacyBootEvent
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Create an EFI event in the Ready To Boot Event Group.
 | |
| 
 | |
|   Prior to UEFI 2.0 this was done via a non-standard UEFI extension, and this library
 | |
|   abstracts the implementation mechanism of this event from the caller.
 | |
|   This function abstracts the creation of the Ready to Boot Event.  The Framework
 | |
|   moved from a proprietary to UEFI 2.0-based mechanism.  This library abstracts
 | |
|   the caller from how this event is created to prevent the code form having to
 | |
|   change with the version of the specification supported.
 | |
|   If ReadyToBootEvent is NULL, then ASSERT().
 | |
| 
 | |
|   @param  ReadyToBootEvent   Returns the EFI event returned from gBS->CreateEvent(Ex).
 | |
| 
 | |
|   @retval EFI_SUCCESS       The event was created.
 | |
|   @retval Other             The event was not created.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiCreateEventReadyToBoot (
 | |
|   OUT EFI_EVENT  *ReadyToBootEvent
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Create an EFI event in the Ready To Boot Event Group and allows
 | |
|   the caller to specify a notification function.
 | |
| 
 | |
|   This function abstracts the creation of the Ready to Boot Event.
 | |
|   The Framework moved from a proprietary to UEFI 2.0 based mechanism.
 | |
|   This library abstracts the caller from how this event is created to prevent
 | |
|   to code form having to change with the version of the specification supported.
 | |
|   If ReadyToBootEvent is NULL, then ASSERT().
 | |
| 
 | |
|   @param  NotifyTpl         The task priority level of the event.
 | |
|   @param  NotifyFunction    The notification function to call when the event is signaled.
 | |
|   @param  NotifyContext     The content to pass to NotifyFunction when the event is signaled.
 | |
|   @param  ReadyToBootEvent  Returns the EFI event returned from gBS->CreateEvent(Ex).
 | |
| 
 | |
|   @retval EFI_SUCCESS       The event was created.
 | |
|   @retval Other             The event was not created.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiCreateEventReadyToBootEx (
 | |
|   IN  EFI_TPL           NotifyTpl,
 | |
|   IN  EFI_EVENT_NOTIFY  NotifyFunction,  OPTIONAL
 | |
|   IN  VOID              *NotifyContext,  OPTIONAL
 | |
|   OUT EFI_EVENT         *ReadyToBootEvent
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initialize a Firmware Volume (FV) Media Device Path node.
 | |
| 
 | |
|   The Framework FwVol Device Path changed to conform to the UEFI 2.0 specification.
 | |
|   This library function abstracts initializing a device path node.
 | |
|   Initialize the MEDIA_FW_VOL_FILEPATH_DEVICE_PATH data structure.  This device
 | |
|   path changed in the DXE CIS version 0.92 in a non back ward compatible way to
 | |
|   not conflict with the UEFI 2.0 specification.  This function abstracts the
 | |
|   differences from the caller.
 | |
|   If FvDevicePathNode is NULL, then ASSERT().
 | |
|   If NameGuid is NULL, then ASSERT().
 | |
| 
 | |
|   @param  FvDevicePathNode  The pointer to a FV device path node to initialize
 | |
|   @param  NameGuid          FV file name to use in FvDevicePathNode
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| EfiInitializeFwVolDevicepathNode (
 | |
|   IN OUT MEDIA_FW_VOL_FILEPATH_DEVICE_PATH  *FvDevicePathNode,
 | |
|   IN CONST EFI_GUID                         *NameGuid
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Check to see if the Firmware Volume (FV) Media Device Path is valid
 | |
| 
 | |
|   The Framework FwVol Device Path changed to conform to the UEFI 2.0 specification.
 | |
|   This library function abstracts validating a device path node.
 | |
|   Check the MEDIA_FW_VOL_FILEPATH_DEVICE_PATH data structure to see if it's valid.
 | |
|   If it is valid, then return the GUID file name from the device path node.  Otherwise,
 | |
|   return NULL.  This device path changed in the DXE CIS version 0.92 in a non backward
 | |
|   compatible way to not conflict with the UEFI 2.0 specification.  This function abstracts
 | |
|   the differences from the caller.
 | |
|   If FvDevicePathNode is NULL, then ASSERT().
 | |
| 
 | |
|   @param  FvDevicePathNode  The pointer to FV device path to check.
 | |
| 
 | |
|   @retval NULL              FvDevicePathNode is not valid.
 | |
|   @retval Other             FvDevicePathNode is valid and pointer to NameGuid was returned.
 | |
| 
 | |
| **/
 | |
| EFI_GUID *
 | |
| EFIAPI
 | |
| EfiGetNameGuidFromFwVolDevicePathNode (
 | |
|   IN CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH  *FvDevicePathNode
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Prints a formatted Unicode string to the console output device specified by
 | |
|   ConOut defined in the EFI_SYSTEM_TABLE.
 | |
| 
 | |
|   This function prints a formatted Unicode string to the console output device
 | |
|   specified by ConOut in EFI_SYSTEM_TABLE and returns the number of Unicode
 | |
|   characters that printed to ConOut.  If the length of the formatted Unicode
 | |
|   string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
 | |
|   PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
 | |
|   If Format is NULL, then ASSERT().
 | |
|   If Format is not aligned on a 16-bit boundary, then ASSERT().
 | |
|   If gST->ConOut is NULL, then ASSERT().
 | |
| 
 | |
|   @param Format   A null-terminated Unicode format string.
 | |
|   @param ...      The variable argument list whose contents are accessed based
 | |
|                   on the format string specified by Format.
 | |
| 
 | |
|   @return Number of Unicode characters printed to ConOut.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| Print (
 | |
|   IN CONST CHAR16  *Format,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Prints a formatted Unicode string to the console output device specified by
 | |
|   StdErr defined in the EFI_SYSTEM_TABLE.
 | |
| 
 | |
|   This function prints a formatted Unicode string to the console output device
 | |
|   specified by StdErr in EFI_SYSTEM_TABLE and returns the number of Unicode
 | |
|   characters that printed to StdErr.  If the length of the formatted Unicode
 | |
|   string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
 | |
|   PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
 | |
|   If Format is NULL, then ASSERT().
 | |
|   If Format is not aligned on a 16-bit boundary, then ASSERT().
 | |
|   If gST->StdErr is NULL, then ASSERT().
 | |
| 
 | |
|   @param Format   A null-terminated Unicode format string.
 | |
|   @param ...      The variable argument list whose contents are accessed based
 | |
|                   on the format string specified by Format.
 | |
| 
 | |
|   @return Number of Unicode characters printed to StdErr.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| ErrorPrint (
 | |
|   IN CONST CHAR16  *Format,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Prints a formatted ASCII string to the console output device specified by
 | |
|   ConOut defined in the EFI_SYSTEM_TABLE.
 | |
| 
 | |
|   This function prints a formatted ASCII string to the console output device
 | |
|   specified by ConOut in EFI_SYSTEM_TABLE and returns the number of ASCII
 | |
|   characters that printed to ConOut.  If the length of the formatted ASCII
 | |
|   string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
 | |
|   PcdUefiLibMaxPrintBufferSize characters are sent to ConOut.
 | |
|   If Format is NULL, then ASSERT().
 | |
|   If gST->ConOut is NULL, then ASSERT().
 | |
| 
 | |
|   @param Format   A null-terminated ASCII format string.
 | |
|   @param ...      The variable argument list whose contents are accessed based
 | |
|                   on the format string specified by Format.
 | |
| 
 | |
|   @return Number of ASCII characters printed to ConOut.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| AsciiPrint (
 | |
|   IN CONST CHAR8  *Format,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Prints a formatted ASCII string to the console output device specified by
 | |
|   StdErr defined in the EFI_SYSTEM_TABLE.
 | |
| 
 | |
|   This function prints a formatted ASCII string to the console output device
 | |
|   specified by StdErr in EFI_SYSTEM_TABLE and returns the number of ASCII
 | |
|   characters that printed to StdErr.  If the length of the formatted ASCII
 | |
|   string is greater than PcdUefiLibMaxPrintBufferSize, then only the first
 | |
|   PcdUefiLibMaxPrintBufferSize characters are sent to StdErr.
 | |
|   If Format is NULL, then ASSERT().
 | |
|   If gST->StdErr is NULL, then ASSERT().
 | |
| 
 | |
|   @param Format   A null-terminated ASCII format string.
 | |
|   @param ...      The variable argument list whose contents are accessed based
 | |
|                   on the format string specified by Format.
 | |
| 
 | |
|   @return Number of ASCII characters printed to ConErr.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| AsciiErrorPrint (
 | |
|   IN CONST CHAR8  *Format,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Prints a formatted Unicode string to a graphics console device specified by
 | |
|   ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.
 | |
| 
 | |
|   This function prints a formatted Unicode string to the graphics console device
 | |
|   specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of
 | |
|   Unicode characters displayed, not including partial characters that may be clipped
 | |
|   by the right edge of the display.  If the length of the formatted Unicode string is
 | |
|   greater than PcdUefiLibMaxPrintBufferSize, then at most the first
 | |
|   PcdUefiLibMaxPrintBufferSize characters are printed.  The EFI_HII_FONT_PROTOCOL
 | |
|   is used to convert the string to a bitmap using the glyphs registered with the
 | |
|   HII database.  No wrapping is performed, so any portions of the string the fall
 | |
|   outside the active display region will not be displayed.
 | |
| 
 | |
|   If a graphics console device is not associated with the ConsoleOutputHandle
 | |
|   defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.
 | |
|   If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
 | |
|   string is printed, and 0 is returned.
 | |
|   If Format is NULL, then ASSERT().
 | |
|   If Format is not aligned on a 16-bit boundary, then ASSERT().
 | |
|   If gST->ConsoleOutputHandle is NULL, then ASSERT().
 | |
| 
 | |
|   @param  PointX       X coordinate to print the string.
 | |
|   @param  PointY       Y coordinate to print the string.
 | |
|   @param  ForeGround   The foreground color of the string being printed.  This is
 | |
|                        an optional parameter that may be NULL.  If it is NULL,
 | |
|                        then the foreground color of the current ConOut device
 | |
|                        in the EFI_SYSTEM_TABLE is used.
 | |
|   @param  BackGround   The background color of the string being printed.  This is
 | |
|                        an optional parameter that may be NULL.  If it is NULL,
 | |
|                        then the background color of the current ConOut device
 | |
|                        in the EFI_SYSTEM_TABLE is used.
 | |
|   @param  Format       A null-terminated Unicode format string.  See Print Library
 | |
|                        for the supported format string syntax.
 | |
|   @param  ...          Variable argument list whose contents are accessed based on
 | |
|                        the format string specified by Format.
 | |
| 
 | |
|   @return  The number of Unicode characters printed.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| PrintXY (
 | |
|   IN UINTN                            PointX,
 | |
|   IN UINTN                            PointY,
 | |
|   IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *ForeGround, OPTIONAL
 | |
|   IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *BackGround, OPTIONAL
 | |
|   IN CONST CHAR16                     *Format,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Prints a formatted ASCII string to a graphics console device specified by
 | |
|   ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates.
 | |
| 
 | |
|   This function prints a formatted ASCII string to the graphics console device
 | |
|   specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of
 | |
|   ASCII characters displayed, not including partial characters that may be clipped
 | |
|   by the right edge of the display.  If the length of the formatted ASCII string is
 | |
|   greater than PcdUefiLibMaxPrintBufferSize, then at most the first
 | |
|   PcdUefiLibMaxPrintBufferSize characters are printed.  The EFI_HII_FONT_PROTOCOL
 | |
|   is used to convert the string to a bitmap using the glyphs registered with the
 | |
|   HII database.  No wrapping is performed, so any portions of the string the fall
 | |
|   outside the active display region will not be displayed.
 | |
| 
 | |
|   If a graphics console device is not associated with the ConsoleOutputHandle
 | |
|   defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned.
 | |
|   If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no
 | |
|   string is printed, and 0 is returned.
 | |
|   If Format is NULL, then ASSERT().
 | |
|   If gST->ConsoleOutputHandle is NULL, then ASSERT().
 | |
| 
 | |
|   @param  PointX       X coordinate to print the string.
 | |
|   @param  PointY       Y coordinate to print the string.
 | |
|   @param  ForeGround   The foreground color of the string being printed.  This is
 | |
|                        an optional parameter that may be NULL.  If it is NULL,
 | |
|                        then the foreground color of the current ConOut device
 | |
|                        in the EFI_SYSTEM_TABLE is used.
 | |
|   @param  BackGround   The background color of the string being printed.  This is
 | |
|                        an optional parameter that may be NULL.  If it is NULL,
 | |
|                        then the background color of the current ConOut device
 | |
|                        in the EFI_SYSTEM_TABLE is used.
 | |
|   @param  Format       A null-terminated ASCII format string.  See Print Library
 | |
|                        for the supported format string syntax.
 | |
|   @param  ...          The variable argument list whose contents are accessed based on
 | |
|                        the format string specified by Format.
 | |
| 
 | |
|   @return  The number of ASCII characters printed.
 | |
| 
 | |
| **/
 | |
| UINTN
 | |
| EFIAPI
 | |
| AsciiPrintXY (
 | |
|   IN UINTN                            PointX,
 | |
|   IN UINTN                            PointY,
 | |
|   IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *ForeGround, OPTIONAL
 | |
|   IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL    *BackGround, OPTIONAL
 | |
|   IN CONST CHAR8                      *Format,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Installs and completes the initialization of a Driver Binding Protocol instance.
 | |
| 
 | |
|   Installs the Driver Binding Protocol specified by DriverBinding onto the handle
 | |
|   specified by DriverBindingHandle. If DriverBindingHandle is NULL, then DriverBinding
 | |
|   is installed onto a newly created handle. DriverBindingHandle is typically the same
 | |
|   as the driver's ImageHandle, but it can be different if the driver produces multiple
 | |
|   Driver Binding Protocols.
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If DriverBinding can not be installed onto a handle, then ASSERT().
 | |
| 
 | |
|   @param  ImageHandle          The image handle of the driver.
 | |
|   @param  SystemTable          The EFI System Table that was passed to the driver's entry point.
 | |
|   @param  DriverBinding        A Driver Binding Protocol instance that this driver is producing.
 | |
|   @param  DriverBindingHandle  The handle that DriverBinding is to be installed onto.  If this
 | |
|                                parameter is NULL, then a new handle is created.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol installation completed successfully.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There was not enough system resources to install the protocol.
 | |
|   @retval Others                Status from gBS->InstallMultipleProtocolInterfaces().
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibInstallDriverBinding (
 | |
|   IN CONST EFI_HANDLE             ImageHandle,
 | |
|   IN CONST EFI_SYSTEM_TABLE       *SystemTable,
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL  *DriverBinding,
 | |
|   IN EFI_HANDLE                   DriverBindingHandle
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Uninstalls a Driver Binding Protocol instance.
 | |
| 
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If DriverBinding can not be uninstalled, then ASSERT().
 | |
| 
 | |
|   @param  DriverBinding        A Driver Binding Protocol instance that this driver produced.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol uninstallation successfully completed.
 | |
|   @retval Others                Status from gBS->UninstallMultipleProtocolInterfaces().
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibUninstallDriverBinding (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL  *DriverBinding
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Installs and completes the initialization of a Driver Binding Protocol instance and
 | |
|   optionally installs the Component Name, Driver Configuration and Driver Diagnostics Protocols.
 | |
| 
 | |
|   Initializes a driver by installing the Driver Binding Protocol together with the
 | |
|   optional Component Name, optional Driver Configure and optional Driver Diagnostic
 | |
|   Protocols onto the driver's DriverBindingHandle. If DriverBindingHandle is NULL,
 | |
|   then the protocols are installed onto a newly created handle. DriverBindingHandle
 | |
|   is typically the same as the driver's ImageHandle, but it can be different if the
 | |
|   driver produces multiple Driver Binding Protocols.
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If the installation fails, then ASSERT().
 | |
| 
 | |
|   @param  ImageHandle          The image handle of the driver.
 | |
|   @param  SystemTable          The EFI System Table that was passed to the driver's entry point.
 | |
|   @param  DriverBinding        A Driver Binding Protocol instance that this driver is producing.
 | |
|   @param  DriverBindingHandle  The handle that DriverBinding is to be installed onto.  If this
 | |
|                                parameter is NULL, then a new handle is created.
 | |
|   @param  ComponentName        A Component Name Protocol instance that this driver is producing.
 | |
|   @param  DriverConfiguration  A Driver Configuration Protocol instance that this driver is producing.
 | |
|   @param  DriverDiagnostics    A Driver Diagnostics Protocol instance that this driver is producing.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol installation completed successfully.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There was not enough memory in the pool to install all the protocols.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibInstallAllDriverProtocols (
 | |
|   IN CONST EFI_HANDLE                         ImageHandle,
 | |
|   IN CONST EFI_SYSTEM_TABLE                   *SystemTable,
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,
 | |
|   IN EFI_HANDLE                               DriverBindingHandle,
 | |
|   IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL
 | |
|   IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL
 | |
|   IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics    OPTIONAL
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Uninstalls a Driver Binding Protocol instance and optionally uninstalls the
 | |
|   Component Name, Driver Configuration and Driver Diagnostics Protocols.
 | |
| 
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If the uninstallation fails, then ASSERT().
 | |
| 
 | |
|   @param  DriverBinding        A Driver Binding Protocol instance that this driver produced.
 | |
|   @param  ComponentName        A Component Name Protocol instance that this driver produced.
 | |
|   @param  DriverConfiguration  A Driver Configuration Protocol instance that this driver produced.
 | |
|   @param  DriverDiagnostics    A Driver Diagnostics Protocol instance that this driver produced.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol uninstallation successfully completed.
 | |
|   @retval Others                Status from gBS->UninstallMultipleProtocolInterfaces().
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibUninstallAllDriverProtocols (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,
 | |
|   IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL
 | |
|   IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration, OPTIONAL
 | |
|   IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics    OPTIONAL
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.
 | |
| 
 | |
|   Initializes a driver by installing the Driver Binding Protocol together with the
 | |
|   optional Component Name and optional Component Name 2 protocols onto the driver's
 | |
|   DriverBindingHandle.  If DriverBindingHandle is NULL, then the protocols are installed
 | |
|   onto a newly created handle.  DriverBindingHandle is typically the same as the driver's
 | |
|   ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols.
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If the installation fails, then ASSERT().
 | |
| 
 | |
|   @param  ImageHandle          The image handle of the driver.
 | |
|   @param  SystemTable          The EFI System Table that was passed to the driver's entry point.
 | |
|   @param  DriverBinding        A Driver Binding Protocol instance that this driver is producing.
 | |
|   @param  DriverBindingHandle  The handle that DriverBinding is to be installed onto.  If this
 | |
|                                parameter is NULL, then a new handle is created.
 | |
|   @param  ComponentName        A Component Name Protocol instance that this driver is producing.
 | |
|   @param  ComponentName2       A Component Name 2 Protocol instance that this driver is producing.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol installation completed successfully.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There was not enough memory in pool to install all the protocols.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibInstallDriverBindingComponentName2 (
 | |
|   IN CONST EFI_HANDLE                         ImageHandle,
 | |
|   IN CONST EFI_SYSTEM_TABLE                   *SystemTable,
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,
 | |
|   IN EFI_HANDLE                               DriverBindingHandle,
 | |
|   IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL
 | |
|   IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2       OPTIONAL
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Uninstalls Driver Binding Protocol with optional Component Name and Component Name 2 Protocols.
 | |
| 
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If the uninstallation fails, then ASSERT().
 | |
| 
 | |
|   @param  DriverBinding        A Driver Binding Protocol instance that this driver produced.
 | |
|   @param  ComponentName        A Component Name Protocol instance that this driver produced.
 | |
|   @param  ComponentName2       A Component Name 2 Protocol instance that this driver produced.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol installation successfully completed.
 | |
|   @retval Others                Status from gBS->UninstallMultipleProtocolInterfaces().
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibUninstallDriverBindingComponentName2 (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,
 | |
|   IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,       OPTIONAL
 | |
|   IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2       OPTIONAL
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Installs Driver Binding Protocol with optional Component Name, Component Name 2, Driver
 | |
|   Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.
 | |
| 
 | |
|   Initializes a driver by installing the Driver Binding Protocol together with the optional
 | |
|   Component Name, optional Component Name 2, optional Driver Configuration, optional Driver Configuration 2,
 | |
|   optional Driver Diagnostic, and optional Driver Diagnostic 2 Protocols onto the driver's DriverBindingHandle.
 | |
|   DriverBindingHandle is typically the same as the driver's ImageHandle, but it can be different if the driver
 | |
|   produces multiple Driver Binding Protocols.
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If the installation fails, then ASSERT().
 | |
| 
 | |
| 
 | |
|   @param  ImageHandle           The image handle of the driver.
 | |
|   @param  SystemTable           The EFI System Table that was passed to the driver's entry point.
 | |
|   @param  DriverBinding         A Driver Binding Protocol instance that this driver is producing.
 | |
|   @param  DriverBindingHandle   The handle that DriverBinding is to be installed onto.  If this
 | |
|                                 parameter is NULL, then a new handle is created.
 | |
|   @param  ComponentName         A Component Name Protocol instance that this driver is producing.
 | |
|   @param  ComponentName2        A Component Name 2 Protocol instance that this driver is producing.
 | |
|   @param  DriverConfiguration   A Driver Configuration Protocol instance that this driver is producing.
 | |
|   @param  DriverConfiguration2  A Driver Configuration Protocol 2 instance that this driver is producing.
 | |
|   @param  DriverDiagnostics     A Driver Diagnostics Protocol instance that this driver is producing.
 | |
|   @param  DriverDiagnostics2    A Driver Diagnostics Protocol 2 instance that this driver is producing.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol installation completed successfully.
 | |
|   @retval EFI_OUT_OF_RESOURCES  There was not enough memory in pool to install all the protocols.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibInstallAllDriverProtocols2 (
 | |
|   IN CONST EFI_HANDLE                         ImageHandle,
 | |
|   IN CONST EFI_SYSTEM_TABLE                   *SystemTable,
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,
 | |
|   IN EFI_HANDLE                               DriverBindingHandle,
 | |
|   IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,        OPTIONAL
 | |
|   IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2,       OPTIONAL
 | |
|   IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration,  OPTIONAL
 | |
|   IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL
 | |
|   IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics,    OPTIONAL
 | |
|   IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL   *DriverDiagnostics2    OPTIONAL
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Uninstalls Driver Binding Protocol with optional Component Name, Component Name 2, Driver
 | |
|   Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols.
 | |
| 
 | |
|   If DriverBinding is NULL, then ASSERT().
 | |
|   If the installation fails, then ASSERT().
 | |
| 
 | |
| 
 | |
|   @param  DriverBinding         A Driver Binding Protocol instance that this driver produced.
 | |
|   @param  ComponentName         A Component Name Protocol instance that this driver produced.
 | |
|   @param  ComponentName2        A Component Name 2 Protocol instance that this driver produced.
 | |
|   @param  DriverConfiguration   A Driver Configuration Protocol instance that this driver produced.
 | |
|   @param  DriverConfiguration2  A Driver Configuration Protocol 2 instance that this driver produced.
 | |
|   @param  DriverDiagnostics     A Driver Diagnostics Protocol instance that this driver produced.
 | |
|   @param  DriverDiagnostics2    A Driver Diagnostics Protocol 2 instance that this driver produced.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The protocol uninstallation successfully completed.
 | |
|   @retval Others                Status from gBS->UninstallMultipleProtocolInterfaces().
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLibUninstallAllDriverProtocols2 (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL              *DriverBinding,
 | |
|   IN CONST EFI_COMPONENT_NAME_PROTOCOL        *ComponentName,        OPTIONAL
 | |
|   IN CONST EFI_COMPONENT_NAME2_PROTOCOL       *ComponentName2,       OPTIONAL
 | |
|   IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL  *DriverConfiguration,  OPTIONAL
 | |
|   IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL
 | |
|   IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL    *DriverDiagnostics,    OPTIONAL
 | |
|   IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL   *DriverDiagnostics2    OPTIONAL
 | |
|   );
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Appends a formatted Unicode string to a Null-terminated Unicode string
 | |
| 
 | |
|   This function appends a formatted Unicode string to the Null-terminated
 | |
|   Unicode string specified by String.   String is optional and may be NULL.
 | |
|   Storage for the formatted Unicode string returned is allocated using
 | |
|   AllocatePool().  The pointer to the appended string is returned.  The caller
 | |
|   is responsible for freeing the returned string.
 | |
| 
 | |
|   If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
 | |
|   If FormatString is NULL, then ASSERT().
 | |
|   If FormatString is not aligned on a 16-bit boundary, then ASSERT().
 | |
| 
 | |
|   @param[in] String         A Null-terminated Unicode string.
 | |
|   @param[in] FormatString   A Null-terminated Unicode format string.
 | |
|   @param[in]  Marker        VA_LIST marker for the variable argument list.
 | |
| 
 | |
|   @retval NULL    There was not enough available memory.
 | |
|   @return         Null-terminated Unicode string is that is the formatted
 | |
|                   string appended to String.
 | |
| **/
 | |
| CHAR16*
 | |
| EFIAPI
 | |
| CatVSPrint (
 | |
|   IN  CHAR16  *String, OPTIONAL
 | |
|   IN  CONST CHAR16  *FormatString,
 | |
|   IN  VA_LIST       Marker
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Appends a formatted Unicode string to a Null-terminated Unicode string
 | |
| 
 | |
|   This function appends a formatted Unicode string to the Null-terminated
 | |
|   Unicode string specified by String.   String is optional and may be NULL.
 | |
|   Storage for the formatted Unicode string returned is allocated using
 | |
|   AllocatePool().  The pointer to the appended string is returned.  The caller
 | |
|   is responsible for freeing the returned string.
 | |
| 
 | |
|   If String is not NULL and not aligned on a 16-bit boundary, then ASSERT().
 | |
|   If FormatString is NULL, then ASSERT().
 | |
|   If FormatString is not aligned on a 16-bit boundary, then ASSERT().
 | |
| 
 | |
|   @param[in] String         A Null-terminated Unicode string.
 | |
|   @param[in] FormatString   A Null-terminated Unicode format string.
 | |
|   @param[in] ...            The variable argument list whose contents are
 | |
|                             accessed based on the format string specified by
 | |
|                             FormatString.
 | |
| 
 | |
|   @retval NULL    There was not enough available memory.
 | |
|   @return         Null-terminated Unicode string is that is the formatted
 | |
|                   string appended to String.
 | |
| **/
 | |
| CHAR16 *
 | |
| EFIAPI
 | |
| CatSPrint (
 | |
|   IN  CHAR16  *String, OPTIONAL
 | |
|   IN  CONST CHAR16  *FormatString,
 | |
|   ...
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Returns an array of protocol instance that matches the given protocol.
 | |
| 
 | |
|   @param[in]  Protocol      Provides the protocol to search for.
 | |
|   @param[out] NoProtocols   The number of protocols returned in Buffer.
 | |
|   @param[out] Buffer        A pointer to the buffer to return the requested
 | |
|                             array of protocol instances that match Protocol.
 | |
|                             The returned buffer is allocated using
 | |
|                             EFI_BOOT_SERVICES.AllocatePool().  The caller is
 | |
|                             responsible for freeing this buffer with
 | |
|                             EFI_BOOT_SERVICES.FreePool().
 | |
| 
 | |
|   @retval EFI_SUCCESS            The array of protocols was returned in Buffer,
 | |
|                                  and the number of protocols in Buffer was
 | |
|                                  returned in NoProtocols.
 | |
|   @retval EFI_NOT_FOUND          No protocols found.
 | |
|   @retval EFI_OUT_OF_RESOURCES   There is not enough pool memory to store the
 | |
|                                  matching results.
 | |
|   @retval EFI_INVALID_PARAMETER  Protocol is NULL.
 | |
|   @retval EFI_INVALID_PARAMETER  NoProtocols is NULL.
 | |
|   @retval EFI_INVALID_PARAMETER  Buffer is NULL.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiLocateProtocolBuffer (
 | |
|   IN  EFI_GUID  *Protocol,
 | |
|   OUT UINTN     *NoProtocols,
 | |
|   OUT VOID      ***Buffer
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Open or create a file or directory, possibly creating the chain of
 | |
|   directories leading up to the directory.
 | |
| 
 | |
|   EfiOpenFileByDevicePath() first locates EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on
 | |
|   FilePath, and opens the root directory of that filesystem with
 | |
|   EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume().
 | |
| 
 | |
|   On the remaining device path, the longest initial sequence of
 | |
|   FILEPATH_DEVICE_PATH nodes is node-wise traversed with
 | |
|   EFI_FILE_PROTOCOL.Open().
 | |
| 
 | |
|   (As a consequence, if OpenMode includes EFI_FILE_MODE_CREATE, and Attributes
 | |
|   includes EFI_FILE_DIRECTORY, and each FILEPATH_DEVICE_PATH specifies a single
 | |
|   pathname component, then EfiOpenFileByDevicePath() ensures that the specified
 | |
|   series of subdirectories exist on return.)
 | |
| 
 | |
|   The EFI_FILE_PROTOCOL identified by the last FILEPATH_DEVICE_PATH node is
 | |
|   output to the caller; intermediate EFI_FILE_PROTOCOL instances are closed. If
 | |
|   there are no FILEPATH_DEVICE_PATH nodes past the node that identifies the
 | |
|   filesystem, then the EFI_FILE_PROTOCOL of the root directory of the
 | |
|   filesystem is output to the caller. If a device path node that is different
 | |
|   from FILEPATH_DEVICE_PATH is encountered relative to the filesystem, the
 | |
|   traversal is stopped with an error, and a NULL EFI_FILE_PROTOCOL is output.
 | |
| 
 | |
|   @param[in,out] FilePath  On input, the device path to the file or directory
 | |
|                            to open or create. The caller is responsible for
 | |
|                            ensuring that the device path pointed-to by FilePath
 | |
|                            is well-formed. On output, FilePath points one past
 | |
|                            the last node in the original device path that has
 | |
|                            been successfully processed. FilePath is set on
 | |
|                            output even if EfiOpenFileByDevicePath() returns an
 | |
|                            error.
 | |
| 
 | |
|   @param[out] File         On error, File is set to NULL. On success, File is
 | |
|                            set to the EFI_FILE_PROTOCOL of the root directory
 | |
|                            of the filesystem, if there are no
 | |
|                            FILEPATH_DEVICE_PATH nodes in FilePath; otherwise,
 | |
|                            File is set to the EFI_FILE_PROTOCOL identified by
 | |
|                            the last node in FilePath.
 | |
| 
 | |
|   @param[in] OpenMode      The OpenMode parameter to pass to
 | |
|                            EFI_FILE_PROTOCOL.Open().
 | |
| 
 | |
|   @param[in] Attributes    The Attributes parameter to pass to
 | |
|                            EFI_FILE_PROTOCOL.Open().
 | |
| 
 | |
|   @retval EFI_SUCCESS            The file or directory has been opened or
 | |
|                                  created.
 | |
| 
 | |
|   @retval EFI_INVALID_PARAMETER  FilePath is NULL; or File is NULL; or FilePath
 | |
|                                  contains a device path node, past the node
 | |
|                                  that identifies
 | |
|                                  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, that is not a
 | |
|                                  FILEPATH_DEVICE_PATH node.
 | |
| 
 | |
|   @retval EFI_OUT_OF_RESOURCES   Memory allocation failed.
 | |
| 
 | |
|   @return                        Error codes propagated from the
 | |
|                                  LocateDevicePath() and OpenProtocol() boot
 | |
|                                  services, and from the
 | |
|                                  EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume()
 | |
|                                  and EFI_FILE_PROTOCOL.Open() member functions.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| EfiOpenFileByDevicePath (
 | |
|   IN OUT EFI_DEVICE_PATH_PROTOCOL  **FilePath,
 | |
|   OUT    EFI_FILE_PROTOCOL         **File,
 | |
|   IN     UINT64                    OpenMode,
 | |
|   IN     UINT64                    Attributes
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function locates next ACPI table in XSDT/RSDT based on Signature and
 | |
|   previous returned Table.
 | |
| 
 | |
|   If PreviousTable is NULL:
 | |
|   This function will locate the first ACPI table in XSDT/RSDT based on
 | |
|   Signature in gEfiAcpi20TableGuid system configuration table first, and then
 | |
|   gEfiAcpi10TableGuid system configuration table.
 | |
|   This function will locate in XSDT first, and then RSDT.
 | |
|   For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in
 | |
|   FADT.
 | |
|   For FACS, this function will locate XFirmwareCtrl in FADT first, and then
 | |
|   FirmwareCtrl in FADT.
 | |
| 
 | |
|   If PreviousTable is not NULL:
 | |
|   1. If it could be located in XSDT in gEfiAcpi20TableGuid system configuration
 | |
|      table, then this function will just locate next table in XSDT in
 | |
|      gEfiAcpi20TableGuid system configuration table.
 | |
|   2. If it could be located in RSDT in gEfiAcpi20TableGuid system configuration
 | |
|      table, then this function will just locate next table in RSDT in
 | |
|      gEfiAcpi20TableGuid system configuration table.
 | |
|   3. If it could be located in RSDT in gEfiAcpi10TableGuid system configuration
 | |
|      table, then this function will just locate next table in RSDT in
 | |
|      gEfiAcpi10TableGuid system configuration table.
 | |
| 
 | |
|   It's not supported that PreviousTable is not NULL but PreviousTable->Signature
 | |
|   is not same with Signature, NULL will be returned.
 | |
| 
 | |
|   @param Signature          ACPI table signature.
 | |
|   @param PreviousTable      Pointer to previous returned table to locate next
 | |
|                             table, or NULL to locate first table.
 | |
| 
 | |
|   @return Next ACPI table or NULL if not found.
 | |
| 
 | |
| **/
 | |
| EFI_ACPI_COMMON_HEADER *
 | |
| EFIAPI
 | |
| EfiLocateNextAcpiTable (
 | |
|   IN UINT32                     Signature,
 | |
|   IN EFI_ACPI_COMMON_HEADER     *PreviousTable OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function locates first ACPI table in XSDT/RSDT based on Signature.
 | |
| 
 | |
|   This function will locate the first ACPI table in XSDT/RSDT based on
 | |
|   Signature in gEfiAcpi20TableGuid system configuration table first, and then
 | |
|   gEfiAcpi10TableGuid system configuration table.
 | |
|   This function will locate in XSDT first, and then RSDT.
 | |
|   For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in
 | |
|   FADT.
 | |
|   For FACS, this function will locate XFirmwareCtrl in FADT first, and then
 | |
|   FirmwareCtrl in FADT.
 | |
| 
 | |
|   @param Signature          ACPI table signature.
 | |
| 
 | |
|   @return First ACPI table or NULL if not found.
 | |
| 
 | |
| **/
 | |
| EFI_ACPI_COMMON_HEADER *
 | |
| EFIAPI
 | |
| EfiLocateFirstAcpiTable (
 | |
|   IN UINT32                     Signature
 | |
|   );
 | |
| 
 | |
| #endif
 |