mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-11-04 05:25:45 +01:00 
			
		
		
		
	Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14767 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			524 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			524 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  The platform device manager reference implement
 | 
						|
 | 
						|
Copyright (c) 2004 - 2013, Intel Corporation. All rights reserved.<BR>
 | 
						|
This program and the accompanying materials
 | 
						|
are licensed and made available under the terms and conditions of the BSD License
 | 
						|
which accompanies this distribution.  The full text of the license may be found at
 | 
						|
http://opensource.org/licenses/bsd-license.php
 | 
						|
 | 
						|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef _DEVICE_MANAGER_H_
 | 
						|
#define _DEVICE_MANAGER_H_
 | 
						|
 | 
						|
#include "Bds.h"
 | 
						|
#include "FrontPage.h"
 | 
						|
#include "DeviceManagerVfr.h"
 | 
						|
#include <Protocol/PciIo.h>
 | 
						|
 | 
						|
#define DEVICE_MANAGER_CALLBACK_DATA_SIGNATURE       SIGNATURE_32 ('D', 'M', 'C', 'B')
 | 
						|
#define DEVICE_MANAGER_DRIVER_HEALTH_INFO_SIGNATURE  SIGNATURE_32 ('D', 'M', 'D', 'H')
 | 
						|
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINTN                           Signature;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Device Manager HII relative handles
 | 
						|
  ///
 | 
						|
  EFI_HII_HANDLE                  HiiHandle;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Driver Health HII relative handles
 | 
						|
  ///
 | 
						|
  EFI_HII_HANDLE                  DriverHealthHiiHandle;
 | 
						|
 | 
						|
  EFI_HANDLE                      DriverHandle;
 | 
						|
  EFI_HANDLE                      DriverHealthHandle;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Device Manager Produced protocols
 | 
						|
  ///
 | 
						|
  EFI_HII_CONFIG_ACCESS_PROTOCOL  ConfigAccess;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Driver Health Produced protocols
 | 
						|
  ///
 | 
						|
  EFI_HII_CONFIG_ACCESS_PROTOCOL  DriverHealthConfigAccess;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Configuration data
 | 
						|
  ///
 | 
						|
  UINT8                           VideoBios;
 | 
						|
} DEVICE_MANAGER_CALLBACK_DATA;
 | 
						|
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINTN                           Signature;
 | 
						|
  LIST_ENTRY                      Link;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// HII relative handles
 | 
						|
  ///
 | 
						|
  EFI_HII_HANDLE                  HiiHandle;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Driver relative handles
 | 
						|
  ///
 | 
						|
  EFI_HANDLE                      DriverHandle;
 | 
						|
  EFI_HANDLE                      ControllerHandle;
 | 
						|
  EFI_HANDLE                      ChildHandle;
 | 
						|
 | 
						|
  EFI_DRIVER_HEALTH_PROTOCOL      *DriverHealth;
 | 
						|
  ///
 | 
						|
  /// Driver health messages of the specify Driver 
 | 
						|
  ///
 | 
						|
  EFI_DRIVER_HEALTH_HII_MESSAGE   *MessageList;
 | 
						|
 | 
						|
  ///
 | 
						|
  /// Driver Health status
 | 
						|
  ///
 | 
						|
  EFI_DRIVER_HEALTH_STATUS        HealthStatus;
 | 
						|
} DRIVER_HEALTH_INFO;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  EFI_STRING_ID    PromptId;
 | 
						|
  EFI_QUESTION_ID  QuestionId;
 | 
						|
}MENU_INFO_ITEM;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINTN           CurListLen;
 | 
						|
  UINTN           MaxListLen;
 | 
						|
  MENU_INFO_ITEM  *NodeList;
 | 
						|
} MAC_ADDRESS_NODE_LIST;
 | 
						|
 | 
						|
