2009-01-23 08:24:55 +01:00
|
|
|
/** @file
|
|
|
|
The platform device manager reference implement
|
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
Copyright (c) 2004 - 2010, Intel Corporation. <BR>
|
2009-01-23 08:24:55 +01:00
|
|
|
All rights reserved. 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"
|
|
|
|
|
|
|
|
//
|
|
|
|
// These are defined as the same with vfr file
|
|
|
|
//
|
|
|
|
#define DEVICE_MANAGER_FORMSET_GUID \
|
|
|
|
{ \
|
|
|
|
0x3ebfa8e6, 0x511d, 0x4b5b, {0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27} \
|
|
|
|
}
|
|
|
|
|
2009-12-04 04:22:44 +01:00
|
|
|
#define DRIVER_HEALTH_FORMSET_GUID \
|
|
|
|
{ \
|
|
|
|
0xf76e0a70, 0xb5ed, 0x4c38, {0xac, 0x9a, 0xe5, 0xf5, 0x4b, 0xf1, 0x6e, 0x34} \
|
|
|
|
}
|
|
|
|
|
2009-04-17 07:31:38 +02:00
|
|
|
#define LABEL_DEVICES_LIST 0x0080
|
|
|
|
#define LABEL_END 0xffff
|
|
|
|
|
2009-12-04 04:22:44 +01:00
|
|
|
#define LABEL_DRIVER_HEALTH 0x2000
|
|
|
|
#define LABEL_DRIVER_HEALTH_END 0x2001
|
|
|
|
|
|
|
|
#define LABEL_DRIVER_HEALTH_REAPIR_ALL 0x3000
|
|
|
|
#define LABEL_DRIVER_HEALTH_REAPIR_ALL_END 0x3001
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
#define LABEL_VBIOS 0x0040
|
|
|
|
|
|
|
|
#define DEVICE_MANAGER_FORM_ID 0x1000
|
2009-12-04 04:22:44 +01:00
|
|
|
#define DRIVER_HEALTH_FORM_ID 0x1001
|
2009-01-23 08:24:55 +01:00
|
|
|
|
|
|
|
#define DEVICE_KEY_OFFSET 0x1000
|
|
|
|
#define DEVICE_MANAGER_KEY_VBIOS 0x2000
|
|
|
|
|
2009-12-04 04:22:44 +01:00
|
|
|
#define DEVICE_MANAGER_KEY_DRIVER_HEALTH 0x1111
|
|
|
|
#define DRIVER_HEALTH_KEY_OFFSET 0x2000
|
|
|
|
#define DRIVER_HEALTH_REPAIR_ALL_KEY 0x3000
|
|
|
|
#define DRIVER_HEALTH_RETURN_KEY 0x4000
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
//
|
|
|
|
// These are the VFR compiler generated data representing our VFR data.
|
|
|
|
//
|
|
|
|
extern UINT8 DeviceManagerVfrBin[];
|
2009-12-04 04:22:44 +01:00
|
|
|
extern UINT8 DriverHealthVfrBin[];
|
2009-01-23 08:24:55 +01:00
|
|
|
|
|
|
|
#define DEVICE_MANAGER_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('D', 'M', 'C', 'B')
|
2009-12-04 04:22:44 +01:00
|
|
|
#define DEVICE_MANAGER_DRIVER_HEALTH_INFO_SIGNATURE SIGNATURE_32 ('D', 'M', 'D', 'H')
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
UINTN Signature;
|
|
|
|
|
|
|
|
///
|
2009-12-04 04:22:44 +01:00
|
|
|
/// Device Manager HII relative handles
|
2009-01-23 08:24:55 +01:00
|
|
|
///
|
|
|
|
EFI_HII_HANDLE HiiHandle;
|
2009-12-04 04:22:44 +01:00
|
|
|
|
|
|
|
///
|
|
|
|
/// Driver Health HII relative handles
|
|
|
|
///
|
|
|
|
EFI_HII_HANDLE DriverHealthHiiHandle;
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
EFI_HANDLE DriverHandle;
|
2009-12-04 04:22:44 +01:00
|
|
|
EFI_HANDLE DriverHealthHandle;
|
2009-01-23 08:24:55 +01:00
|
|
|
|
|
|
|
///
|
2009-12-04 04:22:44 +01:00
|
|
|
/// Device Manager Produced protocols
|
2009-01-23 08:24:55 +01:00
|
|
|
///
|
|
|
|
EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
|
|
|
|
|
2009-12-04 04:22:44 +01:00
|
|
|
///
|
|
|
|
/// Driver Health Produced protocols
|
|
|
|
///
|
|
|
|
EFI_HII_CONFIG_ACCESS_PROTOCOL DriverHealthConfigAccess;
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
///
|
|
|
|
/// Configuration data
|
|
|
|
///
|
|
|
|
UINT8 VideoBios;
|
|
|
|
} DEVICE_MANAGER_CALLBACK_DATA;
|
|
|
|
|
2009-12-04 04:22:44 +01:00
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
#define DEVICE_MANAGER_HEALTH_INFO_FROM_LINK(a) \
|
|
|
|
CR (a, \
|
|
|
|
DRIVER_HEALTH_INFO, \
|
|
|
|
Link, \
|
|
|
|
DEVICE_MANAGER_DRIVER_HEALTH_INFO_SIGNATURE \
|
|
|
|
)
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
#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;
|
|
|
|
|
|
|
|
/**
|
2009-12-04 04:22:44 +01:00
|
|
|
This function is invoked if user selected a interactive opcode from Device Manager's
|
2009-01-23 08:24:55 +01:00
|
|
|
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
|
|
|
|
);
|
|
|
|
|
2009-12-04 04:22:44 +01:00
|
|
|
/**
|
|
|
|
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
|
|
|
|
);
|
|
|
|
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
/**
|
|
|
|
|
|
|
|
This function registers HII packages to HII database.
|
|
|
|
|
2009-04-14 12:47:19 +02:00
|
|
|
@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.
|
2009-01-23 08:24:55 +01:00
|
|
|
|
|
|
|
**/
|
|
|
|
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
|
|
|
|
);
|
|
|
|
|
2009-12-04 04:22:44 +01:00
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
/**
|
2009-12-04 04:22:44 +01:00
|
|
|
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.
|
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
@param DriverHealthList A Pointer to the list contain all of the platform driver health information.
|
|
|
|
@param DriverHandle The handle of driver.
|
2009-12-04 04:22:44 +01:00
|
|
|
@param ControllerHandle The class guid specifies which form set will be displayed.
|
|
|
|
@param ChildHandle The handle of the child controller to retrieve the health
|
2010-01-07 10:17:03 +01:00
|
|
|
status on. This is an optional parameter that may be NULL.
|
|
|
|
@param DriverHealth A pointer to the EFI_DRIVER_HEALTH_PROTOCOL instance.
|
2009-12-04 04:22:44 +01:00
|
|
|
@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.
|
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
**/
|
2009-12-04 04:22:44 +01:00
|
|
|
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
|
|
|
|
);
|
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
/**
|
2009-12-04 04:22:44 +01:00
|
|
|
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.
|
2010-01-07 10:17:03 +01:00
|
|
|
**/
|
2009-12-04 04:22:44 +01:00
|
|
|
BOOLEAN
|
|
|
|
PlaformHealthStatusCheck (
|
|
|
|
VOID
|
|
|
|
);
|
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
/**
|
2009-12-04 04:22:44 +01:00
|
|
|
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.
|
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
**/
|
2009-12-04 04:22:44 +01:00
|
|
|
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.
|
|
|
|
|
|
|
|
**/
|
|
|
|
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
|
|
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Repair notification function, simply print the repair progress.
|
|
|
|
|
|
|
|
@param Value The value of part has been repaired.
|
|
|
|
@param Limit Total value need to be repaired.
|
|
|
|
|
|
|
|
**/
|
|
|
|
VOID
|
|
|
|
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.
|
|
|
|
|
2010-01-07 10:17:03 +01:00
|
|
|
@retval EFI_SUCCESS The Component Name (2) protocol instance is successfully located and we find
|
2009-12-04 04:22:44 +01:00
|
|
|
the best matching language it support.
|
2010-01-07 10:17:03 +01:00
|
|
|
@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
|
2009-12-04 04:22:44 +01:00
|
|
|
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
|
|
|
|
);
|
|
|
|
|
2009-01-23 08:24:55 +01:00
|
|
|
#endif
|