ShellPkg[all]  1.02
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
HandleParsingLib.h File Reference

Macros

#define HR_UNKNOWN   0
 
#define HR_IMAGE_HANDLE   BIT1
 
#define HR_DRIVER_BINDING_HANDLE   BIT2
 
#define HR_DEVICE_DRIVER   BIT3
 
#define HR_BUS_DRIVER   BIT4
 
#define HR_DRIVER_CONFIGURATION_HANDLE   BIT5
 
#define HR_DRIVER_DIAGNOSTICS_HANDLE   BIT6
 
#define HR_COMPONENT_NAME_HANDLE   BIT7
 
#define HR_DEVICE_HANDLE   BIT8
 
#define HR_PARENT_HANDLE   BIT9
 
#define HR_CONTROLLER_HANDLE   BIT10
 
#define HR_CHILD_HANDLE   BIT11
 
#define HR_VALID_MASK   (BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7|BIT8|BIT9|BIT10|BIT11)
 
#define PARSE_HANDLE_DATABASE_PARENTS(ControllerHandle, Count, Buffer)   ParseHandleDatabaseByRelationship(NULL, ControllerHandle, HR_PARENT_HANDLE, Count, Buffer)
 
#define PARSE_HANDLE_DATABASE_UEFI_DRIVERS(ControllerHandle, Count, Buffer)   ParseHandleDatabaseByRelationship(NULL, ControllerHandle, HR_DRIVER_BINDING_HANDLE|HR_DEVICE_DRIVER, Count, Buffer)
 
#define PARSE_HANDLE_DATABASE_MANAGED_CHILDREN(DriverHandle, ControllerHandle, Count, Buffer)   ParseHandleDatabaseByRelationship(DriverHandle, ControllerHandle, HR_CHILD_HANDLE|HR_DEVICE_HANDLE, Count, Buffer)
 
#define PARSE_HANDLE_DATABASE_DEVICES(DriverHandle, Count, Buffer)   ParseHandleDatabaseByRelationship(DriverHandle, NULL, HR_CONTROLLER_HANDLE|HR_DEVICE_HANDLE, Count, Buffer)
 

Functions

EFI_STATUS EFIAPI AddNewGuidNameMapping (IN CONST EFI_GUID *Guid, IN CONST CHAR16 *TheName, IN CONST CHAR8 *Lang)
 
CHAR16 *EFIAPI GetStringNameFromGuid (IN CONST EFI_GUID *Guid, IN CONST CHAR8 *Lang)
 
EFI_STATUS EFIAPI GetGuidFromStringName (IN CONST CHAR16 *Name, IN CONST CHAR8 *Lang, OUT EFI_GUID **Guid)
 
CHAR16 *EFIAPI GetProtocolInformationDump (IN CONST EFI_HANDLE TheHandle, IN CONST EFI_GUID *Guid, IN CONST BOOLEAN Verbose)
 
CONST CHAR16 *EFIAPI GetStringNameFromHandle (IN CONST EFI_HANDLE TheHandle, IN CONST CHAR8 *Language)
 
CHAR8 *EFIAPI GetBestLanguageForDriver (IN CONST CHAR8 *SupportedLanguages, IN CONST CHAR8 *InputLanguage, IN BOOLEAN Iso639Language)
 
EFI_STATUS EFIAPI ParseHandleDatabaseByRelationship (IN CONST EFI_HANDLE DriverBindingHandle, IN CONST EFI_HANDLE ControllerHandle, IN CONST UINTN Mask, IN UINTN *MatchingHandleCount, OUT EFI_HANDLE **MatchingHandleBuffer)
 
EFI_STATUS EFIAPI ParseHandleDatabaseByRelationshipWithType (IN CONST EFI_HANDLE DriverBindingHandle, IN CONST EFI_HANDLE ControllerHandle, IN UINTN *HandleCount, OUT EFI_HANDLE **HandleBuffer, OUT UINTN **HandleType)
 
EFI_STATUS EFIAPI ParseHandleDatabaseForChildDevices (IN CONST EFI_HANDLE DriverHandle, IN UINTN *MatchingHandleCount, OUT EFI_HANDLE **MatchingHandleBuffer)
 
EFI_STATUS EFIAPI ParseHandleDatabaseForChildControllers (IN CONST EFI_HANDLE ControllerHandle, OUT UINTN *MatchingHandleCount, OUT EFI_HANDLE **MatchingHandleBuffer)
 
UINTN EFIAPI ConvertHandleToHandleIndex (IN CONST EFI_HANDLE TheHandle)
 
EFI_HANDLE EFIAPI ConvertHandleIndexToHandle (IN CONST UINTN TheIndex)
 
EFI_HANDLE *EFIAPI GetHandleListByProtocol (IN CONST EFI_GUID *ProtocolGuid)
 
EFI_HANDLE *EFIAPI GetHandleListByProtocolList (IN CONST EFI_GUID **ProtocolGuids)
 
EFI_STATUS EFIAPI GetAllMappingGuids (OUT EFI_GUID *Guids, IN OUT UINTN *Count)
 

Detailed Description

Provides interface to advanced shell functionality for parsing both handle and protocol database.

Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Macro Definition Documentation

#define HR_BUS_DRIVER   BIT4
#define HR_CHILD_HANDLE   BIT11
#define HR_COMPONENT_NAME_HANDLE   BIT7
#define HR_CONTROLLER_HANDLE   BIT10
#define HR_DEVICE_DRIVER   BIT3
#define HR_DEVICE_HANDLE   BIT8
#define HR_DRIVER_BINDING_HANDLE   BIT2
#define HR_DRIVER_CONFIGURATION_HANDLE   BIT5
#define HR_DRIVER_DIAGNOSTICS_HANDLE   BIT6
#define HR_IMAGE_HANDLE   BIT1
#define HR_PARENT_HANDLE   BIT9
#define HR_UNKNOWN   0
#define HR_VALID_MASK   (BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7|BIT8|BIT9|BIT10|BIT11)
#define PARSE_HANDLE_DATABASE_DEVICES (   DriverHandle,
  Count,
  Buffer 
)    ParseHandleDatabaseByRelationship(DriverHandle, NULL, HR_CONTROLLER_HANDLE|HR_DEVICE_HANDLE, Count, Buffer)

Gets handles for any devices managed by the passed in driver.

Parameters
[in]DriverHandleThe handle of the driver.
[in]CountThe pointer to the number of handles in MatchingHandleBuffer on return.
[out]BufferThe buffer containing handles on a successful return.
Return values
EFI_SUCCESSThe operation was successful.
See Also
ParseHandleDatabaseByRelationship
#define PARSE_HANDLE_DATABASE_MANAGED_CHILDREN (   DriverHandle,
  ControllerHandle,
  Count,
  Buffer 
)    ParseHandleDatabaseByRelationship(DriverHandle, ControllerHandle, HR_CHILD_HANDLE|HR_DEVICE_HANDLE, Count, Buffer)

Gets handles for any children of the passed in controller by the passed in driver handle.

Parameters
[in]DriverHandleThe handle of the driver.
[in]ControllerHandleThe handle of the controller.
[in]CountThe pointer to the number of handles in MatchingHandleBuffer on return.
[out]BufferThe buffer containing handles on a successful return.
Return values
EFI_SUCCESSThe operation was successful.
See Also
ParseHandleDatabaseByRelationship
#define PARSE_HANDLE_DATABASE_PARENTS (   ControllerHandle,
  Count,
  Buffer 
)    ParseHandleDatabaseByRelationship(NULL, ControllerHandle, HR_PARENT_HANDLE, Count, Buffer)

Gets handles for any parents of the passed in controller.

Parameters
[in]ControllerHandleThe handle of the controller.
[in]CountThe pointer to the number of handles in MatchingHandleBuffer on return.
[out]BufferThe buffer containing handles on a successful return.
Return values
EFI_SUCCESSThe operation was successful.
See Also
ParseHandleDatabaseByRelationship
#define PARSE_HANDLE_DATABASE_UEFI_DRIVERS (   ControllerHandle,
  Count,
  Buffer 
)    ParseHandleDatabaseByRelationship(NULL, ControllerHandle, HR_DRIVER_BINDING_HANDLE|HR_DEVICE_DRIVER, Count, Buffer)

Gets handles for any UEFI drivers of the passed in controller.

Parameters
[in]ControllerHandleThe handle of the controller.
[in]CountThe pointer to the number of handles in MatchingHandleBuffer on return.
[out]BufferThe buffer containing handles on a successful return.
Return values
EFI_SUCCESSThe operation was successful.
See Also
ParseHandleDatabaseByRelationship

Function Documentation

EFI_STATUS EFIAPI AddNewGuidNameMapping ( IN CONST EFI_GUID *  Guid,
IN CONST CHAR16 *  TheName,
IN CONST CHAR8 *  Lang 
)

Function to add a new GUID/Name mapping.

This cannot overwrite an existing mapping.

Parameters
[in]GuidThe Guid
[in]TheNameThe Guid's name
[in]LangRFC4646 language code list or NULL
Return values
EFI_SUCCESSThe operation was sucessful
EFI_ACCESS_DENIEDThere was a duplicate
EFI_OUT_OF_RESOURCESA memory allocation failed
EFI_HANDLE EFIAPI ConvertHandleIndexToHandle ( IN CONST UINTN  TheIndex)

Function to retrieve the EFI_HANDLE from the human-friendly index.

Parameters
[in]TheIndexThe index to retrieve the EFI_HANDLE for.
Return values
NULLThe index was invalid.
Returns
The EFI_HANDLE that index represents.
UINTN EFIAPI ConvertHandleToHandleIndex ( IN CONST EFI_HANDLE  TheHandle)

Function to retrieve the human-friendly index of a given handle. If the handle does not have a index one will be automatically assigned. The index value is valid until the termination of the shell application.

Parameters
[in]TheHandleThe handle to retrieve an index for.
Return values
0A memory allocation failed.
Returns
The index of the handle.
EFI_STATUS EFIAPI GetAllMappingGuids ( OUT EFI_GUID *  Guids,
IN OUT UINTN Count 
)

Return all supported GUIDs.

Parameters
[out]GuidsThe buffer to return all supported GUIDs.
[in,out]CountOn input, the count of GUIDs the buffer can hold, On output, the count of GUIDs to return.
Return values
EFI_INVALID_PARAMETERCount is NULL.
EFI_BUFFER_TOO_SMALLBuffer is not enough to hold all GUIDs.
EFI_SUCCESSGUIDs are returned successfully.
CHAR8* EFIAPI GetBestLanguageForDriver ( IN CONST CHAR8 *  SupportedLanguages,
IN CONST CHAR8 *  InputLanguage,
IN BOOLEAN  Iso639Language 
)

Get best support language for this driver.

First base on the user input language to search, second base on the current platform used language to search, third get the first language from the support language list. The caller need to free the buffer of the best language.

Parameters
[in]SupportedLanguagesThe support languages for this driver.
[in]InputLanguageThe user input language.
[in]Iso639LanguageWhether get language for ISO639.
Returns
The best support language for this driver.
EFI_STATUS EFIAPI GetGuidFromStringName ( IN CONST CHAR16 *  Name,
IN CONST CHAR8 *  Lang,
OUT EFI_GUID **  Guid 
)

Function to get the Guid for a protocol or struct based on it's string name.

Do not free or modify the returned GUID.

Parameters
[in]NameThe pointer to the string name.
[in]LangThe pointer to the language code (string).
[out]GuidThe pointer to the pointer to the Guid.
Return values
EFI_SUCCESSThe operation was successful.
EFI_HANDLE* EFIAPI GetHandleListByProtocol ( IN CONST EFI_GUID *  ProtocolGuid)

Function to get all handles that support a given protocol or all handles.

The caller is responsible to free this memory.

Parameters
[in]ProtocolGuidThe guid of the protocol to get handles for. If NULL then the function will return all handles.
Return values
NULLA memory allocation failed.
Returns
A NULL terminated list of handles.
EFI_HANDLE* EFIAPI GetHandleListByProtocolList ( IN CONST EFI_GUID **  ProtocolGuids)

Function to get all handles that support some protocols.

The caller is responsible to free this memory.

Parameters
[in]ProtocolGuidsA NULL terminated list of protocol GUIDs.
Return values
NULLA memory allocation failed.
NULLProtocolGuids was NULL.
Returns
A NULL terminated list of EFI_HANDLEs.
CHAR16* EFIAPI GetProtocolInformationDump ( IN CONST EFI_HANDLE  TheHandle,
IN CONST EFI_GUID *  Guid,
IN CONST BOOLEAN  Verbose 
)

Function to dump protocol information from a handle.

This function will return a allocated string buffer containing the information. The caller is responsible for freeing the memory.

If Guid is NULL, ASSERT(). If TheHandle is NULL, ASSERT().

Parameters
[in]TheHandleThe handle to dump information from.
[in]GuidThe GUID of the protocol to dump.
[in]VerboseTRUE for extra info. FALSE otherwise.
Returns
The pointer to string.
Return values
NULLAn error was encountered.
CHAR16* EFIAPI GetStringNameFromGuid ( IN CONST EFI_GUID *  Guid,
IN CONST CHAR8 *  Lang 
)

Function to get the name of a protocol or struct from it's GUID.

If Guid is NULL, then ASSERT.

Parameters
[in]GuidThe GUID to look for the name of.
[in]LangThe language to use.
Returns
The pointer to a string of the name. The caller is responsible to free this memory.
CONST CHAR16* EFIAPI GetStringNameFromHandle ( IN CONST EFI_HANDLE  TheHandle,
IN CONST CHAR8 *  Language 
)

Function to retrieve the driver name (if possible) from the ComponentName or ComponentName2 protocol.

The string returned must be callee freed.

Parameters
[in]TheHandleThe driver handle to get the name of.
[in]LanguageThe language to use.
Return values
NULLThe name could not be found.
Returns
A pointer to the string name. Do not de-allocate the memory.
EFI_STATUS EFIAPI ParseHandleDatabaseByRelationship ( IN CONST EFI_HANDLE  DriverBindingHandle,
IN CONST EFI_HANDLE  ControllerHandle,
IN CONST UINTN  Mask,
IN UINTN MatchingHandleCount,
OUT EFI_HANDLE **  MatchingHandleBuffer 
)

Gets all the related EFI_HANDLEs based on the mask supplied.

This function will scan all EFI_HANDLES in the UEFI environment's handle database and return all the ones with the specified relationship (Mask) to the specified controller handle.

If both DriverBindingHandle and ControllerHandle are NULL, then ASSERT. If MatchingHandleCount is NULL, then ASSERT.

If MatchingHandleBuffer is not NULL upon a successful return, the memory must be caller freed.

Parameters
[in]DriverBindingHandleThe handle with Driver Binding protocol on it.
[in]ControllerHandleThe handle with Device Path protocol on it.
[in]MaskThe mask of what relationship(s) is desired.
[in]MatchingHandleCountThe pointer to UINTN specifying number of HANDLES in MatchingHandleBuffer.
[out]MatchingHandleBufferOn a successful return, a buffer of MatchingHandleCount EFI_HANDLEs with a terminating NULL EFI_HANDLE.
Return values
EFI_SUCCESSThe operation was successful, and any related handles are in MatchingHandleBuffer.
EFI_NOT_FOUNDNo matching handles were found.
EFI_INVALID_PARAMETERA parameter was invalid or out of range.
See Also
ParseHandleDatabaseByRelationshipWithType
EFI_STATUS EFIAPI ParseHandleDatabaseByRelationshipWithType ( IN CONST EFI_HANDLE  DriverBindingHandle,
IN CONST EFI_HANDLE  ControllerHandle,
IN UINTN HandleCount,
OUT EFI_HANDLE **  HandleBuffer,
OUT UINTN **  HandleType 
)

Gets all the related EFI_HANDLEs based on the mask supplied.

This function scans all EFI_HANDLES in the UEFI environment's handle database and returns the ones with the specified relationship (Mask) to the specified controller handle.

If both DriverBindingHandle and ControllerHandle are NULL, then ASSERT. If MatchingHandleCount is NULL, then ASSERT.

If MatchingHandleBuffer is not NULL upon a successful return the memory must be caller freed.

Parameters
[in]DriverBindingHandleThe handle with Driver Binding protocol on it.
[in]ControllerHandleThe handle with Device Path protocol on it.
[in]MatchingHandleCountThe pointer to UINTN that specifies the number of HANDLES in MatchingHandleBuffer.
[out]MatchingHandleBufferOn a successful return, a buffer of MatchingHandleCount EFI_HANDLEs with a terminating NULL EFI_HANDLE.
[out]HandleTypeAn array of type information.
Return values
EFI_SUCCESSThe operation was successful, and any related handles are in MatchingHandleBuffer.
EFI_NOT_FOUNDNo matching handles were found.
EFI_INVALID_PARAMETERA parameter was invalid or out of range.
EFI_STATUS EFIAPI ParseHandleDatabaseForChildControllers ( IN CONST EFI_HANDLE  ControllerHandle,
OUT UINTN MatchingHandleCount,
OUT EFI_HANDLE **  MatchingHandleBuffer 
)

Gets handles for any child controllers of the passed in controller.

Parameters
[in]ControllerHandleThe handle of the "parent controller".
[out]MatchingHandleCountThe pointer to the number of handles in MatchingHandleBuffer on return.
[out]MatchingHandleBufferThe buffer containing handles on a successful return.
Return values
EFI_SUCCESSThe operation was successful.
See Also
ParseHandleDatabaseByRelationship
EFI_STATUS EFIAPI ParseHandleDatabaseForChildDevices ( IN CONST EFI_HANDLE  DriverHandle,
IN UINTN MatchingHandleCount,
OUT EFI_HANDLE **  MatchingHandleBuffer 
)

Gets handles for any child devices produced by the passed in driver.

Parameters
[in]DriverHandleThe handle of the driver.
[in]MatchingHandleCountThe pointer to the number of handles in MatchingHandleBuffer on return.
[out]MatchingHandleBufferThe buffer containing handles on a successful return.
Return values
EFI_SUCCESSThe operation was successful.
See Also
ParseHandleDatabaseByRelationship