#define DEVICE_MANAGER_HEALTH_INFO_FROM_LINK(a) \
 | 
						|
  CR (a, \
 | 
						|
      DRIVER_HEALTH_INFO, \
 | 
						|
      Link, \
 | 
						|
      DEVICE_MANAGER_DRIVER_HEALTH_INFO_SIGNATURE \
 | 
						|
      )
 | 
						|
 | 
						|
#define DEVICE_MANAGER_CALLBACK_DATA_FROM_THIS(a) \
 | 
						|
  CR (a, \
 | 
						|
      DEVICE_MANAGER_CALLBACK_DATA, \
 | 
						|
      ConfigAccess, \
 | 
						|
      DEVICE_MANAGER_CALLBACK_DATA_SIGNATURE \
 | 
						|
      )
 | 
						|
typedef struct {
 | 
						|
  EFI_STRING_ID  StringId;
 | 
						|
  UINT16         Class;
 | 
						|
} DEVICE_MANAGER_MENU_ITEM;
 | 
						|
 | 
						|
/**
 | 
						|
  This function is invoked if user selected a interactive opcode from Device Manager's
 | 
						|
  Formset. The decision by user is saved to gCallbackKey for later processing. If
 | 
						|
  user set VBIOS, the new value is saved to EFI variable.
 | 
						|
 | 
						|
 | 
						|
  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
 | 
						|
  @param Action          Specifies the type of action taken by the browser.
 | 
						|
  @param QuestionId      A unique value which is sent to the original exporting driver
 | 
						|
                         so that it can identify the type of data to expect.
 | 
						|
  @param Type            The type of value for the question.
 | 
						|
  @param Value           A pointer to the data being sent to the original exporting driver.
 | 
						|
  @param ActionRequest   On return, points to the action requested by the callback function.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS           The callback successfully handled the action.
 | 
						|
  @retval  EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
DeviceManagerCallback (
 | 
						|
  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,
 | 
						|
  IN  EFI_BROWSER_ACTION                     Action,
 | 
						|
  IN  EFI_QUESTION_ID                        QuestionId,
 | 
						|
  IN  UINT8                                  Type,
 | 
						|
  IN  EFI_IFR_TYPE_VALUE                     *Value,
 | 
						|
  OUT EFI_BROWSER_ACTION_REQUEST             *ActionRequest
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This function is invoked if user selected a interactive opcode from Driver Health's
 | 
						|
  Formset. The decision by user is saved to gCallbackKey for later processing.
 | 
						|
 | 
						|
 | 
						|
  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
 | 
						|
  @param Action          Specifies the type of action taken by the browser.
 | 
						|
  @param QuestionId      A unique value which is sent to the original exporting driver
 | 
						|
                         so that it can identify the type of data to expect.
 | 
						|
  @param Type            The type of value for the question.
 | 
						|
  @param Value           A pointer to the data being sent to the original exporting driver.
 | 
						|
  @param ActionRequest   On return, points to the action requested by the callback function.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS           The callback successfully handled the action.
 | 
						|
  @retval  EFI_INVALID_PARAMETER The setup browser call this function with invalid parameters.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
DriverHealthCallback (
 | 
						|
  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,
 | 
						|
  IN  EFI_BROWSER_ACTION                     Action,
 | 
						|
  IN  EFI_QUESTION_ID                        QuestionId,
 | 
						|
  IN  UINT8                                  Type,
 | 
						|
  IN  EFI_IFR_TYPE_VALUE                     *Value,
 | 
						|
  OUT EFI_BROWSER_ACTION_REQUEST             *ActionRequest
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This function registers HII packages to HII database.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS           HII packages for the Device Manager were registered successfully.
 | 
						|
  @retval  EFI_OUT_OF_RESOURCES  HII packages for the Device Manager failed to be registered.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
InitializeDeviceManager (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Call the browser and display the device manager to allow user
 | 
						|
  to configure the platform.
 | 
						|
 | 
						|
  This function create the dynamic content for device manager. It includes
 | 
						|
  section header for all class of devices, one-of opcode to set VBIOS.
 | 
						|
  
 | 
						|
  @retval  EFI_SUCCESS             Operation is successful.
 | 
						|
  @retval  Other values if failed to clean up the dynamic content from HII
 | 
						|
           database.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
CallDeviceManager (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Check the Driver Health status of a single controller and try to process it if not healthy.
 | 
						|
 | 
						|
  This function called by CheckAllControllersHealthStatus () function in order to process a specify
 | 
						|
  contoller's health state.
 | 
						|
 | 
						|
  @param DriverHealthList   A Pointer to the list contain all of the platform driver health information. 
 | 
						|
  @param DriverHandle       The handle of driver.
 | 
						|
  @param ControllerHandle   The class guid specifies which form set will be displayed.
 | 
						|
  @param ChildHandle        The handle of the child controller to retrieve the health 
 | 
						|
                            status on.  This is an optional parameter that may be NULL. 
 | 
						|
  @param DriverHealth       A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
 | 
						|
  @param HealthStatus       The health status of the controller.
 | 
						|
 | 
						|
  @retval EFI_INVALID_PARAMETER   HealthStatus or DriverHealth is NULL.
 | 
						|
  @retval HealthStatus            The Health status of specify controller.
 | 
						|
  @retval EFI_OUT_OF_RESOURCES    The list of Driver Health Protocol handles can not be retrieved.
 | 
						|
  @retval EFI_NOT_FOUND           No controller in the platform install Driver Health Protocol.
 | 
						|
  @retval EFI_SUCCESS             The Health related operation has been taken successfully.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
GetSingleControllerHealthStatus (
 | 
						|
  IN OUT LIST_ENTRY                   *DriverHealthList,
 | 
						|
  IN EFI_HANDLE                       DriverHandle,
 | 
						|
  IN EFI_HANDLE                       ControllerHandle,  OPTIONAL
 | 
						|
  IN EFI_HANDLE                       ChildHandle,       OPTIONAL
 | 
						|
  IN EFI_DRIVER_HEALTH_PROTOCOL       *DriverHealth,
 | 
						|
  IN EFI_DRIVER_HEALTH_STATUS         *HealthStatus
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Collects all the EFI Driver Health Protocols currently present in the EFI Handle Database, 
 | 
						|
  and queries each EFI Driver Health Protocol to determine if one or more of the controllers 
 | 
						|
  managed by each EFI Driver Health Protocol instance are not healthy.  
 | 
						|
 | 
						|
  @param DriverHealthList   A Pointer to the list contain all of the platform driver health
 | 
						|
                            information.
 | 
						|
 | 
						|
  @retval    EFI_NOT_FOUND         No controller in the platform install Driver Health Protocol.
 | 
						|
  @retval    EFI_SUCCESS           All the controllers in the platform are healthy.
 | 
						|
  @retval    EFI_OUT_OF_RESOURCES  The list of Driver Health Protocol handles can not be retrieved.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
GetAllControllersHealthStatus (
 | 
						|
  IN OUT LIST_ENTRY  *DriverHealthList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Check the healthy status of the platform, this function will return immediately while found one driver 
 | 
						|
  in the platform are not healthy.
 | 
						|
 | 
						|
  @retval FALSE      at least one driver in the platform are not healthy.
 | 
						|
  @retval TRUE       No controller install Driver Health Protocol,
 | 
						|
                     or all controllers in the platform are in healthy status.
 | 
						|
**/
 | 
						|
