mirror of https://github.com/acidanthera/audk.git
Driver health management implementation in BDS based on UEFI Specification 2.3.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9514 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
c6204371fd
commit
ab4da12626
|
@ -19,6 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
#include <IndustryStandard/PeImage.h>
|
||||
#include <Guid/MdeModuleHii.h>
|
||||
#include <Guid/FileSystemVolumeLabelInfo.h>
|
||||
#include <Guid/HiiPlatformSetupFormset.h>
|
||||
#include <Protocol/DevicePath.h>
|
||||
#include <IndustryStandard/SmBios.h>
|
||||
#include <Protocol/LoadFile.h>
|
||||
|
@ -42,6 +43,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
#include <Protocol/SerialIo.h>
|
||||
#include <Protocol/LegacyBios.h>
|
||||
#include <Protocol/SimpleTextInEx.h>
|
||||
#include <Protocol/DriverHealth.h>
|
||||
|
||||
#include <Library/UefiDriverEntryPoint.h>
|
||||
#include <Library/PrintLib.h>
|
||||
|
|
|
@ -55,6 +55,7 @@
|
|||
|
||||
DeviceMngr/DeviceManager.h
|
||||
DeviceMngr/DeviceManagerVfr.Vfr
|
||||
DeviceMngr/DriverHealthVfr.Vfr
|
||||
DeviceMngr/DeviceManagerStrings.uni
|
||||
DeviceMngr/DeviceManager.c
|
||||
BootMngr/BootManagerVfr.Vfr
|
||||
|
@ -132,22 +133,24 @@
|
|||
gEfiFileInfoGuid ## CONSUMES ## GUID (Indicate the information type is file)
|
||||
gEfiHiiPlatformSetupFormsetGuid ## CONSUMES ## GUID (Indicate the formset class guid to be displayed)
|
||||
gEfiIfrTianoGuid ## CONSUMES ## GUID (Extended IFR Guid Opcode)
|
||||
|
||||
gEfiHiiDriverHealthFormsetGuid ## CONSUMES ## GUID (Indicate the Driver Health formset class guid to be displayed)
|
||||
|
||||
[Protocols]
|
||||
gEfiSimpleFileSystemProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiLoadFileProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiBdsArchProtocolGuid # PROTOCOL ALWAYS_PRODUCES
|
||||
gEfiSmbiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
|
||||
gEfiGenericMemTestProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiUgaDrawProtocolGuid |PcdUgaConsumeSupport # PROTOCOL SOMETIMES_CONSUMES
|
||||
gEfiBlockIoProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiGraphicsOutputProtocolGuid # PROTOCOL SOMETIMES_CONSUMES
|
||||
gEfiSimpleTextInputExProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiHiiConfigAccessProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiFormBrowser2ProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiSerialIoProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiDevicePathProtocolGuid # PROTOCOL ALWAYS_CONSUMES
|
||||
gEfiSimpleFileSystemProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiLoadFileProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiBdsArchProtocolGuid ## PROTOCOL PRODUCES
|
||||
gEfiSmbiosProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiGenericMemTestProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiLegacyBiosProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiUgaDrawProtocolGuid |PcdUgaConsumeSupport ## PROTOCOL SOMETIMES_CONSUMES
|
||||
gEfiBlockIoProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiGraphicsOutputProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES
|
||||
gEfiSimpleTextInputExProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiHiiConfigAccessProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiFormBrowser2ProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiSerialIoProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiDevicePathProtocolGuid ## PROTOCOL CONSUMES
|
||||
gEfiDriverHealthProtocolGuid ## PROTOCOL SOMETIMES_CONSUMES
|
||||
|
||||
[FeaturePcd.common]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,7 +1,7 @@
|
|||
/** @file
|
||||
The platform device manager reference implement
|
||||
|
||||
Copyright (c) 2004 - 2008, Intel Corporation. <BR>
|
||||
Copyright (c) 2004 - 2009, Intel Corporation. <BR>
|
||||
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
|
||||
|
@ -26,43 +26,111 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
0x3ebfa8e6, 0x511d, 0x4b5b, {0xa9, 0x5f, 0xfb, 0x38, 0x26, 0xf, 0x1c, 0x27} \
|
||||
}
|
||||
|
||||
#define DRIVER_HEALTH_FORMSET_GUID \
|
||||
{ \
|
||||
0xf76e0a70, 0xb5ed, 0x4c38, {0xac, 0x9a, 0xe5, 0xf5, 0x4b, 0xf1, 0x6e, 0x34} \
|
||||
}
|
||||
|
||||
#define LABEL_DEVICES_LIST 0x0080
|
||||
#define LABEL_END 0xffff
|
||||
|
||||
#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
|
||||
|
||||
#define LABEL_VBIOS 0x0040
|
||||
|
||||
#define DEVICE_MANAGER_FORM_ID 0x1000
|
||||
#define DRIVER_HEALTH_FORM_ID 0x1001
|
||||
|
||||
#define DEVICE_KEY_OFFSET 0x1000
|
||||
#define DEVICE_MANAGER_KEY_VBIOS 0x2000
|
||||
|
||||
#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
|
||||
|
||||
//
|
||||
// These are the VFR compiler generated data representing our VFR data.
|
||||
//
|
||||
extern UINT8 DeviceManagerVfrBin[];
|
||||
extern UINT8 DriverHealthVfrBin[];
|
||||
|
||||
#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;
|
||||
|
||||
///
|
||||
/// HII relative handles
|
||||
/// Device Manager HII relative handles
|
||||
///
|
||||
EFI_HII_HANDLE HiiHandle;
|
||||
EFI_HANDLE DriverHandle;
|
||||
|
||||
///
|
||||
/// Produced protocols
|
||||
/// 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;
|
||||
|
||||
#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, \
|
||||
|
@ -75,7 +143,7 @@ typedef struct {
|
|||
} DEVICE_MANAGER_MENU_ITEM;
|
||||
|
||||
/**
|
||||
This function is invoked if user selected a iteractive opcode from Device Manager's
|
||||
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.
|
||||
|
||||
|
@ -103,6 +171,35 @@ DeviceManagerCallback (
|
|||
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.
|
||||
|
@ -134,4 +231,317 @@ 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 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.
|
||||
|
||||
@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.
|
||||
|
||||
**/
|
||||
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.
|
||||
|
||||
@param EFI_SUCCESS The Component Name (2) protocol instance is successfully located and we find
|
||||
the best matching language it support.
|
||||
@param EFI_UNSUPPORTED The input Language is not supported by the Component Name (2) protocol.
|
||||
@param 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
|
||||
|
|
Binary file not shown.
|
@ -2,7 +2,7 @@
|
|||
//
|
||||
// Device Manager formset.
|
||||
//
|
||||
// Copyright (c) 2004 - 2008, Intel Corporation. <BR>
|
||||
// Copyright (c) 2004 - 2009, Intel Corporation. <BR>
|
||||
// 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
|
||||
|
@ -31,6 +31,8 @@
|
|||
|
||||
#define DEVICE_MANAGER_FORM_ID 0x1000
|
||||
|
||||
#define DEVICE_MANAGER_KEY_DRIVER_HEALTH 0x1111
|
||||
|
||||
formset
|
||||
guid = FORMSET_GUID,
|
||||
title = STRING_TOKEN(STR_DEVICE_MANAGER_TITLE),
|
||||
|
@ -64,12 +66,22 @@ formset
|
|||
|
||||
label LABEL_DEVICES_LIST;
|
||||
label LABEL_END;
|
||||
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||
subtitle text = STRING_TOKEN(STR_DM_DRIVER_HEALTH_TITLE);
|
||||
|
||||
text
|
||||
help = STRING_TOKEN(STR_DRIVER_HEALTH_STATUS_HELP),
|
||||
text = STRING_TOKEN(STR_DRIVER_HEALTH_ALL_HEALTHY),
|
||||
text = STRING_TOKEN(STR_LAST_STRING),
|
||||
flags = INTERACTIVE,
|
||||
key = DEVICE_MANAGER_KEY_DRIVER_HEALTH;
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
|
||||
|
||||
label LABEL_VBIOS;
|
||||
label LABEL_END;
|
||||
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
|
||||
subtitle text = STRING_TOKEN(STR_EXIT_STRING);
|
||||
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
///** @file
|
||||
//
|
||||
// Driver Health formset.
|
||||
//
|
||||
// Copyright (c) 2004 - 2009, Intel Corporation. <BR>
|
||||
// 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.
|
||||
//
|
||||
//**/
|
||||
|
||||
#define DRIVER_HEALTH_FORMSET_GUID { 0xf76e0a70, 0xb5ed, 0x4c38, 0xac, 0x9a, 0xe5, 0xf5, 0x4b, 0xf1, 0x6e, 0x34 }
|
||||
|
||||
#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
|
||||
|
||||
#define DRIVER_HEALTH_FORM_ID 0x1001
|
||||
|
||||
formset
|
||||
guid = DRIVER_HEALTH_FORMSET_GUID,
|
||||
title = STRING_TOKEN(STR_DH_BANNER),
|
||||
help = STRING_TOKEN(STR_EMPTY_STRING),
|
||||
classguid = DRIVER_HEALTH_FORMSET_GUID,
|
||||
|
||||
form formid = DRIVER_HEALTH_FORM_ID,
|
||||
title = STRING_TOKEN(STR_DH_BANNER);
|
||||
|
||||
label LABEL_DRIVER_HEALTH;
|
||||
label LABEL_DRIVER_HEALTH_END;
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||
label LABEL_DRIVER_HEALTH_REAPIR_ALL;
|
||||
label LABEL_DRIVER_HEALTH_REAPIR_ALL_END;
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||
subtitle text = STRING_TOKEN(STR_HELP_FOOTER);
|
||||
subtitle text = STRING_TOKEN(STR_LAST_STRING);
|
||||
endform;
|
||||
endformset;
|
Loading…
Reference in New Issue