]> git.proxmox.com Git - mirror_edk2.git/blobdiff - SecurityPkg/VariableAuthenticated/SecureBootConfigDxe/SecureBootConfigDevicePath.c
SecurityPkg: Change use of EFI_D_* to DEBUG_*
[mirror_edk2.git] / SecurityPkg / VariableAuthenticated / SecureBootConfigDxe / SecureBootConfigDevicePath.c
index ae44626594f223abebfa407ebd0d8b9a2d8ddbd7..1e27f7a28ce9b49c038b9df20ba4db40c590423d 100644 (file)
 /** @file\r
   Internal function defines the default device path string for SecureBoot configuration module.\r
 \r
-Copyright (c) 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
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2012 - 2013, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include "SecureBootConfigImpl.h"\r
 \r
-/**\r
-  Concatenates a formatted unicode string to allocated pool.\r
-  The caller must free the resulting buffer.\r
-\r
-  @param[in, out]  Str      Tracks the allocated pool, size in use, and amount of pool allocated.\r
-  @param[in]       Fmt      The format string\r
-  @param[in]       ...      The data will be printed.\r
-\r
-  @return Allocated buffer with the formatted string printed in it.\r
-          The caller must free the allocated buffer.\r
-          The buffer allocation is not packed.\r
-\r
-**/\r
-CHAR16 *\r
-EFIAPI\r
-CatPrint (\r
-  IN OUT POOL_PRINT   *Str,\r
-  IN CHAR16           *Fmt,\r
-  ...\r
-  )\r
-{\r
-  UINT16  *AppendStr;\r
-  VA_LIST Args;\r
-  UINTN   StringSize;\r
-\r
-  AppendStr = AllocateZeroPool (0x1000);\r
-  if (AppendStr == NULL) {\r
-    return Str->Str;\r
-  }\r
-\r
-  VA_START (Args, Fmt);\r
-  UnicodeVSPrint (AppendStr, 0x1000, Fmt, Args);\r
-  VA_END (Args);\r
-  if (NULL == Str->Str) {\r
-    StringSize   = StrSize (AppendStr);\r
-    Str->Str  = AllocateZeroPool (StringSize);\r
-    ASSERT (Str->Str != NULL);\r
-  } else {\r
-    StringSize = StrSize (AppendStr);\r
-    StringSize += (StrSize (Str->Str) - sizeof (UINT16));\r
-\r
-    Str->Str = ReallocatePool (\r
-                StrSize (Str->Str),\r
-                StringSize,\r
-                Str->Str\r
-                );\r
-    ASSERT (Str->Str != NULL);\r
-  }\r
-\r
-  Str->Maxlen = MAX_CHAR * sizeof (UINT16);\r
-  if (StringSize < Str->Maxlen) {\r
-    StrCat (Str->Str, AppendStr);\r
-    Str->Len = StringSize - sizeof (UINT16);\r
-  }\r
-\r
-  FreePool (AppendStr);\r
-  return Str->Str;\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathPci (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  PCI_DEVICE_PATH *Pci;\r
-\r
-  Pci = DevPath;\r
-  CatPrint (Str, L"Pci(%x|%x)", (UINTN) Pci->Device, (UINTN) Pci->Function);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathPccard (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  PCCARD_DEVICE_PATH  *Pccard;\r
-\r
-  Pccard = DevPath;\r
-  CatPrint (Str, L"Pcmcia(Function%x)", (UINTN) Pccard->FunctionNumber);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathMemMap (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  MEMMAP_DEVICE_PATH  *MemMap;\r
-\r
-  MemMap = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"MemMap(%d:%lx-%lx)",\r
-    (UINTN) MemMap->MemoryType,\r
-    MemMap->StartingAddress,\r
-    MemMap->EndingAddress\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathController (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  CONTROLLER_DEVICE_PATH  *Controller;\r
-\r
-  Controller = DevPath;\r
-  CatPrint (Str, L"Ctrl(%d)", (UINTN) Controller->ControllerNumber);\r
-}\r
-\r
-\r
-/**\r
-  Convert Vendor device path to device name.\r
-\r
-  @param[in, out]  Str      The buffer store device name\r
-  @param[in]       DevPath  Pointer to vendor device path\r
-\r
-**/\r
-VOID\r
-DevPathVendor (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  VENDOR_DEVICE_PATH  *Vendor;\r
-  CHAR16              *Type;\r
-  UINTN               DataLength;\r
-  UINTN               Index;\r
-  UINT32              FlowControlMap;\r
-\r
-  UINT16              Info;\r
-\r
-  Vendor  = DevPath;\r
-\r
-  switch (DevicePathType (&Vendor->Header)) {\r
-  case HARDWARE_DEVICE_PATH:\r
-    Type = L"Hw";\r
-    break;\r
-\r
-  case MESSAGING_DEVICE_PATH:\r
-    Type = L"Msg";\r
-    if (CompareGuid (&Vendor->Guid, &gEfiPcAnsiGuid)) {\r
-      CatPrint (Str, L"VenPcAnsi()");\r
-      return ;\r
-    } else if (CompareGuid (&Vendor->Guid, &gEfiVT100Guid)) {\r
-      CatPrint (Str, L"VenVt100()");\r
-      return ;\r
-    } else if (CompareGuid (&Vendor->Guid, &gEfiVT100PlusGuid)) {\r
-      CatPrint (Str, L"VenVt100Plus()");\r
-      return ;\r
-    } else if (CompareGuid (&Vendor->Guid, &gEfiVTUTF8Guid)) {\r
-      CatPrint (Str, L"VenUft8()");\r
-      return ;\r
-    } else if (CompareGuid (&Vendor->Guid, &gEfiUartDevicePathGuid     )) {\r
-      FlowControlMap = (((UART_FLOW_CONTROL_DEVICE_PATH *) Vendor)->FlowControlMap);\r
-      switch (FlowControlMap & 0x00000003) {\r
-      case 0:\r
-        CatPrint (Str, L"UartFlowCtrl(%s)", L"None");\r
-        break;\r
-\r
-      case 1:\r
-        CatPrint (Str, L"UartFlowCtrl(%s)", L"Hardware");\r
-        break;\r
-\r
-      case 2:\r
-        CatPrint (Str, L"UartFlowCtrl(%s)", L"XonXoff");\r
-        break;\r
-\r
-      default:\r
-        break;\r
-      }\r
-\r
-      return ;\r
-\r
-    } else if (CompareGuid (&Vendor->Guid, &gEfiSasDevicePathGuid)) {\r
-      CatPrint (\r
-        Str,\r
-        L"SAS(%lx,%lx,%x,",\r
-        ((SAS_DEVICE_PATH *) Vendor)->SasAddress,\r
-        ((SAS_DEVICE_PATH *) Vendor)->Lun,\r
-        (UINTN) ((SAS_DEVICE_PATH *) Vendor)->RelativeTargetPort\r
-        );\r
-      Info = (((SAS_DEVICE_PATH *) Vendor)->DeviceTopology);\r
-      if ((Info & 0x0f) == 0) {\r
-        CatPrint (Str, L"NoTopology,0,0,0,");\r
-      } else if (((Info & 0x0f) == 1) || ((Info & 0x0f) == 2)) {\r
-        CatPrint (\r
-          Str,\r
-          L"%s,%s,%s,",\r
-          ((Info & (0x1 << 4)) != 0) ? L"SATA" : L"SAS",\r
-          ((Info & (0x1 << 5)) != 0) ? L"External" : L"Internal",\r
-          ((Info & (0x1 << 6)) != 0) ? L"Expanded" : L"Direct"\r
-          );\r
-        if ((Info & 0x0f) == 1) {\r
-          CatPrint (Str, L"0,");\r
-        } else {\r
-          CatPrint (Str, L"%x,", (UINTN) ((Info >> 8) & 0xff));\r
-        }\r
-      } else {\r
-        CatPrint (Str, L"0,0,0,0,");\r
-      }\r
-\r
-      CatPrint (Str, L"%x)", (UINTN) ((SAS_DEVICE_PATH *) Vendor)->Reserved);\r
-      return ;\r
-\r
-    } else if (CompareGuid (&Vendor->Guid, &gEfiDebugPortProtocolGuid)) {\r
-      CatPrint (Str, L"DebugPort()");\r
-      return ;\r
-    }\r
-    break;\r
-\r
-  case MEDIA_DEVICE_PATH:\r
-    Type = L"Media";\r
-    break;\r
-\r
-  default:\r
-    Type = L"?";\r
-    break;\r
-  }\r
-\r
-  CatPrint (Str, L"Ven%s(%g", Type, &Vendor->Guid);\r
-  DataLength = DevicePathNodeLength (&Vendor->Header) - sizeof (VENDOR_DEVICE_PATH);\r
-  if (DataLength > 0) {\r
-    CatPrint (Str, L",");\r
-    for (Index = 0; Index < DataLength; Index++) {\r
-      CatPrint (Str, L"%02x", (UINTN) ((VENDOR_DEVICE_PATH_WITH_DATA *) Vendor)->VendorDefinedData[Index]);\r
-    }\r
-  }\r
-  CatPrint (Str, L")");\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathAcpi (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  ACPI_HID_DEVICE_PATH  *Acpi;\r
-\r
-  Acpi = DevPath;\r
-  if ((Acpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
-    CatPrint (Str, L"Acpi(PNP%04x,%x)", (UINTN)  EISA_ID_TO_NUM (Acpi->HID), (UINTN) Acpi->UID);\r
-  } else {\r
-    CatPrint (Str, L"Acpi(%08x,%x)", (UINTN) Acpi->HID, (UINTN) Acpi->UID);\r
-  }\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathExtendedAcpi (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  ACPI_EXTENDED_HID_DEVICE_PATH   *ExtendedAcpi;\r
-  \r
-  //\r
-  // Index for HID, UID and CID strings, 0 for non-exist\r
-  //\r
-  UINT16                          HIDSTRIdx;\r
-  UINT16                          UIDSTRIdx;\r
-  UINT16                          CIDSTRIdx;\r
-  UINT16                          Index;\r
-  UINT16                          Length;\r
-  UINT16                          Anchor;\r
-  CHAR8                           *AsChar8Array;\r
-\r
-  HIDSTRIdx    = 0;\r
-  UIDSTRIdx    = 0;\r
-  CIDSTRIdx    = 0;\r
-  ExtendedAcpi = DevPath;\r
-  Length       = (UINT16) DevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *) ExtendedAcpi);\r
-\r
-  AsChar8Array = (CHAR8 *) ExtendedAcpi;\r
-\r
-  //\r
-  // find HIDSTR\r
-  //\r
-  Anchor = 16;\r
-  for (Index = Anchor; Index < Length && AsChar8Array[Index] != '\0'; Index++) {\r
-    ;\r
-  }\r
-  if (Index > Anchor) {\r
-    HIDSTRIdx = Anchor;\r
-  }\r
-  //\r
-  // find UIDSTR\r
-  //\r
-  Anchor = (UINT16) (Index + 1);\r
-  for (Index = Anchor; Index < Length && AsChar8Array[Index] != '\0'; Index++) {\r
-    ;\r
-  }\r
-  if (Index > Anchor) {\r
-    UIDSTRIdx = Anchor;\r
-  }\r
-  //\r
-  // find CIDSTR\r
-  //\r
-  Anchor = (UINT16) (Index + 1);\r
-  for (Index = Anchor; Index < Length && AsChar8Array[Index] != '\0'; Index++) {\r
-    ;\r
-  }\r
-  if (Index > Anchor) {\r
-    CIDSTRIdx = Anchor;\r
-  }\r
-\r
-  if (HIDSTRIdx == 0 && CIDSTRIdx == 0 && ExtendedAcpi->UID == 0) {\r
-    CatPrint (Str, L"AcpiExp(");\r
-    if ((ExtendedAcpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
-      CatPrint (Str, L"PNP%04x,", (UINTN) EISA_ID_TO_NUM (ExtendedAcpi->HID));\r
-    } else {\r
-      CatPrint (Str, L"%08x,", (UINTN) ExtendedAcpi->HID);\r
-    }\r
-    if ((ExtendedAcpi->CID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
-      CatPrint (Str, L"PNP%04x,", (UINTN)  EISA_ID_TO_NUM (ExtendedAcpi->CID));\r
-    } else {\r
-      CatPrint (Str, L"%08x,", (UINTN)  ExtendedAcpi->CID);\r
-    }\r
-    if (UIDSTRIdx != 0) {\r
-      CatPrint (Str, L"%a)", AsChar8Array + UIDSTRIdx);\r
-    } else {\r
-      CatPrint (Str, L"\"\")");\r
-    }\r
-  } else {\r
-    CatPrint (Str, L"AcpiEx(");\r
-    if ((ExtendedAcpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
-      CatPrint (Str, L"PNP%04x,", (UINTN)  EISA_ID_TO_NUM (ExtendedAcpi->HID));\r
-    } else {\r
-      CatPrint (Str, L"%08x,", (UINTN) ExtendedAcpi->HID);\r
-    }\r
-    if ((ExtendedAcpi->CID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {\r
-      CatPrint (Str, L"PNP%04x,", (UINTN) EISA_ID_TO_NUM (ExtendedAcpi->CID));\r
-    } else {\r
-      CatPrint (Str, L"%08x,", (UINTN) ExtendedAcpi->CID);\r
-    }\r
-    CatPrint (Str, L"%x,", (UINTN) ExtendedAcpi->UID);\r
-\r
-    if (HIDSTRIdx != 0) {\r
-      CatPrint (Str, L"%a,", AsChar8Array + HIDSTRIdx);\r
-    } else {\r
-      CatPrint (Str, L"\"\",");\r
-    }\r
-    if (CIDSTRIdx != 0) {\r
-      CatPrint (Str, L"%a,", AsChar8Array + CIDSTRIdx);\r
-    } else {\r
-      CatPrint (Str, L"\"\",");\r
-    }\r
-    if (UIDSTRIdx != 0) {\r
-      CatPrint (Str, L"%a)", AsChar8Array + UIDSTRIdx);\r
-    } else {\r
-      CatPrint (Str, L"\"\")");\r
-    }\r
-  }\r
-\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathAdrAcpi (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  ACPI_ADR_DEVICE_PATH    *AcpiAdr;\r
-  UINT16                  Index;\r
-  UINT16                  Length;\r
-  UINT16                  AdditionalAdrCount;\r
-\r
-  AcpiAdr            = DevPath;\r
-  Length             = (UINT16) DevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *) AcpiAdr);\r
-  AdditionalAdrCount = (UINT16) ((Length - 8) / 4);\r
-\r
-  CatPrint (Str, L"AcpiAdr(%x", (UINTN) AcpiAdr->ADR);\r
-  for (Index = 0; Index < AdditionalAdrCount; Index++) {\r
-    CatPrint (Str, L",%x", (UINTN) *(UINT32 *) ((UINT8 *) AcpiAdr + 8 + Index * 4));\r
-  }\r
-  CatPrint (Str, L")");\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathAtapi (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  ATAPI_DEVICE_PATH *Atapi;\r
-\r
-  Atapi = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"Ata(%s,%s)",\r
-    (Atapi->PrimarySecondary != 0)? L"Secondary" : L"Primary",\r
-    (Atapi->SlaveMaster != 0)? L"Slave" : L"Master"\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathScsi (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  SCSI_DEVICE_PATH  *Scsi;\r
-\r
-  Scsi = DevPath;\r
-  CatPrint (Str, L"Scsi(Pun%x,Lun%x)", (UINTN) Scsi->Pun, (UINTN) Scsi->Lun);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-  \r
-**/\r
-VOID\r
-DevPathFibre (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  FIBRECHANNEL_DEVICE_PATH  *Fibre;\r
-\r
-  Fibre = DevPath;\r
-  CatPrint (Str, L"Fibre(Wwn%lx,Lun%x)", Fibre->WWN, Fibre->Lun);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPath1394 (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  F1394_DEVICE_PATH *F1394Path;\r
-\r
-  F1394Path = DevPath;\r
-  CatPrint (Str, L"1394(%lx)", &F1394Path->Guid);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-  \r
-**/\r
-VOID\r
-DevPathUsb (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  USB_DEVICE_PATH *Usb;\r
-\r
-  Usb = DevPath;\r
-  CatPrint (Str, L"Usb(%x,%x)", (UINTN) Usb->ParentPortNumber, (UINTN) Usb->InterfaceNumber);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathUsbWWID (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  USB_WWID_DEVICE_PATH  *UsbWWId;\r
-\r
-  UsbWWId = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"UsbWwid(%x,%x,%x,\"WWID\")",\r
-    (UINTN) UsbWWId->VendorId,\r
-    (UINTN) UsbWWId->ProductId,\r
-    (UINTN) UsbWWId->InterfaceNumber\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathLogicalUnit (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicalUnit;\r
-\r
-  LogicalUnit = DevPath;\r
-  CatPrint (Str, L"Unit(%x)", (UINTN) LogicalUnit->Lun);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathUsbClass (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  USB_CLASS_DEVICE_PATH *UsbClass;\r
-\r
-  UsbClass = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"Usb Class(%x,%x,%x,%x,%x)",\r
-    (UINTN) UsbClass->VendorId,\r
-    (UINTN) UsbClass->ProductId,\r
-    (UINTN) UsbClass->DeviceClass,\r
-    (UINTN) UsbClass->DeviceSubClass,\r
-    (UINTN) UsbClass->DeviceProtocol\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathSata (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  SATA_DEVICE_PATH *Sata;\r
-\r
-  Sata = DevPath;\r
-  if ((Sata->PortMultiplierPortNumber & SATA_HBA_DIRECT_CONNECT_FLAG) != 0) {\r
-    CatPrint (\r
-      Str,\r
-      L"Sata(%x,%x)",\r
-      (UINTN) Sata->HBAPortNumber,\r
-      (UINTN) Sata->Lun\r
-      );\r
-  } else {\r
-    CatPrint (\r
-      Str,\r
-      L"Sata(%x,%x,%x)",\r
-      (UINTN) Sata->HBAPortNumber,\r
-      (UINTN) Sata->PortMultiplierPortNumber,\r
-      (UINTN) Sata->Lun\r
-      );\r
-  }\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathI2O (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  I2O_DEVICE_PATH *I2OPath;\r
-\r
-  I2OPath = DevPath;\r
-  CatPrint (Str, L"I2O(%x)", (UINTN) I2OPath->Tid);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathMacAddr (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  MAC_ADDR_DEVICE_PATH  *MACDevPath;\r
-  UINTN                 HwAddressSize;\r
-  UINTN                 Index;\r
-\r
-  MACDevPath           = DevPath;\r
-\r
-  HwAddressSize = sizeof (EFI_MAC_ADDRESS);\r
-  if (MACDevPath->IfType == 0x01 || MACDevPath->IfType == 0x00) {\r
-    HwAddressSize = 6;\r
-  }\r
-\r
-  CatPrint (Str, L"Mac(");\r
-\r
-  for (Index = 0; Index < HwAddressSize; Index++) {\r
-    CatPrint (Str, L"%02x", (UINTN) MACDevPath->MacAddress.Addr[Index]);\r
-  }\r
-\r
-  CatPrint (Str, L")");\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathIPv4 (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  IPv4_DEVICE_PATH  *IPDevPath;\r
-\r
-  IPDevPath = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"IPv4(%d.%d.%d.%d:%d)",\r
-    (UINTN) IPDevPath->RemoteIpAddress.Addr[0],\r
-    (UINTN) IPDevPath->RemoteIpAddress.Addr[1],\r
-    (UINTN) IPDevPath->RemoteIpAddress.Addr[2],\r
-    (UINTN) IPDevPath->RemoteIpAddress.Addr[3],\r
-    (UINTN) IPDevPath->RemotePort\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathIPv6 (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  IPv6_DEVICE_PATH  *IPv6DevPath;\r
-\r
-  IPv6DevPath = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"IPv6(%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x)",\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[0],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[1],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[2],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[3],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[4],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[5],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[6],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[7],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[8],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[9],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[10],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[11],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[12],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[13],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[14],\r
-    (UINTN) IPv6DevPath->RemoteIpAddress.Addr[15]\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathInfiniBand (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  INFINIBAND_DEVICE_PATH  *InfiniBand;\r
-\r
-  InfiniBand = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"Infiniband(%x,%g,%lx,%lx,%lx)",\r
-    (UINTN) InfiniBand->ResourceFlags,\r
-    InfiniBand->PortGid,\r
-    InfiniBand->ServiceId,\r
-    InfiniBand->TargetPortId,\r
-    InfiniBand->DeviceId\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathUart (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  UART_DEVICE_PATH  *Uart;\r
-  CHAR8             Parity;\r
-\r
-  Uart = DevPath;\r
-  switch (Uart->Parity) {\r
-  case 0:\r
-    Parity = 'D';\r
-    break;\r
-\r
-  case 1:\r
-    Parity = 'N';\r
-    break;\r
-\r
-  case 2:\r
-    Parity = 'E';\r
-    break;\r
-\r
-  case 3:\r
-    Parity = 'O';\r
-    break;\r
-\r
-  case 4:\r
-    Parity = 'M';\r
-    break;\r
-\r
-  case 5:\r
-    Parity = 'S';\r
-    break;\r
-\r
-  default:\r
-    Parity = 'x';\r
-    break;\r
-  }\r
-\r
-  if (Uart->BaudRate == 0) {\r
-    CatPrint (Str, L"Uart(DEFAULT,%c,", Parity);\r
-  } else {\r
-    CatPrint (Str, L"Uart(%ld,%c,", Uart->BaudRate, Parity);\r
-  }\r
-\r
-  if (Uart->DataBits == 0) {\r
-    CatPrint (Str, L"D,");\r
-  } else {\r
-    CatPrint (Str, L"%d,", (UINTN) Uart->DataBits);\r
-  }\r
-\r
-  switch (Uart->StopBits) {\r
-  case 0:\r
-    CatPrint (Str, L"D)");\r
-    break;\r
-\r
-  case 1:\r
-    CatPrint (Str, L"1)");\r
-    break;\r
-\r
-  case 2:\r
-    CatPrint (Str, L"1.5)");\r
-    break;\r
-\r
-  case 3:\r
-    CatPrint (Str, L"2)");\r
-    break;\r
-\r
-  default:\r
-    CatPrint (Str, L"x)");\r
-    break;\r
-  }\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathiSCSI (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  ISCSI_DEVICE_PATH_WITH_NAME *IScsi;\r
-  UINT16                      Options;\r
-\r
-  IScsi = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"iSCSI(%a,%x,%lx,",\r
-    IScsi->TargetName,\r
-    (UINTN) IScsi->TargetPortalGroupTag,\r
-    IScsi->Lun\r
-    );\r
-\r
-  Options = IScsi->LoginOption;\r
-  CatPrint (Str, L"%s,", (((Options >> 1) & 0x0001) != 0) ? L"CRC32C" : L"None");\r
-  CatPrint (Str, L"%s,", (((Options >> 3) & 0x0001) != 0) ? L"CRC32C" : L"None");\r
-  if (((Options >> 11) & 0x0001) != 0) {\r
-    CatPrint (Str, L"%s,", L"None");\r
-  } else if (((Options >> 12) & 0x0001) != 0) {\r
-    CatPrint (Str, L"%s,", L"CHAP_UNI");\r
-  } else {\r
-    CatPrint (Str, L"%s,", L"CHAP_BI");\r
-\r
-  }\r
-\r
-  CatPrint (Str, L"%s)", (IScsi->NetworkProtocol == 0) ? L"TCP" : L"reserved");\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathVlan (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  VLAN_DEVICE_PATH  *Vlan;\r
-\r
-  Vlan = DevPath;\r
-  CatPrint (Str, L"Vlan(%d)", (UINTN) Vlan->VlanId);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathHardDrive (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  HARDDRIVE_DEVICE_PATH *Hd;\r
-\r
-  Hd = DevPath;\r
-  switch (Hd->SignatureType) {\r
-  case SIGNATURE_TYPE_MBR:\r
-    CatPrint (\r
-      Str,\r
-      L"HD(Part%d,Sig%08x)",\r
-      (UINTN) Hd->PartitionNumber,\r
-      (UINTN) *((UINT32 *) (&(Hd->Signature[0])))\r
-      );\r
-    break;\r
-\r
-  case SIGNATURE_TYPE_GUID:\r
-    CatPrint (\r
-      Str,\r
-      L"HD(Part%d,Sig%g)",\r
-      (UINTN) Hd->PartitionNumber,\r
-      (EFI_GUID *) &(Hd->Signature[0])\r
-      );\r
-    break;\r
-\r
-  default:\r
-    CatPrint (\r
-      Str,\r
-      L"HD(Part%d,MBRType=%02x,SigType=%02x)",\r
-      (UINTN) Hd->PartitionNumber,\r
-      (UINTN) Hd->MBRType,\r
-      (UINTN) Hd->SignatureType\r
-      );\r
-    break;\r
-  }\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathCDROM (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  CDROM_DEVICE_PATH *Cd;\r
-\r
-  Cd = DevPath;\r
-  CatPrint (Str, L"CDROM(Entry%x)", (UINTN) Cd->BootEntry);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathFilePath (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  FILEPATH_DEVICE_PATH  *Fp;\r
-\r
-  Fp = DevPath;\r
-  CatPrint (Str, L"%s", Fp->PathName);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathMediaProtocol (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  MEDIA_PROTOCOL_DEVICE_PATH  *MediaProt;\r
-\r
-  MediaProt = DevPath;\r
-  CatPrint (Str, L"Media(%g)", &MediaProt->Protocol);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathFvFilePath (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvFilePath;\r
-\r
-  FvFilePath = DevPath;\r
-  CatPrint (Str, L"%g", &FvFilePath->FvFileName);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathRelativeOffsetRange (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;\r
-\r
-  Offset = DevPath;\r
-  CatPrint (\r
-    Str,\r
-    L"Offset(%lx,%lx)",\r
-    Offset->StartingOffset,\r
-    Offset->EndingOffset\r
-    );\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathBssBss (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  BBS_BBS_DEVICE_PATH *Bbs;\r
-  CHAR16              *Type;\r
-\r
-  Bbs = DevPath;\r
-  switch (Bbs->DeviceType) {\r
-  case BBS_TYPE_FLOPPY:\r
-    Type = L"Floppy";\r
-    break;\r
-\r
-  case BBS_TYPE_HARDDRIVE:\r
-    Type = L"Harddrive";\r
-    break;\r
-\r
-  case BBS_TYPE_CDROM:\r
-    Type = L"CDROM";\r
-    break;\r
-\r
-  case BBS_TYPE_PCMCIA:\r
-    Type = L"PCMCIA";\r
-    break;\r
-\r
-  case BBS_TYPE_USB:\r
-    Type = L"Usb";\r
-    break;\r
-\r
-  case BBS_TYPE_EMBEDDED_NETWORK:\r
-    Type = L"Net";\r
-    break;\r
-\r
-  case BBS_TYPE_BEV:\r
-    Type = L"BEV";\r
-    break;\r
-\r
-  default:\r
-    Type = L"?";\r
-    break;\r
-  }\r
-  CatPrint (Str, L"Legacy-%s", Type);\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathEndInstance (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  CatPrint (Str, L",");\r
-}\r
-\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathNodeUnknown (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  CatPrint (Str, L"?");\r
-}\r
-/**\r
-  Convert Device Path to a Unicode string for printing.\r
-\r
-  @param[in, out] Str           The buffer holding the output string.\r
-                                This buffer contains the length of the string and \r
-                                the maixmum length reserved for the string buffer.\r
-  @param[in]      DevPath       The device path.\r
-\r
-**/\r
-VOID\r
-DevPathFvPath (\r
-  IN OUT POOL_PRINT       *Str,\r
-  IN VOID                 *DevPath\r
-  )\r
-{\r
-  MEDIA_FW_VOL_DEVICE_PATH *FvPath;\r
-\r
-  FvPath = DevPath;\r
-  CatPrint (Str, L"Fv(%g)", &FvPath->FvName);\r
-}\r
-\r
-DEVICE_PATH_STRING_TABLE  DevPathTable[] = {\r
-  {\r
-    HARDWARE_DEVICE_PATH,\r
-    HW_PCI_DP,\r
-    DevPathPci\r
-  },\r
-  {\r
-    HARDWARE_DEVICE_PATH,\r
-    HW_PCCARD_DP,\r
-    DevPathPccard\r
-  },\r
-  {\r
-    HARDWARE_DEVICE_PATH,\r
-    HW_MEMMAP_DP,\r
-    DevPathMemMap\r
-  },\r
-  {\r
-    HARDWARE_DEVICE_PATH,\r
-    HW_VENDOR_DP,\r
-    DevPathVendor\r
-  },\r
-  {\r
-    HARDWARE_DEVICE_PATH,\r
-    HW_CONTROLLER_DP,\r
-    DevPathController\r
-  },\r
-  {\r
-    ACPI_DEVICE_PATH,\r
-    ACPI_DP,\r
-    DevPathAcpi\r
-  },\r
-  {\r
-    ACPI_DEVICE_PATH,\r
-    ACPI_EXTENDED_DP,\r
-    DevPathExtendedAcpi\r
-  },\r
-  {\r
-    ACPI_DEVICE_PATH,\r
-    ACPI_ADR_DP,\r
-    DevPathAdrAcpi\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_ATAPI_DP,\r
-    DevPathAtapi\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_SCSI_DP,\r
-    DevPathScsi\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_FIBRECHANNEL_DP,\r
-    DevPathFibre\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_1394_DP,\r
-    DevPath1394\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_USB_DP,\r
-    DevPathUsb\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_USB_WWID_DP,\r
-    DevPathUsbWWID\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_DEVICE_LOGICAL_UNIT_DP,\r
-    DevPathLogicalUnit\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_USB_CLASS_DP,\r
-    DevPathUsbClass\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_SATA_DP,\r
-    DevPathSata\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_I2O_DP,\r
-    DevPathI2O\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_MAC_ADDR_DP,\r
-    DevPathMacAddr\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_IPv4_DP,\r
-    DevPathIPv4\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_IPv6_DP,\r
-    DevPathIPv6\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_INFINIBAND_DP,\r
-    DevPathInfiniBand\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_UART_DP,\r
-    DevPathUart\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_VENDOR_DP,\r
-    DevPathVendor\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_ISCSI_DP,\r
-    DevPathiSCSI\r
-  },\r
-  {\r
-    MESSAGING_DEVICE_PATH,\r
-    MSG_VLAN_DP,\r
-    DevPathVlan\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_HARDDRIVE_DP,\r
-    DevPathHardDrive\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_CDROM_DP,\r
-    DevPathCDROM\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_VENDOR_DP,\r
-    DevPathVendor\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_FILEPATH_DP,\r
-    DevPathFilePath\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_PROTOCOL_DP,\r
-    DevPathMediaProtocol\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_PIWG_FW_VOL_DP,\r
-    DevPathFvPath,\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_PIWG_FW_FILE_DP,\r
-    DevPathFvFilePath\r
-  },\r
-  {\r
-    MEDIA_DEVICE_PATH,\r
-    MEDIA_RELATIVE_OFFSET_RANGE_DP,\r
-    DevPathRelativeOffsetRange,\r
-  },\r
-  {\r
-    BBS_DEVICE_PATH,\r
-    BBS_BBS_DP,\r
-    DevPathBssBss\r
-  },\r
-  {\r
-    END_DEVICE_PATH_TYPE,\r
-    END_INSTANCE_DEVICE_PATH_SUBTYPE,\r
-    DevPathEndInstance\r
-  },\r
-  {\r
-    0,\r
-    0,\r
-    NULL\r
-  }\r
-};\r
-\r
 \r
 /**\r
   This function converts an input device structure to a Unicode string.\r
@@ -1454,84 +23,10 @@ DevicePathToStr (
   IN EFI_DEVICE_PATH_PROTOCOL     *DevPath\r
   )\r
 {\r
-  POOL_PRINT                Str;\r
-  EFI_DEVICE_PATH_PROTOCOL  *DevPathNode;\r
-  VOID (*DumpNode) (POOL_PRINT *, VOID *);\r
-\r
-  UINTN Index;\r
-  UINTN NewSize;\r
-\r
-  EFI_STATUS                       Status;\r
-  CHAR16                           *ToText;\r
-  EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *DevPathToText;\r
-\r
-  ZeroMem (&Str, sizeof (Str));\r
-\r
-  if (DevPath == NULL) {\r
-    goto Done;\r
-  }\r
-\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiDevicePathToTextProtocolGuid,\r
-                  NULL,\r
-                  (VOID **) &DevPathToText\r
-                  );\r
-  if (!EFI_ERROR (Status)) {\r
-    ToText = DevPathToText->ConvertDevicePathToText (\r
-                              DevPath,\r
-                              FALSE,\r
-                              TRUE\r
-                              );\r
-    ASSERT (ToText != NULL);\r
-    return ToText;\r
-  }\r
-\r
-  //\r
-  // Process each device path node\r
-  //\r
-  DevPathNode = DevPath;\r
-  while (!IsDevicePathEnd (DevPathNode)) {\r
-    //\r
-    // Find the handler to dump this device path node\r
-    //\r
-    DumpNode = NULL;\r
-    for (Index = 0; DevPathTable[Index].Function != NULL; Index += 1) {\r
-\r
-      if (DevicePathType (DevPathNode) == DevPathTable[Index].Type &&\r
-          DevicePathSubType (DevPathNode) == DevPathTable[Index].SubType\r
-          ) {\r
-        DumpNode = DevPathTable[Index].Function;\r
-        break;\r
-      }\r
-    }\r
-    //\r
-    // If not found, use a generic function\r
-    //\r
-    if (!DumpNode) {\r
-      DumpNode = DevPathNodeUnknown;\r
-    }\r
-    //\r
-    //  Put a path seperator in if needed\r
-    //\r
-    if ((Str.Len != 0) && (DumpNode != DevPathEndInstance)) {\r
-      CatPrint (&Str, L"/");\r
-    }\r
-    //\r
-    // Print this node of the device path\r
-    //\r
-    DumpNode (&Str, DevPathNode);\r
-\r
-    //\r
-    // Next device path node\r
-    //\r
-    DevPathNode = NextDevicePathNode (DevPathNode);\r
-  }\r
-\r
-Done:\r
-  NewSize = (Str.Len + 1) * sizeof (CHAR16);\r
-  Str.Str = ReallocatePool (NewSize, NewSize, Str.Str);\r
-  ASSERT (Str.Str != NULL);\r
-  Str.Str[Str.Len] = 0;\r
-  return Str.Str;\r
+  return ConvertDevicePathToText (\r
+           DevPath,\r
+           FALSE,\r
+           TRUE\r
+           );\r
 }\r
 \r