]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
ShellPkg: Add protocols / protocol GUIDs to display and input mapping.
[mirror_edk2.git] / ShellPkg / Library / UefiHandleParsingLib / UefiHandleParsingLib.c
index 012ea39a9ae20aa1de0dbae4dc097cb20d5eab44..44ad4c0b55d6cc36e7ab8426b2c81bd3d4fb7a6d 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   Provides interface to advanced shell functionality for parsing both handle and protocol database.\r
 \r
-  Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
 \r
 #include "UefiHandleParsingLib.h"\r
 \r
-\r
-STATIC CONST EFI_GUID mHandleParsingHiiGuid = \\r
-  { \\r
-  0xb8969637, 0x81de, 0x43af, { 0xbc, 0x9a, 0x24, 0xd9, 0x89, 0x13, 0xf2, 0xf6 } \\r
-  };\r
 EFI_HANDLE mHandleParsingHiiHandle;\r
 HANDLE_INDEX_LIST mHandleList = {{{NULL,NULL},0,0},0};\r
 \r
@@ -37,7 +32,7 @@ HandleParsingLibConstructor (
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  mHandleParsingHiiHandle = HiiAddPackages (&mHandleParsingHiiGuid, gImageHandle, UefiHandleParsingLibStrings, NULL);\r
+  mHandleParsingHiiHandle = HiiAddPackages (&gHandleParsingHiiGuid, gImageHandle, UefiHandleParsingLibStrings, NULL);\r
   if (mHandleParsingHiiHandle == NULL) {\r
     return (EFI_DEVICE_ERROR);\r
   }\r
@@ -211,8 +206,10 @@ TxtOutProtocolDumpInformation(
   RetVal = AllocateZeroPool(Size);\r
 \r
   Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_TXT_OUT_DUMP_HEADER), NULL);\r
-  UnicodeSPrint(RetVal, Size, Temp, Dev, Dev->Mode->Attribute);\r
-  FreePool(Temp);\r
+  if (Temp != NULL) {\r
+    UnicodeSPrint(RetVal, Size, Temp, Dev, Dev->Mode->Attribute);\r
+    FreePool(Temp);\r
+  }\r
 \r
   //\r
   // Dump TextOut Info\r
@@ -224,7 +221,7 @@ TxtOutProtocolDumpInformation(
     UnicodeSPrint(\r
       RetVal + StrLen(RetVal),\r
       NewSize,\r
-      Temp,\r
+      Temp == NULL?L"":Temp,\r
       Index == Dev->Mode->Mode ? L'*' : L' ',\r
       Index,\r
       !EFI_ERROR(Status)?Col:-1,\r
@@ -336,14 +333,14 @@ STATIC CONST EFI_GUID WinNtThunkProtocolGuid = LOCAL_EFI_WIN_NT_THUNK_PROTOCOL_G
 STATIC CONST EFI_GUID WinNtIoProtocolGuid    = LOCAL_EFI_WIN_NT_BUS_DRIVER_IO_PROTOCOL_GUID;\r
 STATIC CONST EFI_GUID WinNtSerialPortGuid    = LOCAL_EFI_WIN_NT_SERIAL_PORT_GUID;\r
 \r
-STATIC CONST PROTOCOL_INFO_BLOCK mGuidStringListNT[] = {\r
+STATIC CONST GUID_INFO_BLOCK mGuidStringListNT[] = {\r
   {STRING_TOKEN(STR_WINNT_THUNK),           (EFI_GUID*)&WinNtThunkProtocolGuid,               NULL},\r
   {STRING_TOKEN(STR_WINNT_DRIVER_IO),       (EFI_GUID*)&WinNtIoProtocolGuid,                  NULL},\r
   {STRING_TOKEN(STR_WINNT_SERIAL_PORT),     (EFI_GUID*)&WinNtSerialPortGuid,                  NULL},\r
   {STRING_TOKEN(STR_UNKNOWN_DEVICE),        NULL,                                             NULL},\r
 };\r
 \r
-STATIC CONST PROTOCOL_INFO_BLOCK mGuidStringList[] = {\r
+STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {\r
   {STRING_TOKEN(STR_LOADED_IMAGE),          &gEfiLoadedImageProtocolGuid,                     NULL},\r
   {STRING_TOKEN(STR_DEVICE_PATH),           &gEfiDevicePathProtocolGuid,                      DevicePathProtocolDumpInformation},\r
   {STRING_TOKEN(STR_IMAGE_PATH),            &gEfiLoadedImageDevicePathProtocolGuid,           DevicePathProtocolDumpInformation},\r
@@ -379,8 +376,6 @@ STATIC CONST PROTOCOL_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_LOAD_FILE),             &gEfiLoadFileProtocolGuid,                        NULL},\r
   {STRING_TOKEN(STR_LOAD_FILE2),            &gEfiLoadFile2ProtocolGuid,                       NULL},\r
   {STRING_TOKEN(STR_SIMPLE_FILE_SYS),       &gEfiSimpleFileSystemProtocolGuid,                NULL},\r
-  {STRING_TOKEN(STR_FILE_INFO),             &gEfiFileInfoGuid,                                NULL},\r
-  {STRING_TOKEN(STR_FILE_SYS_INFO),         &gEfiFileSystemInfoGuid,                          NULL},\r
   {STRING_TOKEN(STR_TAPE_IO),               &gEfiTapeIoProtocolGuid,                          NULL},\r
   {STRING_TOKEN(STR_DISK_IO),               &gEfiDiskIoProtocolGuid,                          NULL},\r
   {STRING_TOKEN(STR_BLK_IO),                &gEfiBlockIoProtocolGuid,                         NULL},\r
@@ -419,7 +414,6 @@ STATIC CONST PROTOCOL_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_IPV4_CFG),              &gEfiIp4ConfigProtocolGuid,                       NULL},\r
   {STRING_TOKEN(STR_SHELL_PARAMETERS),      &gEfiShellParametersProtocolGuid,                 NULL},\r
   {STRING_TOKEN(STR_SHELL),                 &gEfiShellProtocolGuid,                           NULL},\r
-  {STRING_TOKEN(STR_EFI_GLOBAL_VARIABLE),   &gEfiGlobalVariableGuid,                          NULL},\r
   {STRING_TOKEN(STR_UDPV4_SB),              &gEfiUdp4ServiceBindingProtocolGuid,              NULL},\r
   {STRING_TOKEN(STR_UDPV4),                 &gEfiUdp4ProtocolGuid,                            NULL},\r
   {STRING_TOKEN(STR_MTFTPV4_SB),            &gEfiMtftp4ServiceBindingProtocolGuid,            NULL},\r
@@ -434,6 +428,14 @@ STATIC CONST PROTOCOL_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_HII_CONFIG_ROUT),       &gEfiHiiConfigRoutingProtocolGuid,                NULL},\r
   {STRING_TOKEN(STR_HII_CONFIG_ACC),        &gEfiHiiConfigAccessProtocolGuid,                 NULL},\r
   {STRING_TOKEN(STR_HII_FORM_BROWSER2),     &gEfiFormBrowser2ProtocolGuid,                    NULL},\r
+  {STRING_TOKEN(STR_DRIVER_FAM_OVERRIDE),   &gEfiDriverFamilyOverrideProtocolGuid,            NULL},\r
+  {STRING_TOKEN(STR_PCD),                   &gPcdProtocolGuid,                                NULL},\r
+  {STRING_TOKEN(STR_TCG),                   &gEfiTcgProtocolGuid,                             NULL},\r
+  {STRING_TOKEN(STR_HII_PACKAGE_LIST),      &gEfiHiiPackageListProtocolGuid,                  NULL},\r
+\r
+//\r
+// the ones under this are deprecated by the current UEFI Spec, but may be found anyways...\r
+//\r
   {STRING_TOKEN(STR_SHELL_INTERFACE),       &gEfiShellInterfaceGuid,                          NULL},\r
   {STRING_TOKEN(STR_SHELL_ENV2),            &gEfiShellEnvironment2Guid,                       NULL},\r
   {STRING_TOKEN(STR_SHELL_ENV),             &gEfiShellEnvironment2Guid,                       NULL},\r
@@ -444,6 +446,62 @@ STATIC CONST PROTOCOL_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_GPT_NBR),               &gEfiPartTypeLegacyMbrGuid,                       NULL},\r
   {STRING_TOKEN(STR_DRIVER_CONFIG),         &gEfiDriverConfigurationProtocolGuid,             NULL},\r
   {STRING_TOKEN(STR_DRIVER_CONFIG2),        &gEfiDriverConfiguration2ProtocolGuid,            NULL},\r
+\r
+//\r
+// the ones under this are GUID identified structs, not protocols\r
+//\r
+  {STRING_TOKEN(STR_FILE_INFO),             &gEfiFileInfoGuid,                                NULL},\r
+  {STRING_TOKEN(STR_FILE_SYS_INFO),         &gEfiFileSystemInfoGuid,                          NULL},\r
+\r
+//\r
+// the ones under this are misc GUIDS.\r
+//\r
+  {STRING_TOKEN(STR_EFI_GLOBAL_VARIABLE),   &gEfiGlobalVariableGuid,                          NULL},\r
+\r
+//\r
+// UEFI 2.2\r
+//\r
+  {STRING_TOKEN(STR_IP6_SB),                &gEfiIp6ServiceBindingProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_IP6),                   &gEfiIp6ProtocolGuid,                             NULL},\r
+  {STRING_TOKEN(STR_IP6_CONFIG),            &gEfiIp6ConfigProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_MTFTP6_SB),             &gEfiMtftp6ServiceBindingProtocolGuid,            NULL},\r
+  {STRING_TOKEN(STR_MTFTP6),                &gEfiMtftp6ProtocolGuid,                          NULL},\r
+  {STRING_TOKEN(STR_DHCP6_SB),              &gEfiDhcp6ServiceBindingProtocolGuid,             NULL},\r
+  {STRING_TOKEN(STR_DHCP6),                 &gEfiDhcp6ProtocolGuid,                           NULL},\r
+  {STRING_TOKEN(STR_UDP6_SB),               &gEfiUdp6ServiceBindingProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_UDP6),                  &gEfiUdp6ProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_TCP6_SB),               &gEfiTcp6ServiceBindingProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_TCP6),                  &gEfiTcp6ProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_VLAN_CONFIG),           &gEfiVlanConfigProtocolGuid,                      NULL},\r
+  {STRING_TOKEN(STR_EAP),                   &gEfiEapProtocolGuid,                             NULL},\r
+  {STRING_TOKEN(STR_EAP_MGMT),              &gEfiEapManagementProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_FTP4_SB),               &gEfiFtp4ServiceBindingProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_FTP4),                  &gEfiFtp4ProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_IP_SEC_CONFIG),         &gEfiIpSecConfigProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_DH),                    &gEfiDriverHealthProtocolGuid,                    NULL},\r
+  {STRING_TOKEN(STR_DEF_IMG_LOAD),          &gEfiDeferredImageLoadProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_USER_CRED),             &gEfiUserCredentialProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_USER_MNGR),             &gEfiUserManagerProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_ATA_PASS_THRU),         &gEfiAtaPassThruProtocolGuid,                     NULL},\r
+\r
+//\r
+// UEFI 2.3\r
+//\r
+  {STRING_TOKEN(STR_FW_MGMT),               &gEfiFirmwareManagementProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_IP_SEC),                &gEfiIpSecProtocolGuid,                           NULL},\r
+  {STRING_TOKEN(STR_IP_SEC2),               &gEfiIpSec2ProtocolGuid,                          NULL},\r
+\r
+//\r
+// UEFI 2.3.1\r
+//\r
+  {STRING_TOKEN(STR_KMS),                   &gEfiKmsProtocolGuid,                             NULL},\r
+  {STRING_TOKEN(STR_BLK_IO2),               &gEfiBlockIo2ProtocolGuid,                        NULL},\r
+  {STRING_TOKEN(STR_SSC),                   &gEfiStorageSecurityCommandProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_UC2),                   &gEfiUserCredential2ProtocolGuid,                 NULL},\r
+\r
+//\r
+// terminator\r
+//\r
   {STRING_TOKEN(STR_UNKNOWN_DEVICE),        NULL,                                             NULL},\r
 };\r
 \r
