devicepathtotext.c
来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· C语言 代码 · 共 1,553 行 · 第 1/3 页
C
1,553 行
IN BOOLEAN AllowShortcuts
)
{
ATAPI_DEVICE_PATH *Atapi;
Atapi = DevPath;
if (DisplayOnly) {
CatPrint (Str, L"Ata(%x)", Atapi->Lun);
} else {
CatPrint (
Str,
L"Ata(%s,%s,%x)",
Atapi->PrimarySecondary ? L"Secondary" : L"Primary",
Atapi->SlaveMaster ? L"Slave" : L"Master",
Atapi->Lun
);
}
}
VOID
DevPathToTextScsi (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
SCSI_DEVICE_PATH *Scsi;
Scsi = DevPath;
CatPrint (Str, L"Scsi(%x,%x)", Scsi->Pun, Scsi->Lun);
}
VOID
DevPathToTextFibre (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
FIBRECHANNEL_DEVICE_PATH *Fibre;
Fibre = DevPath;
CatPrint (Str, L"Fibre(%lx,%lx)", Fibre->WWN, Fibre->Lun);
}
VOID
DevPathToText1394 (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
F1394_DEVICE_PATH *F1394;
F1394 = DevPath;
CatPrint (Str, L"I1394(%lx)", F1394->Guid);
}
VOID
DevPathToTextUsb (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
USB_DEVICE_PATH *Usb;
Usb = DevPath;
CatPrint (Str, L"USB(%x,%x)", Usb->ParentPortNumber, Usb->InterfaceNumber);
}
VOID
DevPathToTextUsbWWID (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
USB_WWID_DEVICE_PATH *UsbWWId;
UsbWWId = DevPath;
CatPrint (
Str,
L"UsbWwid(%x,%x,%x,\"WWID\")",
UsbWWId->VendorId,
UsbWWId->ProductId,
UsbWWId->InterfaceNumber
);
}
VOID
DevPathToTextLogicalUnit (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicalUnit;
LogicalUnit = DevPath;
CatPrint (Str, L"Unit(%x)", LogicalUnit->Lun);
}
VOID
DevPathToTextUsbClass (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
USB_CLASS_DEVICE_PATH *UsbClass;
UsbClass = DevPath;
if (AllowShortcuts == TRUE) {
switch (UsbClass->DeviceClass) {
case 1:
CatPrint (
Str,
L"UsbAudio(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 2:
CatPrint (
Str,
L"UsbCDCControl(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 3:
CatPrint (
Str,
L"UsbHID(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 6:
CatPrint (
Str,
L"UsbImage(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 7:
CatPrint (
Str,
L"UsbPrinter(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 8:
CatPrint (
Str,
L"UsbMassStorage(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 9:
CatPrint (
Str,
L"UsbHub(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 10:
CatPrint (
Str,
L"UsbCDCData(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 11:
CatPrint (
Str,
L"UsbSmartCard(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 14:
CatPrint (
Str,
L"UsbVideo(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 220:
CatPrint (
Str,
L"UsbDiagnostic(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 224:
CatPrint (
Str,
L"UsbWireless(%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
break;
case 254:
if (UsbClass->DeviceSubClass == 1) {
CatPrint (
Str,
L"UsbDeviceFirmwareUpdate(%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceProtocol
);
} else if (UsbClass->DeviceSubClass == 2) {
CatPrint (
Str,
L"UsbIrdaBridge(%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceProtocol
);
} else if (UsbClass->DeviceSubClass == 3) {
CatPrint (
Str,
L"UsbTestAndMeasurement(%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceProtocol
);
}
break;
default:
break;
}
return ;
}
CatPrint (
Str,
L"UsbClass(%x,%x,%x,%x,%x)",
UsbClass->VendorId,
UsbClass->ProductId,
UsbClass->DeviceClass,
UsbClass->DeviceSubClass,
UsbClass->DeviceProtocol
);
}
VOID
DevPathToTextI2O (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
I2O_DEVICE_PATH *I2O;
I2O = DevPath;
CatPrint (Str, L"I2O(%x)", I2O->Tid);
}
VOID
DevPathToTextMacAddr (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
MAC_ADDR_DEVICE_PATH *MAC;
UINTN HwAddressSize;
UINTN Index;
MAC = DevPath;
HwAddressSize = sizeof (EFI_MAC_ADDRESS);
if (MAC->IfType == 0x01 || MAC->IfType == 0x00) {
HwAddressSize = 6;
}
CatPrint (Str, L"MAC(");
for (Index = 0; Index < HwAddressSize; Index++) {
CatPrint (Str, L"%02x", MAC->MacAddress.Addr[Index]);
}
CatPrint (Str, L",%x)", MAC->IfType);
}
VOID
DevPathToTextIPv4 (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
IPv4_DEVICE_PATH *IP;
IP = DevPath;
if (DisplayOnly == TRUE) {
CatPrint (
Str,
L"IPv4(%d.%d.%d.%d)",
IP->RemoteIpAddress.Addr[0],
IP->RemoteIpAddress.Addr[1],
IP->RemoteIpAddress.Addr[2],
IP->RemoteIpAddress.Addr[3]
);
return ;
}
CatPrint (
Str,
L"IPv4(%d.%d.%d.%d,%s,%s,%d.%d.%d.%d)",
IP->RemoteIpAddress.Addr[0],
IP->RemoteIpAddress.Addr[1],
IP->RemoteIpAddress.Addr[2],
IP->RemoteIpAddress.Addr[3],
IP->Protocol ? L"TCP" : L"UDP",
(IP->StaticIpAddress == TRUE) ? L"Static" : L"DHCP",
IP->LocalIpAddress.Addr[0],
IP->LocalIpAddress.Addr[1],
IP->LocalIpAddress.Addr[2],
IP->LocalIpAddress.Addr[3]
);
}
VOID
DevPathToTextIPv6 (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
IPv6_DEVICE_PATH *IP;
IP = DevPath;
if (DisplayOnly == TRUE) {
CatPrint (
Str,
L"IPv6(%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x)",
IP->RemoteIpAddress.Addr[0],
IP->RemoteIpAddress.Addr[1],
IP->RemoteIpAddress.Addr[2],
IP->RemoteIpAddress.Addr[3],
IP->RemoteIpAddress.Addr[4],
IP->RemoteIpAddress.Addr[5],
IP->RemoteIpAddress.Addr[6],
IP->RemoteIpAddress.Addr[7],
IP->RemoteIpAddress.Addr[8],
IP->RemoteIpAddress.Addr[9],
IP->RemoteIpAddress.Addr[10],
IP->RemoteIpAddress.Addr[11],
IP->RemoteIpAddress.Addr[12],
IP->RemoteIpAddress.Addr[13],
IP->RemoteIpAddress.Addr[14],
IP->RemoteIpAddress.Addr[15]
);
return ;
}
CatPrint (
Str,
L"IPv6(%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x,%s,%s,%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x)",
IP->RemoteIpAddress.Addr[0],
IP->RemoteIpAddress.Addr[1],
IP->RemoteIpAddress.Addr[2],
IP->RemoteIpAddress.Addr[3],
IP->RemoteIpAddress.Addr[4],
IP->RemoteIpAddress.Addr[5],
IP->RemoteIpAddress.Addr[6],
IP->RemoteIpAddress.Addr[7],
IP->RemoteIpAddress.Addr[8],
IP->RemoteIpAddress.Addr[9],
IP->RemoteIpAddress.Addr[10],
IP->RemoteIpAddress.Addr[11],
IP->RemoteIpAddress.Addr[12],
IP->RemoteIpAddress.Addr[13],
IP->RemoteIpAddress.Addr[14],
IP->RemoteIpAddress.Addr[15],
IP->Protocol ? L"TCP" : L"UDP",
(IP->StaticIpAddress == TRUE) ? L"Static" : L"DHCP",
IP->LocalIpAddress.Addr[0],
IP->LocalIpAddress.Addr[1],
IP->LocalIpAddress.Addr[2],
IP->LocalIpAddress.Addr[3],
IP->LocalIpAddress.Addr[4],
IP->LocalIpAddress.Addr[5],
IP->LocalIpAddress.Addr[6],
IP->LocalIpAddress.Addr[7],
IP->LocalIpAddress.Addr[8],
IP->LocalIpAddress.Addr[9],
IP->LocalIpAddress.Addr[10],
IP->LocalIpAddress.Addr[11],
IP->LocalIpAddress.Addr[12],
IP->LocalIpAddress.Addr[13],
IP->LocalIpAddress.Addr[14],
IP->LocalIpAddress.Addr[15]
);
}
VOID
DevPathToTextInfiniBand (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
INFINIBAND_DEVICE_PATH *InfiniBand;
InfiniBand = DevPath;
CatPrint (
Str,
L"Infiniband(%x,%g,%lx,%lx,%lx)",
InfiniBand->ResourceFlags,
InfiniBand->PortGid,
InfiniBand->ServiceId,
InfiniBand->TargetPortId,
InfiniBand->DeviceId
);
}
VOID
DevPathToTextUart (
IN OUT POOL_PRINT *Str,
IN VOID *DevPath,
IN BOOLEAN DisplayOnly,
IN BOOLEAN AllowShortcuts
)
{
UART_DEVICE_PATH *Uart;
CHAR8 Parity;
Uart = DevPath;
switch (Uart->Parity) {
case 0:
Parity = 'D';
break;
case 1:
Parity = 'N';
break;
case 2:
Parity = 'E';
break;
case 3:
Parity = 'O';
break;
case 4:
Parity = 'M';
break;
case 5:
Parity = 'S';
break;
default:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?