]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
ShellPkg: Update 'dh' command to reflect correct driver handle information
[mirror_edk2.git] / ShellPkg / Library / UefiHandleParsingLib / UefiHandleParsingLib.c
index 027f5cba75e42c3e526816a0ee29915c14c01698..4c46e5e48de719f395dff41681a907d6729fea66 100644 (file)
@@ -1,8 +1,9 @@
 /** @file\r
   Provides interface to advanced shell functionality for parsing both handle and protocol database.\r
 \r
-  Copyright (c) 2013 - 2014, Hewlett-Packard Development Company, L.P.<BR>\r
-  Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
+  (C) Copyright 2015 Hewlett Packard Enterprise Development LP<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
@@ -108,9 +109,9 @@ HandleParsingLibConstructor (
   return (EFI_SUCCESS);\r
 }\r
 \r
-/** \r
+/**\r
   Initialization function for HII packages.\r
\r
+\r
 **/\r
 VOID\r
 HandleParsingHiiInit (VOID)\r
@@ -180,10 +181,7 @@ LoadedImageProtocolDumpInformation(
   HandleParsingHiiInit();\r
 \r
   Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_LI_DUMP_MAIN), NULL);\r
-  RetVal = AllocateZeroPool (PcdGet16 (PcdShellPrintBufferSize));\r
-  if (Temp == NULL || RetVal == NULL) {\r
-    SHELL_FREE_NON_NULL(Temp);\r
-    SHELL_FREE_NON_NULL(RetVal);\r
+  if (Temp == NULL) {\r
     return NULL;\r
   }\r
 \r
@@ -198,29 +196,30 @@ LoadedImageProtocolDumpInformation(
 \r
   if (EFI_ERROR (Status)) {\r
     SHELL_FREE_NON_NULL (Temp);\r
-    SHELL_FREE_NON_NULL (RetVal);\r
     return NULL;\r
   }\r
 \r
   DataType = ConvertMemoryType(LoadedImage->ImageDataType);\r
   CodeType = ConvertMemoryType(LoadedImage->ImageCodeType);\r
 \r
-  RetVal = CatSPrint(RetVal,\r
-                      Temp,\r
-                      LoadedImage->Revision,\r
-                      LoadedImage->ParentHandle,\r
-                      LoadedImage->SystemTable,\r
-                      LoadedImage->DeviceHandle,\r
-                      LoadedImage->FilePath,\r
-                      LoadedImage->LoadOptionsSize,\r
-                      LoadedImage->LoadOptions,\r
-                      LoadedImage->ImageBase,\r
-                      LoadedImage->ImageSize,\r
-                      CodeType,\r
-                      DataType,\r
-                      LoadedImage->Unload);\r
-\r
-  \r
+  RetVal = CatSPrint(\r
+             NULL,\r
+             Temp,\r
+             LoadedImage->Revision,\r
+             LoadedImage->ParentHandle,\r
+             LoadedImage->SystemTable,\r
+             LoadedImage->DeviceHandle,\r
+             LoadedImage->FilePath,\r
+             LoadedImage->LoadOptionsSize,\r
+             LoadedImage->LoadOptions,\r
+             LoadedImage->ImageBase,\r
+             LoadedImage->ImageSize,\r
+             CodeType,\r
+             DataType,\r
+             LoadedImage->Unload\r
+             );\r
+\r
+\r
   SHELL_FREE_NON_NULL(Temp);\r
   SHELL_FREE_NON_NULL(CodeType);\r
   SHELL_FREE_NON_NULL(DataType);\r
@@ -258,10 +257,7 @@ GraphicsOutputProtocolDumpInformation(
   HandleParsingHiiInit();\r
 \r
   Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_GOP_DUMP_MAIN), NULL);\r
-  RetVal = AllocateZeroPool (PcdGet16 (PcdShellPrintBufferSize));\r
-  if (Temp == NULL || RetVal == NULL) {\r
-    SHELL_FREE_NON_NULL(Temp);\r
-    SHELL_FREE_NON_NULL(RetVal);\r
+  if (Temp == NULL) {\r
     return NULL;\r
   }\r
 \r
@@ -276,29 +272,29 @@ GraphicsOutputProtocolDumpInformation(
 \r
   if (EFI_ERROR (Status)) {\r
     SHELL_FREE_NON_NULL (Temp);\r
-    SHELL_FREE_NON_NULL (RetVal);\r
     return NULL;\r
   }\r
 \r
   Fmt = ConvertPixelFormat(GraphicsOutput->Mode->Info->PixelFormat);\r
 \r
-  RetVal = CatSPrint(RetVal,\r
-                      Temp,\r
-                      GraphicsOutput->Mode->MaxMode,\r
-                      GraphicsOutput->Mode->Mode,\r
-                      GraphicsOutput->Mode->FrameBufferBase,\r
-                      (UINT64)GraphicsOutput->Mode->FrameBufferSize,\r
-                      (UINT64)GraphicsOutput->Mode->SizeOfInfo,\r
-                      GraphicsOutput->Mode->Info->Version,\r
-                      GraphicsOutput->Mode->Info->HorizontalResolution,\r
-                      GraphicsOutput->Mode->Info->VerticalResolution,\r
-                      Fmt,\r
-                      GraphicsOutput->Mode->Info->PixelsPerScanLine,\r
-                      GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.RedMask,\r
-                      GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.GreenMask,\r
-                      GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.BlueMask\r
-                      );\r
-  \r
+  RetVal = CatSPrint(\r
+             NULL,\r
+             Temp,\r
+             GraphicsOutput->Mode->MaxMode,\r
+             GraphicsOutput->Mode->Mode,\r
+             GraphicsOutput->Mode->FrameBufferBase,\r
+             (UINT64)GraphicsOutput->Mode->FrameBufferSize,\r
+             (UINT64)GraphicsOutput->Mode->SizeOfInfo,\r
+             GraphicsOutput->Mode->Info->Version,\r
+             GraphicsOutput->Mode->Info->HorizontalResolution,\r
+             GraphicsOutput->Mode->Info->VerticalResolution,\r
+             Fmt,\r
+             GraphicsOutput->Mode->Info->PixelsPerScanLine,\r
+             GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.RedMask,\r
+             GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.GreenMask,\r
+             GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.BlueMask\r
+             );\r
+\r
   SHELL_FREE_NON_NULL(Temp);\r
   SHELL_FREE_NON_NULL(Fmt);\r
 \r
@@ -356,7 +352,7 @@ PciRootBridgeIoDumpInformation(
   FreePool(Temp);\r
   RetVal = Temp2;\r
   Temp2 = NULL;\r
\r
+\r
   Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_SEG), NULL);\r
   if (Temp == NULL) {\r
     SHELL_FREE_NON_NULL(RetVal);\r
@@ -376,13 +372,13 @@ PciRootBridgeIoDumpInformation(
     if (Temp == NULL) {\r
       SHELL_FREE_NON_NULL(RetVal);\r
       return NULL;\r
-    }    \r
+    }\r
     Temp2 = CatSPrint(RetVal, Temp, Attributes);\r
     FreePool(Temp);\r
     FreePool(RetVal);\r
     RetVal = Temp2;\r
     Temp2 = NULL;\r
-    \r
+\r
     Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_SUPPORTS), NULL);\r
     if (Temp == NULL) {\r
       SHELL_FREE_NON_NULL(RetVal);\r
@@ -429,7 +425,7 @@ PciRootBridgeIoDumpInformation(
         Temp2 = NULL;\r
       }\r
 \r
-      Temp2 = CatSPrint(RetVal, \r
+      Temp2 = CatSPrint(RetVal,\r
         L"%H%02x    %016lx  %016lx  %02x%N\r\n",\r
         Configuration->SpecificFlag,\r
         Configuration->AddrRangeMin,\r
@@ -618,23 +614,17 @@ AdapterInformationDumpInformation (
   CHAR16                            *GuidStr;\r
   CHAR16                            *TempStr;\r
   CHAR16                            *RetVal;\r
+  CHAR16                            *TempRetVal;\r
   VOID                              *InformationBlock;\r
   UINTN                             InformationBlockSize;\r
-   \r
+\r
   if (!Verbose) {\r
     return (CatSPrint(NULL, L"AdapterInfo"));\r
   }\r
 \r
   InfoTypesBuffer   = NULL;\r
   InformationBlock  = NULL;\r
-  \r
-  //\r
-  // Allocate print buffer to store data\r
-  //\r
-  RetVal = AllocateZeroPool (PcdGet16(PcdShellPrintBufferSize));\r
-  if (RetVal == NULL) {\r
-    return NULL;\r
-  }\r
+\r
 \r
   Status = gBS->OpenProtocol (\r
                   (EFI_HANDLE) (TheHandle),\r
@@ -646,7 +636,6 @@ AdapterInformationDumpInformation (
                   );\r
 \r
   if (EFI_ERROR (Status)) {\r
-    SHELL_FREE_NON_NULL (RetVal);\r
     return NULL;\r
   }\r
 \r
@@ -655,22 +644,23 @@ AdapterInformationDumpInformation (
   //\r
   Status = EfiAdptrInfoProtocol->GetSupportedTypes (\r
                                    EfiAdptrInfoProtocol,\r
-                                   &InfoTypesBuffer, \r
+                                   &InfoTypesBuffer,\r
                                    &InfoTypesBufferCount\r
                                    );\r
+  RetVal = NULL;\r
   if (EFI_ERROR (Status)) {\r
     TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_GET_SUPP_TYPES_FAILED), NULL);\r
     if (TempStr != NULL) {\r
-      RetVal = CatSPrint (RetVal, TempStr, Status);\r
+      RetVal = CatSPrint (NULL, TempStr, Status);\r
     } else {\r
       goto ERROR_EXIT;\r
-    }  \r
+    }\r
   } else {\r
     TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_SUPP_TYPE_HEADER), NULL);\r
     if (TempStr == NULL) {\r
       goto ERROR_EXIT;\r
     }\r
-    RetVal = CatSPrint (RetVal, TempStr);\r
+    RetVal = CatSPrint (NULL, TempStr);\r
     SHELL_FREE_NON_NULL (TempStr);\r
 \r
     for (GuidIndex = 0; GuidIndex < InfoTypesBufferCount; GuidIndex++) {\r
@@ -678,7 +668,9 @@ AdapterInformationDumpInformation (
       if (TempStr == NULL) {\r
         goto ERROR_EXIT;\r
       }\r
-      RetVal = CatSPrint (RetVal, TempStr, (GuidIndex + 1), InfoTypesBuffer[GuidIndex]);\r
+      TempRetVal = CatSPrint (RetVal, TempStr, (GuidIndex + 1), InfoTypesBuffer[GuidIndex]);\r
+      SHELL_FREE_NON_NULL (RetVal);\r
+      RetVal = TempRetVal;\r
       SHELL_FREE_NON_NULL (TempStr);\r
 \r
       TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_GUID_STRING), NULL);\r
@@ -687,32 +679,46 @@ AdapterInformationDumpInformation (
       }\r
 \r
       if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoMediaStateGuid)) {\r
-        RetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoMediaStateGuid");\r
+        TempRetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoMediaStateGuid");\r
+        SHELL_FREE_NON_NULL (RetVal);\r
+        RetVal = TempRetVal;\r
       } else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoNetworkBootGuid)) {\r
-        RetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoNetworkBootGuid");\r
+        TempRetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoNetworkBootGuid");\r
+        SHELL_FREE_NON_NULL (RetVal);\r
+        RetVal = TempRetVal;\r
       } else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoSanMacAddressGuid)) {\r
-        RetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoSanMacAddressGuid");\r
+        TempRetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoSanMacAddressGuid");\r
+        SHELL_FREE_NON_NULL (RetVal);\r
+        RetVal = TempRetVal;\r
+      } else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoUndiIpv6SupportGuid)) {\r
+        TempRetVal = CatSPrint (RetVal, TempStr, L"gEfiAdapterInfoUndiIpv6SupportGuid");\r
+        SHELL_FREE_NON_NULL (RetVal);\r
+        RetVal = TempRetVal;\r
       } else {\r
 \r
         GuidStr = GetStringNameFromGuid (&InfoTypesBuffer[GuidIndex], NULL);\r
-       \r
+\r
         if (GuidStr != NULL) {\r
           if (StrCmp(GuidStr, L"UnknownDevice") == 0) {\r
-            RetVal = CatSPrint (RetVal, TempStr, L"UnknownInfoType");\r
-            \r
+            TempRetVal = CatSPrint (RetVal, TempStr, L"UnknownInfoType");\r
+            SHELL_FREE_NON_NULL (RetVal);\r
+            RetVal = TempRetVal;\r
+\r
             SHELL_FREE_NON_NULL (TempStr);\r
             SHELL_FREE_NON_NULL(GuidStr);\r
             //\r
             // So that we never have to pass this UnknownInfoType to the parsing function "GetInformation" service of AIP\r
             //\r
-            continue; \r
+            continue;\r
           } else {\r
-            RetVal = CatSPrint (RetVal, TempStr, GuidStr);\r
+            TempRetVal = CatSPrint (RetVal, TempStr, GuidStr);\r
+            SHELL_FREE_NON_NULL (RetVal);\r
+            RetVal = TempRetVal;\r
             SHELL_FREE_NON_NULL(GuidStr);\r
           }\r
         }\r
       }\r
-      \r
+\r
       SHELL_FREE_NON_NULL (TempStr);\r
 \r
       Status = EfiAdptrInfoProtocol->GetInformation (\r
@@ -727,57 +733,80 @@ AdapterInformationDumpInformation (
         if (TempStr == NULL) {\r
           goto ERROR_EXIT;\r
         }\r
-        RetVal = CatSPrint (RetVal, TempStr, Status);\r
+        TempRetVal = CatSPrint (RetVal, TempStr, Status);\r
+        SHELL_FREE_NON_NULL (RetVal);\r
+        RetVal = TempRetVal;\r
       } else {\r
         if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoMediaStateGuid)) {\r
           TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_MEDIA_STATE), NULL);\r
           if (TempStr == NULL) {\r
             goto ERROR_EXIT;\r
           }\r
-          RetVal = CatSPrint (\r
-                     RetVal,\r
-                     TempStr,\r
-                     ((EFI_ADAPTER_INFO_MEDIA_STATE *)InformationBlock)->MediaState,\r
-                     ((EFI_ADAPTER_INFO_MEDIA_STATE *)InformationBlock)->MediaState\r
-                     );\r
+          TempRetVal = CatSPrint (\r
+                         RetVal,\r
+                         TempStr,\r
+                         ((EFI_ADAPTER_INFO_MEDIA_STATE *)InformationBlock)->MediaState,\r
+                         ((EFI_ADAPTER_INFO_MEDIA_STATE *)InformationBlock)->MediaState\r
+                         );\r
+          SHELL_FREE_NON_NULL (RetVal);\r
+          RetVal = TempRetVal;\r
         } else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoNetworkBootGuid)) {\r
           TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_NETWORK_BOOT_INFO), NULL);\r
           if (TempStr == NULL) {\r
             goto ERROR_EXIT;\r
           }\r
-          RetVal = CatSPrint (\r
-                     RetVal,\r
-                     TempStr,\r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv4BootCapablity,\r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv6BootCapablity, \r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->FCoeBootCapablity, \r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->OffloadCapability, \r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiMpioCapability, \r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv4Boot, \r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv6Boot,\r
-                     ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->FCoeBoot\r
-                     );\r
-        } else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoSanMacAddressGuid) == TRUE) { \r
+          TempRetVal = CatSPrint (\r
+                         RetVal,\r
+                         TempStr,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv4BootCapablity,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv6BootCapablity,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->FCoeBootCapablity,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->OffloadCapability,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiMpioCapability,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv4Boot,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->iScsiIpv6Boot,\r
+                         ((EFI_ADAPTER_INFO_NETWORK_BOOT *)InformationBlock)->FCoeBoot\r
+                         );\r
+          SHELL_FREE_NON_NULL (RetVal);\r
+          RetVal = TempRetVal;\r
+        } else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoSanMacAddressGuid) == TRUE) {\r
           TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_SAN_MAC_ADDRESS_INFO), NULL);\r
           if (TempStr == NULL) {\r
             goto ERROR_EXIT;\r
           }\r
-          RetVal = CatSPrint (\r
-                     RetVal,\r
-                     TempStr,\r
-                     ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[0], \r
-                     ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[1], \r
-                     ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[2],\r
-                     ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[3], \r
-                     ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[4], \r
-                     ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[5]\r
-                     );   \r
+          TempRetVal = CatSPrint (\r
+                         RetVal,\r
+                         TempStr,\r
+                         ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[0],\r
+                         ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[1],\r
+                         ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[2],\r
+                         ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[3],\r
+                         ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[4],\r
+                         ((EFI_ADAPTER_INFO_SAN_MAC_ADDRESS *)InformationBlock)->SanMacAddress.Addr[5]\r
+                         );\r
+          SHELL_FREE_NON_NULL (RetVal);\r
+          RetVal = TempRetVal;\r
+        } else if (CompareGuid (&InfoTypesBuffer[GuidIndex], &gEfiAdapterInfoUndiIpv6SupportGuid) == TRUE) {\r
+          TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_UNDI_IPV6_INFO), NULL);\r
+          if (TempStr == NULL) {\r
+            goto ERROR_EXIT;\r
+          }\r
+\r
+          TempRetVal = CatSPrint (\r
+                         RetVal,\r
+                         TempStr,\r
+                         ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InformationBlock)->Ipv6Support\r
+                         );   \r
+          SHELL_FREE_NON_NULL (RetVal);\r
+          RetVal = TempRetVal;\r
         } else {\r
           TempStr = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_UNKNOWN_INFO_TYPE), NULL);\r
           if (TempStr == NULL) {\r
             goto ERROR_EXIT;\r
           }\r