BOOLEAN
 | 
						|
PlaformHealthStatusCheck (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Repair the whole platform.
 | 
						|
 | 
						|
  This function is the main entry for user choose "Repair All" in the front page.
 | 
						|
  It will try to do recovery job till all the driver health protocol installed modules 
 | 
						|
  reach a terminal state.
 | 
						|
 | 
						|
  @param DriverHealthList   A Pointer to the list contain all of the platform driver health
 | 
						|
                            information.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
PlatformRepairAll (
 | 
						|
  IN LIST_ENTRY  *DriverHealthList
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Processes a single controller using the EFI Driver Health Protocol associated with 
 | 
						|
  that controller. This algorithm continues to query the GetHealthStatus() service until
 | 
						|
  one of the legal terminal states of the EFI Driver Health Protocol is reached. This may 
 | 
						|
  require the processing of HII Messages, HII Form, and invocation of repair operations.
 | 
						|
 | 
						|
  @param DriverHealth       A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
 | 
						|
  @param ControllerHandle   The class guid specifies which form set will be displayed.
 | 
						|
  @param ChildHandle        The handle of the child controller to retrieve the health 
 | 
						|
                            status on.  This is an optional parameter that may be NULL. 
 | 
						|
  @param HealthStatus       The health status of the controller.
 | 
						|
  @param MessageList        An array of warning or error messages associated 
 | 
						|
                            with the controller specified by ControllerHandle and 
 | 
						|
                            ChildHandle.  This is an optional parameter that may be NULL.
 | 
						|
  @param FormHiiHandle      The HII handle for an HII form associated with the 
 | 
						|
                            controller specified by ControllerHandle and ChildHandle.
 | 
						|
  @param RebootRequired     Indicate whether a reboot is required to repair the controller.
 | 
						|
**/
 | 
						|
VOID
 | 
						|
ProcessSingleControllerHealth (
 | 
						|
  IN  EFI_DRIVER_HEALTH_PROTOCOL         *DriverHealth,
 | 
						|
  IN  EFI_HANDLE                         ControllerHandle, OPTIONAL
 | 
						|
  IN  EFI_HANDLE                         ChildHandle,      OPTIONAL
 | 
						|
  IN  EFI_DRIVER_HEALTH_STATUS           HealthStatus,
 | 
						|
  IN  EFI_DRIVER_HEALTH_HII_MESSAGE      **MessageList,    OPTIONAL
 | 
						|
  IN  EFI_HII_HANDLE                     FormHiiHandle,
 | 
						|
  IN OUT BOOLEAN                         *RebootRequired
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Reports the progress of a repair operation.
 | 
						|
 | 
						|
  @param[in]  Value             A value between 0 and Limit that identifies the current 
 | 
						|
                                progress of the repair operation.
 | 
						|
 | 
						|
  @param[in]  Limit             The maximum value of Value for the current repair operation.
 | 
						|
                                For example, a driver that wants to specify progress in 
 | 
						|
                                percent would use a Limit value of 100.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The progress of a repair operation is reported successfully.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
EFIAPI
 | 
						|
RepairNotify (
 | 
						|
  IN  UINTN Value,
 | 
						|
  IN  UINTN Limit
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Processes a set of messages returned by the GetHealthStatus ()
 | 
						|
  service of the EFI Driver Health Protocol
 | 
						|
 | 
						|
  @param    MessageList  The MessageList point to messages need to processed.  
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
ProcessMessages (
 | 
						|
  IN  EFI_DRIVER_HEALTH_HII_MESSAGE      *MessageList
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Collect and display the platform's driver health relative information, allow user to do interactive 
 | 
						|
  operation while the platform is unhealthy.
 | 
						|
 | 
						|
  This function display a form which divided into two parts. The one list all modules which has installed 
 | 
						|
  driver health protocol. The list usually contain driver name, controller name, and it's health info.
 | 
						|
  While the driver name can't be retrieved, will use device path as backup. The other part of the form provide
 | 
						|
  a choice to the user to repair all platform.
 | 
						|
 | 
						|
**/
 | 
						|
VOID
 | 
						|
CallDriverHealth (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Select the best matching language according to front page policy for best user experience. 
 | 
						|
  
 | 
						|
  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. 
 | 
						|
 | 
						|
  @param  SupportedLanguages   A pointer to a Null-terminated ASCII string that
 | 
						|
                               contains a set of language codes in the format 
 | 
						|
                               specified by Iso639Language.
 | 
						|
  @param  Iso639Language       If TRUE, then all language codes are assumed to be
 | 
						|
                               in ISO 639-2 format.  If FALSE, then all language
 | 
						|
                               codes are assumed to be in RFC 4646 language format.
 | 
						|
 | 
						|
  @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 *
 | 
						|
DriverHealthSelectBestLanguage (
 | 
						|
  IN CHAR8        *SupportedLanguages,
 | 
						|
  IN BOOLEAN      Iso639Language
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This is an internal worker function to get the Component Name (2) protocol interface
 | 
						|
  and the language it supports.
 | 
						|
 | 
						|
  @param  ProtocolGuid         A pointer to an EFI_GUID. It points to Component Name (2) protocol GUID.
 | 
						|
  @param  DriverBindingHandle  The handle on which the Component Name (2) protocol instance is retrieved.
 | 
						|
  @param  ComponentName        A pointer to the Component Name (2) protocol interface.
 | 
						|
  @param  SupportedLanguage    The best suitable language that matches the SupportedLangues interface for the 
 | 
						|
                               located Component Name (2) instance.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS          The Component Name (2) protocol instance is successfully located and we find
 | 
						|
                               the best matching language it support.
 | 
						|
  @retval EFI_UNSUPPORTED      The input Language is not supported by the Component Name (2) protocol.
 | 
						|
  @retval Other                Some error occurs when locating Component Name (2) protocol instance or finding
 | 
						|
                               the supported language.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
GetComponentNameWorker (
 | 
						|
  IN  EFI_GUID                    *ProtocolGuid,
 | 
						|
  IN  EFI_HANDLE                  DriverBindingHandle,
 | 
						|
  OUT EFI_COMPONENT_NAME_PROTOCOL **ComponentName,
 | 
						|
  OUT CHAR8                       **SupportedLanguage
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This is an internal worker function to get driver name from Component Name (2) protocol interface.
 | 
						|
 | 
						|
 | 
						|
  @param  ProtocolGuid         A pointer to an EFI_GUID. It points to Component Name (2) protocol GUID.
 | 
						|
  @param  DriverBindingHandle  The handle on which the Component Name (2) protocol instance is retrieved.
 | 
						|
  @param  DriverName           A pointer to the Unicode string to return. This Unicode string is the name
 | 
						|
                               of the driver specified by This.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS          The driver name is successfully retrieved from Component Name (2) protocol
 | 
						|
                               interface.
 | 
						|
  @retval Other                The driver name cannot be retrieved from Component Name (2) protocol
 | 
						|
                               interface.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
GetDriverNameWorker (
 | 
						|
  IN  EFI_GUID    *ProtocolGuid,
 | 
						|
  IN  EFI_HANDLE  DriverBindingHandle,
 | 
						|
  OUT CHAR16      **DriverName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  This function gets driver name from Component Name 2 protocol interface and Component Name protocol interface
 | 
						|
  in turn. It first tries UEFI 2.0 Component Name 2 protocol interface and try to get the driver name.
 | 
						|
  If the attempt fails, it then gets the driver name from EFI 1.1 Component Name protocol for backward
 | 
						|
  compatibility support. 
 | 
						|
 | 
						|
  @param  DriverBindingHandle  The handle on which the Component Name (2) protocol instance is retrieved.
 | 
						|
  @param  DriverName           A pointer to the Unicode string to return. This Unicode string is the name
 | 
						|
                               of the driver specified by This.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS          The driver name is successfully retrieved from Component Name (2) protocol
 | 
						|
                               interface.
 | 
						|
  @retval Other                The driver name cannot be retrieved from Component Name (2) protocol
 | 
						|
                               interface.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
DriverHealthGetDriverName (
 | 
						|
  IN  EFI_HANDLE  DriverBindingHandle,
 | 
						|
  OUT CHAR16      **DriverName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This function gets controller name from Component Name 2 protocol interface and Component Name protocol interface
 | 
						|
  in turn. It first tries UEFI 2.0 Component Name 2 protocol interface and try to get the controller name.
 | 
						|
  If the attempt fails, it then gets the controller name from EFI 1.1 Component Name protocol for backward
 | 
						|
  compatibility support. 
 | 
						|
 | 
						|
  @param  ProtocolGuid         A pointer to an EFI_GUID. It points to Component Name (2) protocol GUID.
 | 
						|
  @param  DriverBindingHandle  The handle on which the Component Name (2) protocol instance is retrieved.
 | 
						|
  @param  ControllerHandle     The handle of a controller that the driver specified by This is managing.
 | 
						|
                               This handle specifies the controller whose name is to be returned.
 | 
						|
  @param  ChildHandle          The handle of the child controller to retrieve the name of. This is an
 | 
						|
                               optional parameter that may be NULL. It will be NULL for device drivers.
 | 
						|
                               It will also be NULL for bus drivers that attempt to retrieve the name
 | 
						|
                               of the bus controller. It will not be NULL for a bus driver that attempts
 | 
						|
                               to retrieve the name of a child controller.
 | 
						|
  @param  ControllerName       A pointer to the Unicode string to return. This Unicode string
 | 
						|
                               is the name of the controller specified by ControllerHandle and ChildHandle.
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS         The controller name is successfully retrieved from Component Name (2) protocol
 | 
						|
                               interface.
 | 
						|
  @retval  Other               The controller name cannot be retrieved from Component Name (2) protocol.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
GetControllerNameWorker (
 | 
						|
  IN  EFI_GUID    *ProtocolGuid,
 | 
						|
  IN  EFI_HANDLE  DriverBindingHandle,
 | 
						|
  IN  EFI_HANDLE  ControllerHandle,
 | 
						|
  IN  EFI_HANDLE  ChildHandle,
 | 
						|
  OUT CHAR16      **ControllerName
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  This function gets controller name from Component Name 2 protocol interface and Component Name protocol interface
 | 
						|
  in turn. It first tries UEFI 2.0 Component Name 2 protocol interface and try to get the controller name. 
 | 
						|
  If the attempt fails, it then gets the controller name from EFI 1.1 Component Name protocol for backward
 | 
						|
  compatibility support. 
 | 
						|
 | 
						|
  @param  DriverBindingHandle  The handle on which the Component Name (2) protocol instance is retrieved.
 | 
						|
  @param  ControllerHandle     The handle of a controller that the driver specified by This is managing.
 | 
						|
                               This handle specifies the controller whose name is to be returned.
 | 
						|
  @param  ChildHandle          The handle of the child controller to retrieve the name of. This is an
 | 
						|
                               optional parameter that may be NULL. It will be NULL for device drivers.
 | 
						|
                               It will also be NULL for bus drivers that attempt to retrieve the name
 | 
						|
                               of the bus controller. It will not be NULL for a bus driver that attempts
 | 
						|
                               to retrieve the name of a child controller.
 | 
						|
  @param  ControllerName       A pointer to the Unicode string to return. This Unicode string
 | 
						|
                               is the name of the controller specified by ControllerHandle and ChildHandle.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS          The controller name is successfully retrieved from Component Name (2) protocol
 | 
						|
                               interface.
 | 
						|
  @retval Other                The controller name cannot be retrieved from Component Name (2) protocol.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
DriverHealthGetControllerName (
 | 
						|
  IN  EFI_HANDLE  DriverBindingHandle,
 | 
						|
  IN  EFI_HANDLE  ControllerHandle,
 | 
						|
  IN  EFI_HANDLE  ChildHandle,
 | 
						|
  OUT CHAR16      **ControllerName
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |