4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevicePathToText protocol as defined in the UEFI 2.0 specification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncwhich accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include "DevicePath.h"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Concatenates a formatted unicode string to allocated pool. The caller must
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync free the resulting buffer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str Tracks the allocated pool, size in use, and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync amount of pool allocated.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Fmt The format string
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ... Variable arguments based on the format string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return Allocated buffer with the formatted string printed in it.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The caller must free the allocated buffer. The buffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync allocation is not packed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR16 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CHAR16 *Fmt,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ...
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 *AppendStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN AppendCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VA_LIST Args;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AppendStr = AllocateZeroPool (0x1000);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ASSERT (AppendStr != NULL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VA_START (Args, Fmt);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AppendCount = UnicodeVSPrint (AppendStr, 0x1000, Fmt, Args);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VA_END (Args);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Str->Length + AppendCount * sizeof (CHAR16) > Str->Capacity) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str->Capacity = Str->Length + (AppendCount + 1) * sizeof (CHAR16) * 2;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str->Str = ReallocatePool (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str->Length,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str->Capacity,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str->Str
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ASSERT (Str->Str != NULL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Str->Length == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync StrCpy (Str->Str, AppendStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str->Length = (AppendCount + 1) * sizeof (CHAR16);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync StrCat (Str->Str, AppendStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str->Length += AppendCount * sizeof (CHAR16);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FreePool (AppendStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Str->Str;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a PCI device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextPci (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PCI_DEVICE_PATH *Pci;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Pci = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Pci(0x%x,0x%x)", Pci->Device, Pci->Function);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a PC Card device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextPccard (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PCCARD_DEVICE_PATH *Pccard;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Pccard = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"PcCard(0x%x)", Pccard->FunctionNumber);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Memory Map device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextMemMap (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MEMMAP_DEVICE_PATH *MemMap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MemMap = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"MemoryMapped(0x%x,0x%lx,0x%lx)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MemMap->MemoryType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MemMap->StartingAddress,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MemMap->EndingAddress
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Vendor device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextVendor (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VENDOR_DEVICE_PATH *Vendor;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *Type;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN DataLength;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT32 FlowControlMap;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Info;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Vendor = (VENDOR_DEVICE_PATH *) DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (DevicePathType (&Vendor->Header)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case HARDWARE_DEVICE_PATH:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"Hw";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case MESSAGING_DEVICE_PATH:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"Msg";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (AllowShortcuts) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (CompareGuid (&Vendor->Guid, &gEfiPcAnsiGuid)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"VenPcAnsi()");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (CompareGuid (&Vendor->Guid, &gEfiVT100Guid)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"VenVt100()");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (CompareGuid (&Vendor->Guid, &gEfiVT100PlusGuid)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"VenVt100Plus()");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (CompareGuid (&Vendor->Guid, &gEfiVTUTF8Guid)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"VenUft8()");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (CompareGuid (&Vendor->Guid, &gEfiUartDevicePathGuid)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FlowControlMap = (((UART_FLOW_CONTROL_DEVICE_PATH *) Vendor)->FlowControlMap);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (FlowControlMap & 0x00000003) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UartFlowCtrl(%s)", L"None");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 1:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UartFlowCtrl(%s)", L"Hardware");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 2:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UartFlowCtrl(%s)", L"XonXoff");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (CompareGuid (&Vendor->Guid, &gEfiSasDevicePathGuid)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"SAS(0x%lx,0x%lx,0x%x,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((SAS_DEVICE_PATH *) Vendor)->SasAddress,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((SAS_DEVICE_PATH *) Vendor)->Lun,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((SAS_DEVICE_PATH *) Vendor)->RelativeTargetPort
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Info = (((SAS_DEVICE_PATH *) Vendor)->DeviceTopology);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((Info & 0x0f) == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"NoTopology,0,0,0,");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (((Info & 0x0f) == 1) || ((Info & 0x0f) == 2)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"%s,%s,%s,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((Info & (0x1 << 4)) != 0) ? L"SATA" : L"SAS",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((Info & (0x1 << 5)) != 0) ? L"External" : L"Internal",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((Info & (0x1 << 6)) != 0) ? L"Expanded" : L"Direct"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((Info & 0x0f) == 1) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0,");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0x%x,", (Info >> 8) & 0xff);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0,0,0,0,");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0x%x)", ((SAS_DEVICE_PATH *) Vendor)->Reserved);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (CompareGuid (&Vendor->Guid, &gEfiDebugPortProtocolGuid)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"DebugPort()");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case MEDIA_DEVICE_PATH:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"Media";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"?";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DataLength = DevicePathNodeLength (&Vendor->Header) - sizeof (VENDOR_DEVICE_PATH);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Ven%s(%g", Type, &Vendor->Guid);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DataLength != 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < DataLength; Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%02x", ((VENDOR_DEVICE_PATH_WITH_DATA *) Vendor)->VendorDefinedData[Index]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L")");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Controller device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextController (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CONTROLLER_DEVICE_PATH *Controller;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Controller = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"Ctrl(0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Controller->ControllerNumber
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a ACPI device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextAcpi (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ACPI_HID_DEVICE_PATH *Acpi;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Acpi = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((Acpi->HID & PNP_EISA_ID_MASK) == PNP_EISA_ID_CONST) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (EISA_ID_TO_NUM (Acpi->HID)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x0a03:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"PciRoot(0x%x)", Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x0a08:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"PcieRoot(0x%x)", Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x0604:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Floppy(0x%x)", Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x0301:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Keyboard(0x%x)", Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x0501:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Serial(0x%x)", Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0x0401:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"ParallelPort(0x%x)", Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Acpi(PNP%04x,0x%x)", EISA_ID_TO_NUM (Acpi->HID), Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Acpi(0x%08x,0x%x)", Acpi->HID, Acpi->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts EISA identification to string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param EisaId The input EISA identification.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Text A pointer to the output string.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEisaIdToText (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT32 EisaId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT CHAR16 *Text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 PnpIdStr[17];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //UnicodeSPrint ("%X", 0x0a03) => "0000000000000A03"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UnicodeSPrint (PnpIdStr, 17 * 2, L"%16X", EisaId >> 16);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UnicodeSPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Text,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync sizeof (CHAR16) + sizeof (CHAR16) + sizeof (CHAR16) + sizeof (PnpIdStr),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"%c%c%c%s",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync '@' + ((EisaId >> 10) & 0x1f),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync '@' + ((EisaId >> 5) & 0x1f),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync '@' + ((EisaId >> 0) & 0x1f),
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PnpIdStr + (16 - 4)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a ACPI extended HID device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextAcpiEx (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ACPI_EXTENDED_HID_DEVICE_PATH *AcpiEx;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *HIDStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *UIDStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 *CIDStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 HIDText[11];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 CIDText[11];
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AcpiEx = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HIDStr = (CHAR8 *) (((UINT8 *) AcpiEx) + sizeof (ACPI_EXTENDED_HID_DEVICE_PATH));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UIDStr = HIDStr + AsciiStrLen (HIDStr) + 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CIDStr = UIDStr + AsciiStrLen (UIDStr) + 1;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EisaIdToText (AcpiEx->HID, HIDText);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EisaIdToText (AcpiEx->CID, CIDText);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((*HIDStr == '\0') && (*CIDStr == '\0') && (AcpiEx->UID == 0)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // use AcpiExp()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"AcpiExp(%s,%s,%a)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HIDText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CIDText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UIDStr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (AllowShortcuts) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // display only
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (AcpiEx->HID == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"AcpiEx(%a,", HIDStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"AcpiEx(%s,", HIDText);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (AcpiEx->UID == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%a,", UIDStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0x%x,", AcpiEx->UID);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (AcpiEx->CID == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%a)", CIDStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s)", CIDText);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"AcpiEx(%s,%s,0x%x,%a,%a,%a)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HIDText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CIDText,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AcpiEx->UID,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HIDStr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CIDStr,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UIDStr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a ACPI address device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextAcpiAdr (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ACPI_ADR_DEVICE_PATH *AcpiAdr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 AdditionalAdrCount;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AcpiAdr = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Length = (UINT16) DevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *) AcpiAdr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AdditionalAdrCount = (UINT16) ((Length - 8) / 4);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"AcpiAdr(0x%x", AcpiAdr->ADR);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < AdditionalAdrCount; Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",0x%x", *(UINT32 *) ((UINT8 *) AcpiAdr + 8 + Index * 4));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L")");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a ATAPI device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextAtapi (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ATAPI_DEVICE_PATH *Atapi;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Atapi = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DisplayOnly) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Ata(0x%x)", Atapi->Lun);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"Ata(%s,%s,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Atapi->PrimarySecondary == 1) ? L"Secondary" : L"Primary",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (Atapi->SlaveMaster == 1) ? L"Slave" : L"Master",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Atapi->Lun
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a SCSI device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextScsi (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SCSI_DEVICE_PATH *Scsi;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Scsi = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Scsi(0x%x,0x%x)", Scsi->Pun, Scsi->Lun);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Fibre device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextFibre (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FIBRECHANNEL_DEVICE_PATH *Fibre;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Fibre = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Fibre(0x%lx,0x%lx)", Fibre->WWN, Fibre->Lun);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a FibreEx device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextFibreEx (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FIBRECHANNELEX_DEVICE_PATH *FibreEx;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FibreEx = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"FibreEx(0x");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < sizeof (FibreEx->WWN) / sizeof (FibreEx->WWN[0]); Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%02x", FibreEx->WWN[Index]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",0x");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < sizeof (FibreEx->Lun) / sizeof (FibreEx->Lun[0]); Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%02x", FibreEx->Lun[Index]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L")");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Sas Ex device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextSasEx (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SASEX_DEVICE_PATH *SasEx;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SasEx = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"SasEx(0x");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < sizeof (SasEx->SasAddress) / sizeof (SasEx->SasAddress[0]); Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%02x", SasEx->SasAddress[Index]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",0x");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < sizeof (SasEx->Lun) / sizeof (SasEx->Lun[0]); Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%02x", SasEx->Lun[Index]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",0x%x,", SasEx->RelativeTargetPort);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((SasEx->DeviceTopology & 0x0f) == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"NoTopology,0,0,0");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (((SasEx->DeviceTopology & 0x0f) == 1) || ((SasEx->DeviceTopology & 0x0f) == 2)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"%s,%s,%s,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((SasEx->DeviceTopology & (0x1 << 4)) != 0) ? L"SATA" : L"SAS",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((SasEx->DeviceTopology & (0x1 << 5)) != 0) ? L"External" : L"Internal",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ((SasEx->DeviceTopology & (0x1 << 6)) != 0) ? L"Expanded" : L"Direct"
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((SasEx->DeviceTopology & 0x0f) == 1) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0x%x", (SasEx->DeviceTopology >> 8) & 0xff);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0,0,0,0");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L")");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a 1394 device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToText1394 (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync F1394_DEVICE_PATH *F1394DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync F1394DevPath = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Guid has format of IEEE-EUI64
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"I1394(%016lx)", F1394DevPath->Guid);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a USB device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextUsb (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync USB_DEVICE_PATH *Usb;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Usb = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"USB(0x%x,0x%x)", Usb->ParentPortNumber, Usb->InterfaceNumber);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a USB WWID device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextUsbWWID (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync USB_WWID_DEVICE_PATH *UsbWWId;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *SerialNumberStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *NewStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Length;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbWWId = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SerialNumberStr = (CHAR16 *) ((UINT8 *) UsbWWId + sizeof (USB_WWID_DEVICE_PATH));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Length = (UINT16) ((DevicePathNodeLength ((EFI_DEVICE_PATH_PROTOCOL *) UsbWWId) - sizeof (USB_WWID_DEVICE_PATH)) / sizeof (CHAR16));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (SerialNumberStr [Length - 1] != 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // In case no NULL terminator in SerialNumber, create a new one with NULL terminator
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NewStr = AllocateCopyPool ((Length + 1) * sizeof (CHAR16), SerialNumberStr);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ASSERT (NewStr != NULL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NewStr [Length] = 0;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SerialNumberStr = NewStr;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"UsbWwid(0x%x,0x%x,0x%x,\"%s\")",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbWWId->VendorId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbWWId->ProductId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbWWId->InterfaceNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SerialNumberStr
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Logic Unit device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextLogicalUnit (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicalUnit;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync LogicalUnit = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Unit(0x%x)", LogicalUnit->Lun);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a USB class device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextUsbClass (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync USB_CLASS_DEVICE_PATH *UsbClass;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BOOLEAN IsKnownSubClass;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IsKnownSubClass = TRUE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (UsbClass->DeviceClass) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_AUDIO:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbAudio");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_CDCCONTROL:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbCDCControl");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_HID:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbHID");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_IMAGE:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbImage");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_PRINTER:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbPrinter");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_MASS_STORAGE:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbMassStorage");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_HUB:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbHub");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_CDCDATA:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbCDCData");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_SMART_CARD:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbSmartCard");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_VIDEO:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbVideo");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_DIAGNOSTIC:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbDiagnostic");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case USB_CLASS_WIRELESS:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UsbWireless");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IsKnownSubClass = FALSE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (IsKnownSubClass) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"(0x%x,0x%x,0x%x,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->VendorId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->ProductId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceSubClass,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceProtocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (UsbClass->DeviceClass == USB_CLASS_RESERVE) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (UsbClass->DeviceSubClass == USB_SUBCLASS_FW_UPDATE) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"UsbDeviceFirmwareUpdate(0x%x,0x%x,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->VendorId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->ProductId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceProtocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (UsbClass->DeviceSubClass == USB_SUBCLASS_IRDA_BRIDGE) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"UsbIrdaBridge(0x%x,0x%x,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->VendorId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->ProductId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceProtocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (UsbClass->DeviceSubClass == USB_SUBCLASS_TEST) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"UsbTestAndMeasurement(0x%x,0x%x,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->VendorId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->ProductId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceProtocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"UsbClass(0x%x,0x%x,0x%x,0x%x,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->VendorId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->ProductId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceClass,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceSubClass,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UsbClass->DeviceProtocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a SATA device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextSata (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync SATA_DEVICE_PATH *Sata;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sata = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((Sata->PortMultiplierPortNumber & SATA_HBA_DIRECT_CONNECT_FLAG) != 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"Sata(0x%x,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sata->HBAPortNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sata->Lun
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"Sata(0x%x,0x%x,0x%x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sata->HBAPortNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sata->PortMultiplierPortNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sata->Lun
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a I20 device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextI2O (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync I2O_DEVICE_PATH *I2ODevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync I2ODevPath = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"I2O(0x%x)", I2ODevPath->Tid);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a MAC address device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextMacAddr (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MAC_ADDR_DEVICE_PATH *MacDevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN HwAddressSize;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MacDevPath = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HwAddressSize = sizeof (EFI_MAC_ADDRESS);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (MacDevPath->IfType == 0x01 || MacDevPath->IfType == 0x00) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HwAddressSize = 6;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"MAC(");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; Index < HwAddressSize; Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%02x", MacDevPath->MacAddress.Addr[Index]);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",0x%x)", MacDevPath->IfType);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts network protocol string to its text representation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Protocol The network protocol ID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCatNetworkProtocol (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT16 Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Protocol == RFC_1700_TCP_PROTOCOL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"TCP");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (Protocol == RFC_1700_UDP_PROTOCOL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"UDP");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0x%x", Protocol);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a IPv4 device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextIPv4 (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPv4_DEVICE_PATH *IPDevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DisplayOnly) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"IPv4(%d.%d.%d.%d)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[3]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"IPv4(%d.%d.%d.%d,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[3]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatNetworkProtocol (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L",%s,%d.%d.%d.%d",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->StaticIpAddress ? L"Static" : L"DHCP",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[3]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DevicePathNodeLength (IPDevPath) == sizeof (IPv4_DEVICE_PATH)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L",%d.%d.%d.%d,%d.%d.%d.%d",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[3],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->SubnetMask.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->SubnetMask.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->SubnetMask.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->SubnetMask.Addr[3]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L")");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a IPv6 device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextIPv6 (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPv6_DEVICE_PATH *IPDevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DisplayOnly) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"IPv6(%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[3],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[4],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[5],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[6],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[7],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[8],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[9],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[10],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[11],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[12],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[13],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[14],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[15]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"IPv6(%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[3],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[4],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[5],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[6],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[7],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[8],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[9],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[10],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[11],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[12],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[13],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[14],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->RemoteIpAddress.Addr[15]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatNetworkProtocol (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->Protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (IPDevPath->IpAddressOrigin) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",Static");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 1:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",StatelessAutoConfigure");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",StatefulAutoConfigure");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L",%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[3],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[4],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[5],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[6],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[7],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[8],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[9],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[10],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[11],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[12],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[13],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[14],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->LocalIpAddress.Addr[15]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DevicePathNodeLength (IPDevPath) == sizeof (IPv6_DEVICE_PATH)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L",0x%x,%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->PrefixLength,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[0],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[1],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[2],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[3],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[4],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[5],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[6],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[7],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[8],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[9],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[10],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[11],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[12],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[13],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[14],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IPDevPath->GatewayIpAddress.Addr[15]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L")");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts an Infini Band device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextInfiniBand (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync INFINIBAND_DEVICE_PATH *InfiniBand;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfiniBand = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"Infiniband(0x%x,%g,0x%lx,0x%lx,0x%lx)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfiniBand->ResourceFlags,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfiniBand->PortGid,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfiniBand->ServiceId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfiniBand->TargetPortId,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfiniBand->DeviceId
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a UART device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextUart (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UART_DEVICE_PATH *Uart;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR8 Parity;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Uart = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (Uart->Parity) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parity = 'D';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 1:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parity = 'N';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 2:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parity = 'E';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 3:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parity = 'O';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 4:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parity = 'M';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 5:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parity = 'S';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Parity = 'x';
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Uart->BaudRate == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Uart(DEFAULT,");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Uart(%ld,", Uart->BaudRate);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Uart->DataBits == 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"DEFAULT,");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%d,", Uart->DataBits);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%c,", Parity);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (Uart->StopBits) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 0:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"D)");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 1:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"1)");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 2:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"1.5)");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case 3:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"2)");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"x)");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts an iSCSI device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextiSCSI (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSI_DEVICE_PATH_WITH_NAME *ISCSIDevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINT16 Options;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSIDevPath = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"iSCSI(%a,0x%x,0x%lx,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSIDevPath->TargetName,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSIDevPath->TargetPortalGroupTag,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ISCSIDevPath->Lun
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Options = ISCSIDevPath->LoginOption;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s,", (((Options >> 1) & 0x0001) != 0) ? L"CRC32C" : L"None");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s,", (((Options >> 3) & 0x0001) != 0) ? L"CRC32C" : L"None");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (((Options >> 11) & 0x0001) != 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s,", L"None");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else if (((Options >> 12) & 0x0001) != 0) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s,", L"CHAP_UNI");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s,", L"CHAP_BI");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s)", (ISCSIDevPath->NetworkProtocol == 0) ? L"TCP" : L"reserved");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a VLAN device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextVlan (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VLAN_DEVICE_PATH *Vlan;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Vlan = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Vlan(%d)", Vlan->VlanId);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Hard drive device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextHardDrive (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync HARDDRIVE_DEVICE_PATH *Hd;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Hd = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (Hd->SignatureType) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case SIGNATURE_TYPE_MBR:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"HD(%d,%s,0x%08x,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Hd->PartitionNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"MBR",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync *((UINT32 *) (&(Hd->Signature[0])))
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case SIGNATURE_TYPE_GUID:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"HD(%d,%s,%g,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Hd->PartitionNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"GPT",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (EFI_GUID *) &(Hd->Signature[0])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"HD(%d,%d,0,",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Hd->PartitionNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Hd->SignatureType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"0x%lx,0x%lx)", Hd->PartitionStart, Hd->PartitionSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a CDROM device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextCDROM (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CDROM_DEVICE_PATH *Cd;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Cd = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DisplayOnly) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"CDROM(0x%x)", Cd->BootEntry);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"CDROM(0x%x,0x%lx,0x%lx)", Cd->BootEntry, Cd->PartitionStart, Cd->PartitionSize);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a File device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextFilePath (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FILEPATH_DEVICE_PATH *Fp;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Fp = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"%s", Fp->PathName);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Media protocol device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextMediaProtocol (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MEDIA_PROTOCOL_DEVICE_PATH *MediaProt;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MediaProt = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Media(%g)", &MediaProt->Protocol);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Firmware Volume device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextFv (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MEDIA_FW_VOL_DEVICE_PATH *Fv;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Fv = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"Fv(%g)", &Fv->FvName);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Firmware Volume File device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextFvFile (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvFile;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FvFile = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"FvFile(%g)", &FvFile->FvFileName);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a Relative Offset device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathRelativeOffsetRange (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Offset = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync L"Offset(0x%lx,0x%lx)",
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Offset->StartingOffset,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Offset->EndingOffset
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a BIOS Boot Specification device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextBBS (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync BBS_BBS_DEVICE_PATH *Bbs;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CHAR16 *Type;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Bbs = DevPath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync switch (Bbs->DeviceType) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case BBS_TYPE_FLOPPY:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"Floppy";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case BBS_TYPE_HARDDRIVE:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"HD";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case BBS_TYPE_CDROM:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"CDROM";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case BBS_TYPE_PCMCIA:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"PCMCIA";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case BBS_TYPE_USB:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"USB";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case BBS_TYPE_EMBEDDED_NETWORK:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = L"Network";
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Type = NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Type != NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"BBS(%s,%a", Type, Bbs->String);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"BBS(0x%x,%a", Bbs->DeviceType, Bbs->String);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DisplayOnly) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L")");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",0x%x)", Bbs->StatusFlag);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts an End-of-Device-Path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextEndInstance (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L",");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts an unknown device path structure to its string representative.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Str The string representative of input device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevPath The input device path structure.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncVOID
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncDevPathToTextNodeUnknown (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT POOL_PRINT *Str,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN VOID *DevPath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (Str, L"?");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncGLOBAL_REMOVE_IF_UNREFERENCED const DEVICE_PATH_TO_TEXT_TABLE DevPathToTextTable[] = {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {HARDWARE_DEVICE_PATH, HW_PCI_DP, DevPathToTextPci},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {HARDWARE_DEVICE_PATH, HW_PCCARD_DP, DevPathToTextPccard},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {HARDWARE_DEVICE_PATH, HW_MEMMAP_DP, DevPathToTextMemMap},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {HARDWARE_DEVICE_PATH, HW_VENDOR_DP, DevPathToTextVendor},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {HARDWARE_DEVICE_PATH, HW_CONTROLLER_DP, DevPathToTextController},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {ACPI_DEVICE_PATH, ACPI_DP, DevPathToTextAcpi},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {ACPI_DEVICE_PATH, ACPI_EXTENDED_DP, DevPathToTextAcpiEx},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {ACPI_DEVICE_PATH, ACPI_ADR_DP, DevPathToTextAcpiAdr},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_ATAPI_DP, DevPathToTextAtapi},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_SCSI_DP, DevPathToTextScsi},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_FIBRECHANNEL_DP, DevPathToTextFibre},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_FIBRECHANNELEX_DP, DevPathToTextFibreEx},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_SASEX_DP, DevPathToTextSasEx},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_1394_DP, DevPathToText1394},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_USB_DP, DevPathToTextUsb},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_USB_WWID_DP, DevPathToTextUsbWWID},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_DEVICE_LOGICAL_UNIT_DP, DevPathToTextLogicalUnit},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_USB_CLASS_DP, DevPathToTextUsbClass},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_SATA_DP, DevPathToTextSata},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_I2O_DP, DevPathToTextI2O},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_MAC_ADDR_DP, DevPathToTextMacAddr},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_IPv4_DP, DevPathToTextIPv4},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_IPv6_DP, DevPathToTextIPv6},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_INFINIBAND_DP, DevPathToTextInfiniBand},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_UART_DP, DevPathToTextUart},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_VENDOR_DP, DevPathToTextVendor},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_ISCSI_DP, DevPathToTextiSCSI},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MESSAGING_DEVICE_PATH, MSG_VLAN_DP, DevPathToTextVlan},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_HARDDRIVE_DP, DevPathToTextHardDrive},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_CDROM_DP, DevPathToTextCDROM},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_VENDOR_DP, DevPathToTextVendor},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_PROTOCOL_DP, DevPathToTextMediaProtocol},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_FILEPATH_DP, DevPathToTextFilePath},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_PIWG_FW_VOL_DP, DevPathToTextFv},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_PIWG_FW_FILE_DP, DevPathToTextFvFile},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {MEDIA_DEVICE_PATH, MEDIA_RELATIVE_OFFSET_RANGE_DP, DevPathRelativeOffsetRange},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {BBS_DEVICE_PATH, BBS_BBS_DP, DevPathToTextBBS},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {END_DEVICE_PATH_TYPE, END_INSTANCE_DEVICE_PATH_SUBTYPE, DevPathToTextEndInstance},
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {0, 0, NULL}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a device node to its string representation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DeviceNode A Pointer to the device node to be converted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return A pointer to the allocated text representation of the device node or NULL if DeviceNode
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is NULL or there was insufficient memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR16 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncConvertDeviceNodeToText (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync POOL_PRINT Str;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID (*DumpNode)(POOL_PRINT *, VOID *, BOOLEAN, BOOLEAN);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DeviceNode == NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ZeroMem (&Str, sizeof (Str));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Process the device path node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode = NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; DevPathToTextTable[Index].Function != NULL; Index++) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DevicePathType (DeviceNode) == DevPathToTextTable[Index].Type &&
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevicePathSubType (DeviceNode) == DevPathToTextTable[Index].SubType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode = DevPathToTextTable[Index].Function;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // If not found, use a generic function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DumpNode == NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode = DevPathToTextNodeUnknown;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Print this node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode (&Str, (VOID *) DeviceNode, DisplayOnly, AllowShortcuts);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ASSERT (Str.Str != NULL);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Str.Str;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Converts a device path to its text representation.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DevicePath A Pointer to the device to be converted.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param DisplayOnly If DisplayOnly is TRUE, then the shorter text representation
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the display node is used, where applicable. If DisplayOnly
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is FALSE, then the longer text representation of the display node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync is used.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param AllowShortcuts If AllowShortcuts is TRUE, then the shortcut forms of text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync representation for a device node can be used, where applicable.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return A pointer to the allocated text representation of the device path or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync NULL if DeviceNode is NULL or there was insufficient memory.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCHAR16 *
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFIAPI
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncConvertDevicePathToText (
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN DisplayOnly,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN BOOLEAN AllowShortcuts
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync )
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync POOL_PRINT Str;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DEVICE_PATH_PROTOCOL *DevPathNode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_DEVICE_PATH_PROTOCOL *AlignedDevPathNode;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN Index;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync VOID (*DumpNode) (POOL_PRINT *, VOID *, BOOLEAN, BOOLEAN);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DevicePath == NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ZeroMem (&Str, sizeof (Str));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Process each device path node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevPathNode = (EFI_DEVICE_PATH_PROTOCOL *) DevicePath;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync while (!IsDevicePathEnd (DevPathNode)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Find the handler to dump this device path node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode = NULL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for (Index = 0; DevPathToTextTable[Index].Function != NULL; Index += 1) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (DevicePathType (DevPathNode) == DevPathToTextTable[Index].Type &&
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevicePathSubType (DevPathNode) == DevPathToTextTable[Index].SubType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode = DevPathToTextTable[Index].Function;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync break;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // If not found, use a generic function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (!DumpNode) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode = DevPathToTextNodeUnknown;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Put a path separator in if needed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if ((Str.Length != 0) && (DumpNode != DevPathToTextEndInstance)) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (*(Str.Str + Str.Length / sizeof (CHAR16) - 1) != L',') {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync CatPrint (&Str, L"/");
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync AlignedDevPathNode = AllocateCopyPool (DevicePathNodeLength (DevPathNode), DevPathNode);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Print this node of the device path
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DumpNode (&Str, AlignedDevPathNode, DisplayOnly, AllowShortcuts);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FreePool (AlignedDevPathNode);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync // Next device path node
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync //
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync DevPathNode = NextDevicePathNode (DevPathNode);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if (Str.Str == NULL) {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return AllocateZeroPool (sizeof (CHAR16));
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync } else {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return Str.Str;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync}