]> 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 131c077b1e2b2628e322077f4bf75d87d0336533..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