-          RetVal = CatSPrint (RetVal, TempStr, &InfoTypesBuffer[GuidIndex]);\r
+          TempRetVal = CatSPrint (RetVal, TempStr, &InfoTypesBuffer[GuidIndex]);\r
+          SHELL_FREE_NON_NULL (RetVal);\r
+          RetVal = TempRetVal;\r
         }\r
       }\r
       SHELL_FREE_NON_NULL (TempStr);\r
@@ -815,6 +844,21 @@ 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
+//\r
+// Deprecated protocols we dont want to link from IntelFrameworkModulePkg\r
+//\r
+#define LOCAL_EFI_ISA_IO_PROTOCOL_GUID \\r
+  { \\r
+  0x7ee2bd44, 0x3da0, 0x11d4, { 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \\r
+  }\r
+#define LOCAL_EFI_ISA_ACPI_PROTOCOL_GUID \\r
+  { \\r
+  0x64a892dc, 0x5561, 0x4536, { 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55 } \\r
+  }\r
+STATIC CONST EFI_GUID EfiIsaIoProtocolGuid = LOCAL_EFI_ISA_IO_PROTOCOL_GUID;\r
+STATIC CONST EFI_GUID EfiIsaAcpiProtocolGuid = LOCAL_EFI_ISA_ACPI_PROTOCOL_GUID;\r
+\r
+\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
@@ -894,6 +938,7 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_IPV4_SB),               &gEfiIp4ServiceBindingProtocolGuid,               NULL},\r
   {STRING_TOKEN(STR_IPV4),                  &gEfiIp4ProtocolGuid,                             NULL},\r
   {STRING_TOKEN(STR_IPV4_CFG),              &gEfiIp4ConfigProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_IPV4_CFG2),             &gEfiIp4Config2ProtocolGuid,                      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
@@ -926,8 +971,12 @@ STATIC CONST GUID_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
-  {STRING_TOKEN(STR_ISA_IO),                &gEfiIsaIoProtocolGuid,                           NULL},\r
-  {STRING_TOKEN(STR_ISA_ACPI),              &gEfiIsaAcpiProtocolGuid,                         NULL},\r
+\r
+//\r
+// these are using local (non-global) definitions to reduce package dependancy.\r
+//\r
+  {STRING_TOKEN(STR_ISA_IO),                (EFI_GUID*)&EfiIsaIoProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_ISA_ACPI),              (EFI_GUID*)&EfiIsaAcpiProtocolGuid,               NULL},\r
 \r
 //\r
 // the ones under this are GUID identified structs, not protocols\r
@@ -991,6 +1040,125 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
 // PI Spec ones\r
 //\r
   {STRING_TOKEN(STR_IDE_CONT_INIT),         &gEfiIdeControllerInitProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_DISK_INFO),             &gEfiDiskInfoProtocolGuid,                        NULL},\r
+\r
+//\r
+// PI Spec 1.0\r
+//\r
+  {STRING_TOKEN(STR_BDS_ARCH),              &gEfiBdsArchProtocolGuid,                         NULL},\r
+  {STRING_TOKEN(STR_CPU_ARCH),              &gEfiCpuArchProtocolGuid,                         NULL},\r
+  {STRING_TOKEN(STR_MET_ARCH),              &gEfiMetronomeArchProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_MON_ARCH),              &gEfiMonotonicCounterArchProtocolGuid,            NULL},\r
+  {STRING_TOKEN(STR_RTC_ARCH),              &gEfiRealTimeClockArchProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_RESET_ARCH),            &gEfiResetArchProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_RT_ARCH),               &gEfiRuntimeArchProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_SEC_ARCH),              &gEfiSecurityArchProtocolGuid,                    NULL},\r
+  {STRING_TOKEN(STR_TIMER_ARCH),            &gEfiTimerArchProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_VAR_ARCH),              &gEfiVariableWriteArchProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_V_ARCH),                &gEfiVariableArchProtocolGuid,                    NULL},\r
+  {STRING_TOKEN(STR_SECP),                  &gEfiSecurityPolicyProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_WDT_ARCH),              &gEfiWatchdogTimerArchProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_SCR),                   &gEfiStatusCodeRuntimeProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_SMB_HC),                &gEfiSmbusHcProtocolGuid,                         NULL},\r
+  {STRING_TOKEN(STR_FV_2),                  &gEfiFirmwareVolume2ProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_FV_BLOCK),              &gEfiFirmwareVolumeBlockProtocolGuid,             NULL},\r
+  {STRING_TOKEN(STR_CAP_ARCH),              &gEfiCapsuleArchProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_MP_SERVICE),            &gEfiMpServiceProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_HBRAP),                 &gEfiPciHostBridgeResourceAllocationProtocolGuid, NULL},\r
+  {STRING_TOKEN(STR_PCIP),                  &gEfiPciPlatformProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_PCIO),                  &gEfiPciOverrideProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_PCIE),                  &gEfiPciEnumerationCompleteProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_IPCID),                 &gEfiIncompatiblePciDeviceSupportProtocolGuid,    NULL},\r
+  {STRING_TOKEN(STR_PCIHPI),                &gEfiPciHotPlugInitProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_PCIHPR),                &gEfiPciHotPlugRequestProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_SMBIOS),                &gEfiSmbiosProtocolGuid,                          NULL},\r
+  {STRING_TOKEN(STR_S3_SAVE),               &gEfiS3SaveStateProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_S3_S_SMM),              &gEfiS3SmmSaveStateProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_RSC),                   &gEfiRscHandlerProtocolGuid,                      NULL},\r
+  {STRING_TOKEN(STR_S_RSC),                 &gEfiSmmRscHandlerProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_ACPI_SDT),              &gEfiAcpiSdtProtocolGuid,                         NULL},\r
+  {STRING_TOKEN(STR_SIO),                   &gEfiSioProtocolGuid,                             NULL},\r
+  {STRING_TOKEN(STR_S_CPU2),                &gEfiSmmCpuIo2ProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_S_BASE2),               &gEfiSmmBase2ProtocolGuid,                        NULL},\r
+  {STRING_TOKEN(STR_S_ACC_2),               &gEfiSmmAccess2ProtocolGuid,                      NULL},\r
+  {STRING_TOKEN(STR_S_CON_2),               &gEfiSmmControl2ProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_S_CONFIG),              &gEfiSmmConfigurationProtocolGuid,                NULL},\r
+  {STRING_TOKEN(STR_S_RTL),                 &gEfiSmmReadyToLockProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_DS_RTL),                &gEfiDxeSmmReadyToLockProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_S_COMM),                &gEfiSmmCommunicationProtocolGuid,                NULL},\r
+  {STRING_TOKEN(STR_S_STAT),                &gEfiSmmStatusCodeProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_S_CPU),                 &gEfiSmmCpuProtocolGuid,                          NULL},\r
+  {STRING_TOKEN(STR_S_PCIRBIO),             &gEfiPciRootBridgeIoProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_S_SWD),                 &gEfiSmmSwDispatch2ProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_S_SXD),                 &gEfiSmmSxDispatch2ProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_S_PTD2),                &gEfiSmmPeriodicTimerDispatch2ProtocolGuid,       NULL},\r
+  {STRING_TOKEN(STR_S_UD2),                 &gEfiSmmUsbDispatch2ProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_S_GD2),                 &gEfiSmmGpiDispatch2ProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_S_SBD2),                &gEfiSmmStandbyButtonDispatch2ProtocolGuid,       NULL},\r
+  {STRING_TOKEN(STR_S_PBD2),                &gEfiSmmPowerButtonDispatch2ProtocolGuid,         NULL},\r
+  {STRING_TOKEN(STR_S_ITD2),                &gEfiSmmIoTrapDispatch2ProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_PCD),                   &gEfiPcdProtocolGuid,                             NULL},\r
+  {STRING_TOKEN(STR_FVB2),                  &gEfiFirmwareVolumeBlock2ProtocolGuid,            NULL},\r
+  {STRING_TOKEN(STR_CPUIO2),                &gEfiCpuIo2ProtocolGuid,                          NULL},\r
+  {STRING_TOKEN(STR_LEGACY_R2),             &gEfiLegacyRegion2ProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_SAL_MIP),               &gEfiSalMcaInitPmiProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_ES_BS),                 &gEfiExtendedSalBootServiceProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_ES_BIO),                &gEfiExtendedSalBaseIoServicesProtocolGuid,       NULL},\r
+  {STRING_TOKEN(STR_ES_STALL),              &gEfiExtendedSalStallServicesProtocolGuid,        NULL},\r
+  {STRING_TOKEN(STR_ES_RTC),                &gEfiExtendedSalRtcServicesProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_ES_VS),                 &gEfiExtendedSalVariableServicesProtocolGuid,     NULL},\r
+  {STRING_TOKEN(STR_ES_MTC),                &gEfiExtendedSalMtcServicesProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_ES_RESET),              &gEfiExtendedSalResetServicesProtocolGuid,        NULL},\r
+  {STRING_TOKEN(STR_ES_SC),                 &gEfiExtendedSalStatusCodeServicesProtocolGuid,   NULL},\r
+  {STRING_TOKEN(STR_ES_FBS),                &gEfiExtendedSalFvBlockServicesProtocolGuid,      NULL},\r
+  {STRING_TOKEN(STR_ES_MP),                 &gEfiExtendedSalMpServicesProtocolGuid,           NULL},\r
+  {STRING_TOKEN(STR_ES_PAL),                &gEfiExtendedSalPalServicesProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_ES_BASE),               &gEfiExtendedSalBaseServicesProtocolGuid,         NULL},\r
+  {STRING_TOKEN(STR_ES_MCA),                &gEfiExtendedSalMcaServicesProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_ES_PCI),                &gEfiExtendedSalPciServicesProtocolGuid,          NULL},\r
+  {STRING_TOKEN(STR_ES_CACHE),              &gEfiExtendedSalCacheServicesProtocolGuid,        NULL},\r
+  {STRING_TOKEN(STR_ES_MCA_LOG),            &gEfiExtendedSalMcaLogServicesProtocolGuid,       NULL},\r
+  {STRING_TOKEN(STR_S2ARCH),                &gEfiSecurity2ArchProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_EODXE),                 &gEfiSmmEndOfDxeProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_ISAHC),                 &gEfiIsaHcProtocolGuid,                           NULL},\r
+  {STRING_TOKEN(STR_ISAHC_B),               &gEfiIsaHcServiceBindingProtocolGuid,             NULL},\r
+  {STRING_TOKEN(STR_SIO_C),                 &gEfiSioControlProtocolGuid,                      NULL},\r
+  {STRING_TOKEN(STR_GET_PCD),               &gEfiGetPcdInfoProtocolGuid,                      NULL},\r
+  {STRING_TOKEN(STR_I2C_M),                 &gEfiI2cMasterProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_I2CIO),                 &gEfiI2cIoProtocolGuid,                           NULL},\r
+  {STRING_TOKEN(STR_I2CEN),                 &gEfiI2cEnumerateProtocolGuid,                    NULL},\r
+  {STRING_TOKEN(STR_I2C_H),                 &gEfiI2cHostProtocolGuid,                         NULL},\r
+  {STRING_TOKEN(STR_I2C_BCM),               &gEfiI2cBusConfigurationManagementProtocolGuid,   NULL},\r
+  {STRING_TOKEN(STR_TREE),                  &gEfiTrEEProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_TCG2),                  &gEfiTcg2ProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_TIMESTAMP),             &gEfiTimestampProtocolGuid,                       NULL},\r
+  {STRING_TOKEN(STR_RNG),                   &gEfiRngProtocolGuid,                             NULL},\r
+  {STRING_TOKEN(STR_NVMEPT),                &gEfiNvmExpressPassThruProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_H2_SB),                 &gEfiHash2ServiceBindingProtocolGuid,             NULL},\r
+  {STRING_TOKEN(STR_HASH2),                 &gEfiHash2ProtocolGuid,                           NULL},\r
+  {STRING_TOKEN(STR_BIO_C),                 &gEfiBlockIoCryptoProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_SCR),                   &gEfiSmartCardReaderProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_SCE),                   &gEfiSmartCardEdgeProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_USB_FIO),               &gEfiUsbFunctionIoProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_BC_HC),                 &gEfiBluetoothHcProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_BC_IO_SB),              &gEfiBluetoothIoServiceBindingProtocolGuid,       NULL},\r
+  {STRING_TOKEN(STR_BC_IO),                 &gEfiBluetoothIoProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_BC_C),                  &gEfiBluetoothConfigProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_REG_EXP),               &gEfiRegularExpressionProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_B_MGR_P),               &gEfiBootManagerPolicyProtocolGuid,               NULL},\r
+  {STRING_TOKEN(STR_CKH),                   &gEfiConfigKeywordHandlerProtocolGuid,            NULL},\r
+  {STRING_TOKEN(STR_WIFI),                  &gEfiWiFiProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_EAP_M),                 &gEfiEapManagement2ProtocolGuid,                  NULL},\r
+  {STRING_TOKEN(STR_EAP_C),                 &gEfiEapConfigurationProtocolGuid,                NULL},\r
+  {STRING_TOKEN(STR_PKCS7),                 &gEfiPkcs7VerifyProtocolGuid,                     NULL},\r
+  {STRING_TOKEN(STR_NET_DNS4_SB),           &gEfiDns4ServiceBindingProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_NET_DNS4),              &gEfiDns4ProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_NET_DNS6_SB),           &gEfiDns6ServiceBindingProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_NET_DNS6),              &gEfiDns6ProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_NET_HTTP_SB),           &gEfiHttpServiceBindingProtocolGuid,              NULL},\r
+  {STRING_TOKEN(STR_NET_HTTP),              &gEfiHttpProtocolGuid,                            NULL},\r
+  {STRING_TOKEN(STR_NET_HTTP_U),            &gEfiHttpUtilitiesProtocolGuid,                   NULL},\r
+  {STRING_TOKEN(STR_REST),                  &gEfiRestProtocolGuid,                            NULL},\r
 \r
 //\r
 // UEFI Shell Spec 2.0\r
@@ -1003,6 +1171,11 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
 //\r
   {STRING_TOKEN(STR_SHELL_DYNAMIC),         &gEfiShellDynamicCommandProtocolGuid,             NULL},\r
 \r
+//\r
+// Misc\r
+//\r
+  {STRING_TOKEN(STR_PCDINFOPROT),           &gGetPcdInfoProtocolGuid,                         NULL},\r
+\r
 //\r
 // terminator\r
 //\r
@@ -1269,9 +1442,9 @@ GetGuidFromStringName(
 \r
 /**\r
   Get best support language for this driver.\r
-  \r
-  First base on the user input language  to search, second base on the current \r
-  platform used language to search, third get the first language from the \r
+\r
+  First base on the user input language  to search, second base on the current\r
+  platform used language to search, third get the first language from the\r
   support language list. The caller need to free the buffer of the best language.\r
 \r
   @param[in] SupportedLanguages      The support languages for this driver.\r
@@ -1291,7 +1464,7 @@ GetBestLanguageForDriver (
   CHAR8                         *LanguageVariable;\r
   CHAR8                         *BestLanguage;\r
 \r
-  LanguageVariable = GetVariable (Iso639Language ? L"Lang" : L"PlatformLang", &gEfiGlobalVariableGuid);\r
+  GetVariable2 (Iso639Language ? L"Lang" : L"PlatformLang", &gEfiGlobalVariableGuid, (VOID**)&LanguageVariable, NULL);\r
 \r
   BestLanguage = GetBestLanguage(\r
                    SupportedLanguages,\r
@@ -1669,7 +1842,7 @@ ParseHandleDatabaseByRelationshipWithType (
 \r
       if (ControllerHandle == NULL) {\r
         //\r
-        // ControllerHandle == NULL and DriverBindingHandle != NULL.  \r
+        // ControllerHandle == NULL and DriverBindingHandle != NULL.\r
         // Return information on all the controller handles that the driver specified by DriverBindingHandle is managing\r
         //\r
         for (OpenInfoIndex = 0; OpenInfoIndex < OpenInfoCount; OpenInfoIndex++) {\r