]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
ShellPkg/HandleParsingLib: Rename global variables
[mirror_edk2.git] / ShellPkg / Library / UefiHandleParsingLib / UefiHandleParsingLib.c
index efafe6f5350dd61759c3677dff9c0a9056e23b6f..1049dea0c009bdb628e0032f890f0d6ba03a9d20 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 - 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.<BR>\r
   (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
   (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>\r
   This program and the accompanying materials\r
@@ -19,8 +19,8 @@
 \r
 EFI_HANDLE        mHandleParsingHiiHandle = NULL;\r
 HANDLE_INDEX_LIST mHandleList = {{{NULL,NULL},0,0},0};\r
-GUID_INFO_BLOCK   *GuidList;\r
-UINTN             GuidListCount;\r
+GUID_INFO_BLOCK   *mGuidList;\r
+UINTN             mGuidListCount;\r
 /**\r
   Function to translate the EFI_MEMORY_TYPE into a string.\r
 \r
@@ -29,7 +29,6 @@ UINTN             GuidListCount;
   @retval               A string representation of the type allocated from BS Pool.\r
 **/\r
 CHAR16*\r
-EFIAPI\r
 ConvertMemoryType (\r
   IN CONST EFI_MEMORY_TYPE Memory\r
   )\r
@@ -66,7 +65,6 @@ ConvertMemoryType (
   @retval               A string representation of the type allocated from BS Pool.\r
 **/\r
 CHAR16*\r
-EFIAPI\r
 ConvertPixelFormat (\r
   IN CONST EFI_GRAPHICS_PIXEL_FORMAT Fmt\r
   )\r
@@ -100,8 +98,8 @@ HandleParsingLibConstructor (
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  GuidListCount = 0;\r
-  GuidList      = NULL;\r
+  mGuidListCount = 0;\r
+  mGuidList      = NULL;\r
 \r
   //\r
   // Do nothing with mHandleParsingHiiHandle.  Initialize HII as needed.\r
@@ -139,11 +137,11 @@ HandleParsingLibDestructor (
 {\r
   UINTN                 LoopCount;\r
 \r
-  for (LoopCount = 0; GuidList != NULL && LoopCount < GuidListCount; LoopCount++) {\r
-    SHELL_FREE_NON_NULL(GuidList[LoopCount].GuidId);\r
+  for (LoopCount = 0; mGuidList != NULL && LoopCount < mGuidListCount; LoopCount++) {\r
+    SHELL_FREE_NON_NULL(mGuidList[LoopCount].GuidId);\r
   }\r
 \r
-  SHELL_FREE_NON_NULL(GuidList);\r
+  SHELL_FREE_NON_NULL(mGuidList);\r
   if (mHandleParsingHiiHandle != NULL) {\r
     HiiRemovePackages(mHandleParsingHiiHandle);\r
   }\r
@@ -244,15 +242,15 @@ GraphicsOutputProtocolDumpInformation(
   IN CONST BOOLEAN    Verbose\r
   )\r
 {\r
-  EFI_GRAPHICS_OUTPUT_PROTOCOL          *GraphicsOutput;
-  EFI_STATUS                            Status;
-  CHAR16                                *RetVal;
-  CHAR16                                *Temp;
-  CHAR16                                *Fmt;
-  CHAR16                                *TempRetVal;
-  UINTN                                 GopInfoSize;
-  UINT32                                Mode;
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GopInfo;
+  EFI_GRAPHICS_OUTPUT_PROTOCOL          *GraphicsOutput;\r
+  EFI_STATUS                            Status;\r
+  CHAR16                                *RetVal;\r
+  CHAR16                                *Temp;\r
+  CHAR16                                *Fmt;\r
+  CHAR16                                *TempRetVal;\r
+  UINTN                                 GopInfoSize;\r
+  UINT32                                Mode;\r
+  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GopInfo;\r
 \r
   if (!Verbose) {\r
     return (CatSPrint(NULL, L"GraphicsOutput"));\r
@@ -299,41 +297,55 @@ GraphicsOutputProtocolDumpInformation(
              GraphicsOutput->Mode->Info->PixelFormat!=PixelBitMask?0:GraphicsOutput->Mode->Info->PixelInformation.BlueMask\r
              );\r
 \r
-  SHELL_FREE_NON_NULL (Temp);
-  
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_GOP_RES_LIST_MAIN), NULL);
-
-  TempRetVal = CatSPrint (RetVal, Temp);
-  SHELL_FREE_NON_NULL (RetVal);
-  RetVal = TempRetVal;
-  SHELL_FREE_NON_NULL (Temp);
-
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_GOP_RES_LIST_ENTRY), NULL);
-
-  for (Mode = 0; Mode < GraphicsOutput->Mode->MaxMode; Mode++) {
-    Status = GraphicsOutput->QueryMode (
-                               GraphicsOutput,
-                               Mode,
-                               &GopInfoSize,
-                               &GopInfo
-                               );
-    if (EFI_ERROR (Status)) {
-      continue;
-    }
-
-    TempRetVal = CatSPrint (
-                   RetVal,
-                   Temp,
-                   Mode,
-                   GopInfo->HorizontalResolution,
-                   GopInfo->VerticalResolution
-                   );
-
-    SHELL_FREE_NON_NULL (GopInfo);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-  }
-
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_GOP_RES_LIST_MAIN), NULL);\r
+  if (Temp == NULL) {\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    goto EXIT;\r
+  }\r
+\r
+  TempRetVal = CatSPrint (RetVal, Temp);\r
+  SHELL_FREE_NON_NULL (RetVal);\r
+  if (TempRetVal == NULL) {\r
+    goto EXIT;\r
+  }\r
+  RetVal = TempRetVal;\r
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_GOP_RES_LIST_ENTRY), NULL);\r
+  if (Temp == NULL) {\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    goto EXIT;\r
+  }\r
+\r
+\r
+  for (Mode = 0; Mode < GraphicsOutput->Mode->MaxMode; Mode++) {\r
+    Status = GraphicsOutput->QueryMode (\r
+                               GraphicsOutput,\r
+                               Mode,\r
+                               &GopInfoSize,\r
+                               &GopInfo\r
+                               );\r
+    if (EFI_ERROR (Status)) {\r
+      continue;\r
+    }\r
+\r
+    TempRetVal = CatSPrint (\r
+                   RetVal,\r
+                   Temp,\r
+                   Mode,\r
+                   GopInfo->HorizontalResolution,\r
+                   GopInfo->VerticalResolution\r
+                   );\r
+\r
+    SHELL_FREE_NON_NULL (GopInfo);\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    RetVal = TempRetVal;\r
+  }\r
+\r
+\r
+EXIT:\r
   SHELL_FREE_NON_NULL(Temp);\r
   SHELL_FREE_NON_NULL(Fmt);\r
 \r
@@ -341,134 +353,134 @@ GraphicsOutputProtocolDumpInformation(
 }\r
 \r
 /**\r
-  Function to dump information about EDID Discovered Protocol.
-
-  This will allocate the return buffer from boot services pool.
-
-  @param[in] TheHandle      The handle that has LoadedImage installed.
-  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
-
-  @retval A poitner to a string containing the information.
-**/
-CHAR16*
-EFIAPI
-EdidDiscoveredProtocolDumpInformation (
-  IN CONST EFI_HANDLE TheHandle,
-  IN CONST BOOLEAN    Verbose
-  )
-{
-  EFI_EDID_DISCOVERED_PROTOCOL          *EdidDiscovered;
-  EFI_STATUS                            Status;
-  CHAR16                                *RetVal;
-  CHAR16                                *Temp;
-  CHAR16                                *TempRetVal;
-
-  if (!Verbose) {
-    return (CatSPrint(NULL, L"EDIDDiscovered"));
-  }
-
-  Status = gBS->OpenProtocol (
-                  TheHandle,
-                  &gEfiEdidDiscoveredProtocolGuid,
-                  (VOID**)&EdidDiscovered,
-                  NULL,
-                  NULL,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-
-  if (EFI_ERROR (Status)) {
-    return NULL;
-  }
-
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_EDID_DISCOVERED_MAIN), NULL);
-  if (Temp == NULL) {
-    return NULL;
-  }
-
-  RetVal = CatSPrint (NULL, Temp, EdidDiscovered->SizeOfEdid);
-  SHELL_FREE_NON_NULL (Temp);
-
-  if(EdidDiscovered->SizeOfEdid != 0) {
-    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_EDID_DISCOVERED_DATA), NULL);
-    if (Temp == NULL) {
-      SHELL_FREE_NON_NULL (RetVal);
-      return NULL;
-    }
-    TempRetVal = CatSPrint (RetVal, Temp);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-
-    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidDiscovered->SizeOfEdid, EdidDiscovered->Edid);
-    RetVal = TempRetVal;
-  }
-  return RetVal;
-}
-
-/**
-  Function to dump information about EDID Active Protocol.
-
-  This will allocate the return buffer from boot services pool.
-
-  @param[in] TheHandle      The handle that has LoadedImage installed.
-  @param[in] Verbose        TRUE for additional information, FALSE otherwise.
-
-  @retval A poitner to a string containing the information.
-**/
-CHAR16*
-EFIAPI
-EdidActiveProtocolDumpInformation (
-  IN CONST EFI_HANDLE TheHandle,
-  IN CONST BOOLEAN    Verbose
-  )
-{
-  EFI_EDID_ACTIVE_PROTOCOL  *EdidActive;
-  EFI_STATUS                Status;
-  CHAR16                    *RetVal;
-  CHAR16                    *Temp;
-  CHAR16                    *TempRetVal;
-
-  if (!Verbose) {
-    return (CatSPrint(NULL, L"EDIDActive"));
-  }
-
-  Status = gBS->OpenProtocol (
-                  TheHandle,
-                  &gEfiEdidActiveProtocolGuid,
-                  (VOID**)&EdidActive,
-                  NULL,
-                  NULL,
-                  EFI_OPEN_PROTOCOL_GET_PROTOCOL
-                  );
-
-  if (EFI_ERROR (Status)) {
-    return NULL;
-  }
-
-  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_EDID_ACTIVE_MAIN), NULL);
-  if (Temp == NULL) {
-    return NULL;
-  }
-
-  RetVal = CatSPrint (NULL, Temp, EdidActive->SizeOfEdid);
-  SHELL_FREE_NON_NULL (Temp);
-
-  if(EdidActive->SizeOfEdid != 0) {
-    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN(STR_EDID_ACTIVE_DATA), NULL);
-    if (Temp == NULL) {
-      SHELL_FREE_NON_NULL (RetVal);
-      return NULL;
-    }
-    TempRetVal = CatSPrint (RetVal, Temp);
-    SHELL_FREE_NON_NULL (RetVal);
-    RetVal = TempRetVal;
-
-    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidActive->SizeOfEdid, EdidActive->Edid);
-    RetVal = TempRetVal;
-  }
-  return RetVal;
-}
-
-/**
+  Function to dump information about EDID Discovered Protocol.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has LoadedImage installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+EdidDiscoveredProtocolDumpInformation (\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_EDID_DISCOVERED_PROTOCOL          *EdidDiscovered;\r
+  EFI_STATUS                            Status;\r
+  CHAR16                                *RetVal;\r
+  CHAR16                                *Temp;\r
+  CHAR16                                *TempRetVal;\r
+\r
+  if (!Verbose) {\r
+    return (CatSPrint (NULL, L"EDIDDiscovered"));\r
+  }\r
+\r
+  Status = gBS->OpenProtocol (\r
+                  TheHandle,\r
+                  &gEfiEdidDiscoveredProtocolGuid,\r
+                  (VOID**)&EdidDiscovered,\r
+                  NULL,\r
+                  NULL,\r
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                  );\r
+\r
+  if (EFI_ERROR (Status)) {\r
+    return NULL;\r
+  }\r
+\r
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_DISCOVERED_MAIN), NULL);\r
+  if (Temp == NULL) {\r
+    return NULL;\r
+  }\r
+\r
+  RetVal = CatSPrint (NULL, Temp, EdidDiscovered->SizeOfEdid);\r
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
+  if (EdidDiscovered->SizeOfEdid != 0) {\r
+    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_DISCOVERED_DATA), NULL);\r
+    if (Temp == NULL) {\r
+      SHELL_FREE_NON_NULL (RetVal);\r
+      return NULL;\r
+    }\r
+    TempRetVal = CatSPrint (RetVal, Temp);\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    RetVal = TempRetVal;\r
+\r
+    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidDiscovered->SizeOfEdid, EdidDiscovered->Edid);\r
+    RetVal = TempRetVal;\r
+  }\r
+  return RetVal;\r
+}\r
+\r
+/**\r
+  Function to dump information about EDID Active Protocol.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has LoadedImage installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+EdidActiveProtocolDumpInformation (\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_EDID_ACTIVE_PROTOCOL  *EdidActive;\r
+  EFI_STATUS                Status;\r
+  CHAR16                    *RetVal;\r
+  CHAR16                    *Temp;\r
+  CHAR16                    *TempRetVal;\r
+\r
+  if (!Verbose) {\r
+    return (CatSPrint (NULL, L"EDIDActive"));\r
+  }\r
+\r
+  Status = gBS->OpenProtocol (\r
+                  TheHandle,\r
+                  &gEfiEdidActiveProtocolGuid,\r
+                  (VOID**)&EdidActive,\r
+                  NULL,\r
+                  NULL,\r
+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+                  );\r
+\r
+  if (EFI_ERROR (Status)) {\r
+    return NULL;\r
+  }\r
+\r
+  Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_ACTIVE_MAIN), NULL);\r
+  if (Temp == NULL) {\r
+    return NULL;\r
+  }\r
+\r
+  RetVal = CatSPrint (NULL, Temp, EdidActive->SizeOfEdid);\r
+  SHELL_FREE_NON_NULL (Temp);\r
+\r
+  if (EdidActive->SizeOfEdid != 0) {\r
+    Temp = HiiGetString (mHandleParsingHiiHandle, STRING_TOKEN (STR_EDID_ACTIVE_DATA), NULL);\r
+    if (Temp == NULL) {\r
+      SHELL_FREE_NON_NULL (RetVal);\r
+      return NULL;\r
+    }\r
+    TempRetVal = CatSPrint (RetVal, Temp);\r
+    SHELL_FREE_NON_NULL (RetVal);\r
+    RetVal = TempRetVal;\r
+\r
+    TempRetVal = CatSDumpHex (RetVal, 7, 0, EdidActive->SizeOfEdid, EdidActive->Edid);\r
+    RetVal = TempRetVal;\r
+  }\r
+  return RetVal;\r
+}\r
+\r
+/**\r
   Function to dump information about PciRootBridgeIo.\r
 \r
   This will allocate the return buffer from boot services pool.\r
@@ -713,10 +725,47 @@ DriverEfiVersionProtocolDumpInformation(
   ASSERT_EFI_ERROR(Status);\r
 \r
   RetVal = AllocateZeroPool(VersionStringSize);\r
-  ASSERT(RetVal != NULL);\r
-  UnicodeSPrint(RetVal, VersionStringSize, L"0x%08x", DriverEfiVersion->FirmwareVersion);\r
+  if (RetVal != NULL) {\r
+    UnicodeSPrint (RetVal, VersionStringSize, L"0x%08x", DriverEfiVersion->FirmwareVersion);\r
+  }\r
   return (RetVal);\r
 }\r
+/**\r
+  Function to convert device path to string.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] DevPath        Pointer to device path instance.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+  @param[in] Length         Maximum allowed text length of the device path.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+ConvertDevicePathToShortText(\r
+  IN CONST EFI_DEVICE_PATH_PROTOCOL *DevPath,\r
+  IN CONST BOOLEAN                  Verbose,\r
+  IN CONST UINTN                    Length\r
+  )\r
+{\r
+  CHAR16                            *Temp;\r
+  CHAR16                            *Temp2;\r
+  UINTN                             Size;\r
+\r
+  //\r
+  // I cannot decide whether to allow shortcuts here (the second BOOLEAN on the next line)\r
+  //\r
+  Temp = ConvertDevicePathToText(DevPath, TRUE, TRUE);\r
+  if (!Verbose && Temp != NULL && StrLen(Temp) > Length) {\r
+    Temp2 = NULL;\r
+    Size  = 0;\r
+    Temp2 = StrnCatGrow(&Temp2, &Size, L"..", 0);\r
+    Temp2 = StrnCatGrow(&Temp2, &Size, Temp+(StrLen(Temp) - (Length - 2)), 0);\r
+    FreePool(Temp);\r
+    Temp = Temp2;\r
+  }\r
+  return (Temp);\r
+}\r
 \r
 /**\r
   Function to dump information about DevicePath protocol.\r
@@ -726,7 +775,7 @@ DriverEfiVersionProtocolDumpInformation(
   @param[in] TheHandle      The handle that has the protocol installed.\r
   @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
 \r
-  @retval A poitner to a string containing the information.\r
+  @retval A pointer to a string containing the information.\r
 **/\r
 CHAR16*\r
 EFIAPI\r
@@ -737,23 +786,43 @@ DevicePathProtocolDumpInformation(
 {\r
   EFI_DEVICE_PATH_PROTOCOL          *DevPath;\r
   CHAR16                            *Temp;\r
-  CHAR16                            *Temp2;\r
   EFI_STATUS                        Status;\r
   Temp = NULL;\r
 \r
   Status = gBS->OpenProtocol(TheHandle, &gEfiDevicePathProtocolGuid, (VOID**)&DevPath, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
   if (!EFI_ERROR(Status)) {\r
-    //\r
-    // I cannot decide whether to allow shortcuts here (the second BOOLEAN on the next line)\r
-    //\r
-    Temp = ConvertDevicePathToText(DevPath, TRUE, TRUE);\r
+    Temp = ConvertDevicePathToShortText (DevPath, Verbose, 30);\r
     gBS->CloseProtocol(TheHandle, &gEfiDevicePathProtocolGuid, gImageHandle, NULL);\r
   }\r
-  if (!Verbose && Temp != NULL && StrLen(Temp) > 30) {\r
-    Temp2 = NULL;\r
-    Temp2 = StrnCatGrow(&Temp2, NULL, Temp+(StrLen(Temp) - 30), 30);\r
-    FreePool(Temp);\r
-    Temp = Temp2;\r
+  return (Temp);\r
+}\r
+\r
+/**\r
+  Function to dump information about LoadedImageDevicePath protocol.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has the protocol installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A pointer to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+LoadedImageDevicePathProtocolDumpInformation(\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_DEVICE_PATH_PROTOCOL          *DevPath;\r
+  CHAR16                            *Temp;\r
+  EFI_STATUS                        Status;\r
+  Temp = NULL;\r
+\r
+  Status = gBS->OpenProtocol(TheHandle, &gEfiLoadedImageDevicePathProtocolGuid, (VOID**)&DevPath, gImageHandle, NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);\r
+  if (!EFI_ERROR(Status)) {\r
+    Temp = ConvertDevicePathToShortText (DevPath, Verbose, 30);\r
+    gBS->CloseProtocol(TheHandle, &gEfiDevicePathProtocolGuid, gImageHandle, NULL);\r
   }\r
   return (Temp);\r
 }\r
@@ -963,7 +1032,7 @@ AdapterInformationDumpInformation (
                          RetVal,\r
                          TempStr,\r
                          ((EFI_ADAPTER_INFO_UNDI_IPV6_SUPPORT *)InformationBlock)->Ipv6Support\r
-                         );   \r
+                         );\r
           SHELL_FREE_NON_NULL (RetVal);\r
           RetVal = TempRetVal;\r
         } else {\r
@@ -1253,7 +1322,7 @@ FirmwareManagementDumpInformation (
                        TempStr,\r
                        Index,\r
                        ImageInfoV1[Index].ImageIndex,\r
-                       ImageInfoV1[Index].ImageTypeId,\r
+                       &ImageInfoV1[Index].ImageTypeId,\r
                        ImageInfoV1[Index].ImageId,\r
                        ImageInfoV1[Index].ImageIdName,\r
                        ImageInfoV1[Index].Version,\r
@@ -1280,7 +1349,7 @@ FirmwareManagementDumpInformation (
                        TempStr,\r
                        Index,\r
                        ImageInfoV2[Index].ImageIndex,\r
-                       ImageInfoV2[Index].ImageTypeId,\r
+                       &ImageInfoV2[Index].ImageTypeId,\r
                        ImageInfoV2[Index].ImageId,\r
                        ImageInfoV2[Index].ImageIdName,\r
                        ImageInfoV2[Index].Version,\r
@@ -1308,7 +1377,7 @@ FirmwareManagementDumpInformation (
                        TempStr,\r
                        Index,\r
                        ImageInfo[Index].ImageIndex,\r
-                       ImageInfo[Index].ImageTypeId,\r
+                       &ImageInfo[Index].ImageTypeId,\r
                        ImageInfo[Index].ImageId,\r
                        ImageInfo[Index].ImageIdName,\r
                        ImageInfo[Index].Version,\r
@@ -1437,7 +1506,7 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringListNT[] = {
 STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {\r
   {STRING_TOKEN(STR_LOADED_IMAGE),          &gEfiLoadedImageProtocolGuid,                     LoadedImageProtocolDumpInformation},\r
   {STRING_TOKEN(STR_DEVICE_PATH),           &gEfiDevicePathProtocolGuid,                      DevicePathProtocolDumpInformation},\r
-  {STRING_TOKEN(STR_IMAGE_PATH),            &gEfiLoadedImageDevicePathProtocolGuid,           DevicePathProtocolDumpInformation},\r
+  {STRING_TOKEN(STR_IMAGE_PATH),            &gEfiLoadedImageDevicePathProtocolGuid,           LoadedImageDevicePathProtocolDumpInformation},\r
   {STRING_TOKEN(STR_DEVICE_PATH_UTIL),      &gEfiDevicePathUtilitiesProtocolGuid,             NULL},\r
   {STRING_TOKEN(STR_DEVICE_PATH_TXT),       &gEfiDevicePathToTextProtocolGuid,                NULL},\r
   {STRING_TOKEN(STR_DEVICE_PATH_FTXT),      &gEfiDevicePathFromTextProtocolGuid,              NULL},\r
@@ -1461,8 +1530,8 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_ABS_POINTER),           &gEfiAbsolutePointerProtocolGuid,                 NULL},\r
   {STRING_TOKEN(STR_SERIAL_IO),             &gEfiSerialIoProtocolGuid,                        NULL},\r
   {STRING_TOKEN(STR_GRAPHICS_OUTPUT),       &gEfiGraphicsOutputProtocolGuid,                  GraphicsOutputProtocolDumpInformation},\r
-  {STRING_TOKEN(STR_EDID_DISCOVERED),       &gEfiEdidDiscoveredProtocolGuid,                  EdidDiscoveredProtocolDumpInformation},
-  {STRING_TOKEN(STR_EDID_ACTIVE),           &gEfiEdidActiveProtocolGuid,                      EdidActiveProtocolDumpInformation},
+  {STRING_TOKEN(STR_EDID_DISCOVERED),       &gEfiEdidDiscoveredProtocolGuid,                  EdidDiscoveredProtocolDumpInformation},\r
+  {STRING_TOKEN(STR_EDID_ACTIVE),           &gEfiEdidActiveProtocolGuid,                      EdidActiveProtocolDumpInformation},\r
   {STRING_TOKEN(STR_EDID_OVERRIDE),         &gEfiEdidOverrideProtocolGuid,                    NULL},\r
   {STRING_TOKEN(STR_CON_IN),                &gEfiConsoleInDeviceGuid,                         NULL},\r
   {STRING_TOKEN(STR_CON_OUT),               &gEfiConsoleOutDeviceGuid,                        NULL},\r
@@ -1760,7 +1829,6 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   @return                       The node.\r
 **/\r
 CONST GUID_INFO_BLOCK *\r
-EFIAPI\r
 InternalShellGetNodeFromGuid(\r
   IN CONST EFI_GUID* Guid\r
   )\r
@@ -1770,7 +1838,7 @@ InternalShellGetNodeFromGuid(
 \r
   ASSERT(Guid != NULL);\r
 \r
-  for (LoopCount = 0, ListWalker = GuidList; GuidList != NULL && LoopCount < GuidListCount; LoopCount++, ListWalker++) {\r
+  for (LoopCount = 0, ListWalker = mGuidList; mGuidList != NULL && LoopCount < mGuidListCount; LoopCount++, ListWalker++) {\r
     if (CompareGuid(ListWalker->GuidId, Guid)) {\r
       return (ListWalker);\r
     }\r
@@ -1804,7 +1872,6 @@ Function to add a new GUID/Name mapping.
 @retval EFI_INVALID_PARAMETER Guid NameId was invalid\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 InsertNewGuidNameMapping(\r
   IN CONST EFI_GUID           *Guid,\r
   IN CONST EFI_STRING_ID      NameID,\r
@@ -1814,18 +1881,18 @@ InsertNewGuidNameMapping(
   ASSERT(Guid   != NULL);\r
   ASSERT(NameID != 0);\r
 \r
-  GuidList = ReallocatePool(GuidListCount * sizeof(GUID_INFO_BLOCK), GuidListCount+1 * sizeof(GUID_INFO_BLOCK), GuidList);\r
-  if (GuidList == NULL) {\r
-    GuidListCount = 0;\r
+  mGuidList = ReallocatePool(mGuidListCount * sizeof(GUID_INFO_BLOCK), mGuidListCount+1 * sizeof(GUID_INFO_BLOCK), mGuidList);\r
+  if (mGuidList == NULL) {\r
+    mGuidListCount = 0;\r
     return (EFI_OUT_OF_RESOURCES);\r
   }\r
-  GuidListCount++;\r
+  mGuidListCount++;\r
 \r
-  GuidList[GuidListCount - 1].GuidId   = AllocateCopyPool(sizeof(EFI_GUID), Guid);\r
-  GuidList[GuidListCount - 1].StringId = NameID;\r
-  GuidList[GuidListCount - 1].DumpInfo = DumpFunc;\r
+  mGuidList[mGuidListCount - 1].GuidId   = AllocateCopyPool(sizeof(EFI_GUID), Guid);\r
+  mGuidList[mGuidListCount - 1].StringId = NameID;\r
+  mGuidList[mGuidListCount - 1].DumpInfo = DumpFunc;\r
 \r
-  if (GuidList[GuidListCount - 1].GuidId == NULL) {\r
+  if (mGuidList[mGuidListCount - 1].GuidId == NULL) {\r
     return (EFI_OUT_OF_RESOURCES);\r
   }\r
 \r
@@ -1994,7 +2061,7 @@ GetGuidFromStringName(
     }\r
   }\r
 \r
-  for (LoopCount = 0, ListWalker = GuidList; GuidList != NULL && LoopCount < GuidListCount; LoopCount++, ListWalker++) {\r
+  for (LoopCount = 0, ListWalker = mGuidList; mGuidList != NULL && LoopCount < mGuidListCount; LoopCount++, ListWalker++) {\r
     String = HiiGetString(mHandleParsingHiiHandle, ListWalker->StringId, Lang);\r
     if (Name != NULL && String != NULL && StringNoCaseCompare (&Name, &String) == 0) {\r
       *Guid = ListWalker->GuidId;\r
@@ -2119,7 +2186,6 @@ GetStringNameFromHandle(
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
 EFI_STATUS\r
-EFIAPI\r
 InternalShellInitHandleList(\r
   VOID\r
   )\r
@@ -2147,10 +2213,11 @@ InternalShellInitHandleList(
   }\r
   for (mHandleList.NextIndex = 1 ; mHandleList.NextIndex <= HandleCount ; mHandleList.NextIndex++){\r
     ListWalker = AllocateZeroPool(sizeof(HANDLE_LIST));\r
-    ASSERT(ListWalker != NULL);\r
-    ListWalker->TheHandle = HandleBuffer[mHandleList.NextIndex-1];\r
-    ListWalker->TheIndex  = mHandleList.NextIndex;\r
-    InsertTailList(&mHandleList.List.Link,&ListWalker->Link);\r
+    if (ListWalker != NULL) {\r
+      ListWalker->TheHandle = HandleBuffer[mHandleList.NextIndex - 1];\r
+      ListWalker->TheIndex = mHandleList.NextIndex;\r
+      InsertTailList (&mHandleList.List.Link, &ListWalker->Link);\r
+    }\r
   }\r
   FreePool(HandleBuffer);\r
   return (EFI_SUCCESS);\r
@@ -2218,7 +2285,9 @@ ConvertHandleToHandleIndex(
   FreePool (ProtocolBuffer);\r
 \r
   ListWalker = AllocateZeroPool(sizeof(HANDLE_LIST));\r
-  ASSERT(ListWalker != NULL);\r
+  if (ListWalker == NULL) {\r
+    return 0;\r
+  }\r
   ListWalker->TheHandle = TheHandle;\r
   ListWalker->TheIndex  = mHandleList.NextIndex++;\r
   InsertTailList(&mHandleList.List.Link,&ListWalker->Link);\r
@@ -2345,7 +2414,11 @@ ParseHandleDatabaseByRelationshipWithType (
   }\r
 \r
   *HandleType = AllocateZeroPool (*HandleCount * sizeof (UINTN));\r
-  ASSERT(*HandleType != NULL);\r
+  if (*HandleType == NULL) {\r
+    SHELL_FREE_NON_NULL (*HandleBuffer);\r
+    *HandleCount = 0;\r
+    return EFI_OUT_OF_RESOURCES;\r
+  }\r
 \r
   DriverBindingHandleIndex = -1;\r
   for (HandleIndex = 0; HandleIndex < *HandleCount; HandleIndex++) {\r
@@ -2390,10 +2463,6 @@ ParseHandleDatabaseByRelationshipWithType (
         (*HandleType)[HandleIndex] |= (UINTN)HR_COMPONENT_NAME_HANDLE;\r
       } else if (CompareGuid (ProtocolGuidArray[ProtocolIndex], &gEfiDevicePathProtocolGuid)          ) {\r
         (*HandleType)[HandleIndex] |= (UINTN)HR_DEVICE_HANDLE;\r
-      } else {\r
-        DEBUG_CODE_BEGIN();\r
-        ASSERT((*HandleType)[HandleIndex] == (*HandleType)[HandleIndex]);\r
-        DEBUG_CODE_END();\r
       }\r
       //\r
       // Retrieve the list of agents that have opened each protocol\r
@@ -2605,26 +2674,28 @@ ParseHandleDatabaseByRelationship (
         // Allocate a handle buffer for the number of handles that matched the attributes in Mask\r
         //\r
         *MatchingHandleBuffer = AllocateZeroPool ((*MatchingHandleCount +1)* sizeof (EFI_HANDLE));\r
-        ASSERT(*MatchingHandleBuffer != NULL);\r
+        if (*MatchingHandleBuffer == NULL) {\r
+          Status = EFI_OUT_OF_RESOURCES;\r
+        } else {\r
+          for (HandleIndex = 0, *MatchingHandleCount = 0\r
+               ;  HandleIndex < HandleCount\r
+               ;  HandleIndex++\r
+               ) {\r
+            //\r
+            // Fill the allocated buffer with the handles that matched the attributes in Mask\r
+            //\r
+            if ((HandleType[HandleIndex] & Mask) == Mask) {\r
+              (*MatchingHandleBuffer)[(*MatchingHandleCount)++] = HandleBuffer[HandleIndex];\r
+            }\r
+          }\r
 \r
-        for (HandleIndex = 0,*MatchingHandleCount = 0\r
-          ;  HandleIndex < HandleCount\r
-          ;  HandleIndex++\r
-         ){\r
           //\r
-          // Fill the allocated buffer with the handles that matched the attributes in Mask\r
+          // Make the last one NULL\r
           //\r
-          if ((HandleType[HandleIndex] & Mask) == Mask) {\r
-            (*MatchingHandleBuffer)[(*MatchingHandleCount)++] = HandleBuffer[HandleIndex];\r
-          }\r
-        }\r
+          (*MatchingHandleBuffer)[*MatchingHandleCount] = NULL;\r
 \r
-        //\r
-        // Make the last one NULL\r
-        //\r
-        (*MatchingHandleBuffer)[*MatchingHandleCount] = NULL;\r
-\r
-        Status = EFI_SUCCESS;\r
+          Status = EFI_SUCCESS;\r
+        } // *MatchingHandleBuffer == NULL (ELSE)\r
       } // MacthingHandleBuffer == NULL (ELSE)\r
     } // *MatchingHandleCount  == 0 (ELSE)\r
   } // no error on ParseHandleDatabaseByRelationshipWithType\r
@@ -2637,6 +2708,9 @@ ParseHandleDatabaseByRelationship (
     FreePool (HandleType);\r
   }\r
 \r
+  ASSERT ((MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount == 0 && *MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount != 0 && *MatchingHandleBuffer != NULL));\r
   return Status;\r
 }\r
 \r
@@ -2644,7 +2718,7 @@ ParseHandleDatabaseByRelationship (
   Gets handles for any child controllers of the passed in controller.\r
 \r
   @param[in] ControllerHandle       The handle of the "parent controller"\r
-  @param[in] MatchingHandleCount    Pointer to the number of handles in\r
+  @param[out] MatchingHandleCount   Pointer to the number of handles in\r
                                     MatchingHandleBuffer on return.\r
   @param[out] MatchingHandleBuffer  Buffer containing handles on a successful\r
                                     return.\r
@@ -2656,7 +2730,7 @@ EFI_STATUS
 EFIAPI\r
 ParseHandleDatabaseForChildControllers(\r
   IN CONST EFI_HANDLE       ControllerHandle,\r
-  IN UINTN                  *MatchingHandleCount,\r
+  OUT UINTN                 *MatchingHandleCount,\r
   OUT EFI_HANDLE            **MatchingHandleBuffer OPTIONAL\r
   )\r
 {\r
@@ -2723,12 +2797,22 @@ ParseHandleDatabaseForChildControllers(
 \r
   FreePool (DriverBindingHandleBuffer);\r
 \r
+  if (MatchingHandleBuffer == NULL || *MatchingHandleCount == 0) {\r
+    //\r
+    // The caller is not interested in the actual handles, or we've found none.\r
+    //\r
+    FreePool (HandleBufferForReturn);\r
+    HandleBufferForReturn = NULL;\r
+  }\r
+\r
   if (MatchingHandleBuffer != NULL) {\r
     *MatchingHandleBuffer = HandleBufferForReturn;\r
-  } else {\r
-    FreePool(HandleBufferForReturn);\r
   }\r
 \r
+  ASSERT ((MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount == 0 && *MatchingHandleBuffer == NULL) ||\r
+          (*MatchingHandleCount != 0 && *MatchingHandleBuffer != NULL));\r
+\r
   return (EFI_SUCCESS);\r
 }\r
 \r
@@ -2748,7 +2832,6 @@ ParseHandleDatabaseForChildControllers(
   @return                           A pointer to (*DestinationBuffer).\r
 **/\r
 VOID*\r
-EFIAPI\r
 BuffernCatGrow (\r
   IN OUT VOID   **DestinationBuffer,\r
   IN OUT UINTN  *DestinationSize,\r
@@ -2958,7 +3041,7 @@ GetHandleListByProtocolList (
   }\r
 \r
   //\r
-  // No handles were found... \r
+  // No handles were found...\r
   //\r
   if (TotalSize == sizeof(EFI_HANDLE)) {\r
     return (NULL);\r
@@ -2996,13 +3079,3 @@ GetHandleListByProtocolList (
 \r
   return (HandleList);\r
 }\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r