@@ -456,13 +514,13 @@ STATIC CONST PROTOCOL_INFO_BLOCK mGuidStringList[] = {
 \r
   @return                       The node.\r
 **/\r
-CONST PROTOCOL_INFO_BLOCK *\r
+CONST GUID_INFO_BLOCK *\r
 EFIAPI\r
 InternalShellGetNodeFromGuid(\r
   IN CONST EFI_GUID* Guid\r
   )\r
 {\r
-  CONST PROTOCOL_INFO_BLOCK *ListWalker;\r
+  CONST GUID_INFO_BLOCK *ListWalker;\r
 \r
   ASSERT(Guid != NULL);\r
 \r
@@ -499,7 +557,7 @@ GetStringNameFromGuid(
   IN CONST CHAR8    *Lang OPTIONAL\r
   )\r
 {\r
-  CONST PROTOCOL_INFO_BLOCK *Id;\r
+  CONST GUID_INFO_BLOCK *Id;\r
 \r
   Id = InternalShellGetNodeFromGuid(Guid);\r
   return (HiiGetString(mHandleParsingHiiHandle, Id->StringId, Lang));\r
@@ -529,7 +587,7 @@ GetProtocolInformationDump(
   IN CONST BOOLEAN    Verbose\r
   )\r
 {\r
-  CONST PROTOCOL_INFO_BLOCK *Id;\r
+  CONST GUID_INFO_BLOCK *Id;\r
 \r
   ASSERT(TheHandle  != NULL);\r
   ASSERT(Guid       != NULL);\r
@@ -562,7 +620,7 @@ GetGuidFromStringName(
   IN EFI_GUID     **Guid\r
   )\r
 {\r
-  CONST PROTOCOL_INFO_BLOCK  *ListWalker;\r
+  CONST GUID_INFO_BLOCK  *ListWalker;\r
   CHAR16                     *String;\r
 \r
   ASSERT(Guid != NULL);\r
@@ -1110,6 +1168,7 @@ ParseHandleDatabaseForChildControllers(
   if (MatchingHandleCount == NULL) {\r
     return (EFI_INVALID_PARAMETER);\r
   }\r
+  *MatchingHandleCount = 0;\r
 \r
   Status = PARSE_HANDLE_DATABASE_UEFI_DRIVERS (\r
             ControllerHandle,\r
@@ -1129,7 +1188,6 @@ ParseHandleDatabaseForChildControllers(
     return (EFI_NOT_FOUND);\r
   }\r
 \r
-  *MatchingHandleCount = 0;\r
   for (DriverBindingHandleIndex = 0; DriverBindingHandleIndex < DriverBindingHandleCount; DriverBindingHandleIndex++) {\r
     Status = PARSE_HANDLE_DATABASE_MANAGED_CHILDREN (\r
               DriverBindingHandleBuffer[DriverBindingHandleIndex],\r
@@ -1179,10 +1237,10 @@ ParseHandleDatabaseForChildControllers(
 \r
   If DestinationBuffer is NULL, then ASSERT().\r
 \r
-  @param[in,out]  DestinationBuffer The pointer to the pointer to the buffer to append onto.\r
-  @param[in,out]  DestinationSize   The pointer to the size of DestinationBuffer.\r
-  @param[in]      SourceBuffer      The pointer to the buffer to append onto DestinationBuffer.\r
-  @param[in]      SourceSize        The number of bytes of SourceBuffer to append.\r
+  @param[in, out]  DestinationBuffer The pointer to the pointer to the buffer to append onto.\r
+  @param[in, out]  DestinationSize   The pointer to the size of DestinationBuffer.\r
+  @param[in]       SourceBuffer      The pointer to the buffer to append onto DestinationBuffer.\r
+  @param[in]       SourceSize        The number of bytes of SourceBuffer to append.\r
 \r
   @retval NULL                      A memory allocation failed.\r
   @retval NULL                      A parameter was invalid.\r