1 /*++ 2 3 Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR> 4 This program and the accompanying materials 5 are licensed and made available under the terms and conditions of the BSD License 6 which accompanies this distribution. The full text of the license may be found at 7 http://opensource.org/licenses/bsd-license.php 8 9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12 Module Name: 13 14 EfiDevicePath.h 15 16 Abstract: 17 18 EFI Device Path definitions 19 20 --*/ 21 22 #ifndef _EFI_DEVICE_PATH_H 23 #define _EFI_DEVICE_PATH_H 24 25 26 27 #pragma pack(1) 28 29 30 // 31 // Device Path defines and macros 32 // 33 #define EFI_DP_TYPE_MASK 0x7F 34 #define EFI_DP_TYPE_UNPACKED 0x80 35 #define END_DEVICE_PATH_TYPE 0x7f 36 #define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff 37 #define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01 38 #define END_DEVICE_PATH_LENGTH (sizeof(EFI_DEVICE_PATH_PROTOCOL)) 39 40 #define DP_IS_END_TYPE(a) 41 #define DP_IS_END_SUBTYPE(a) ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE ) 42 43 #define DevicePathType(a) ( ((a)->Type) & EFI_DP_TYPE_MASK ) 44 #define DevicePathSubType(a) ( (a)->SubType ) 45 #define DevicePathNodeLength(a) ( ((a)->Length[0]) | ((a)->Length[1] << 8) ) 46 #define NextDevicePathNode(a) ( (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a))) 47 #define IsDevicePathEndType(a) ( DevicePathType(a) == END_DEVICE_PATH_TYPE ) 48 #define IsDevicePathEndSubType(a) ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE ) 49 #define IsDevicePathEnd(a) ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) ) 50 #define IsDevicePathUnpacked(a) ( (a)->Type & EFI_DP_TYPE_UNPACKED ) 51 52 53 #define SetDevicePathNodeLength(a,l) { \ 54 (a)->Length[0] = (UINT8) (l); \ 55 (a)->Length[1] = (UINT8) ((l) >> 8); \ 56 } 57 58 #define SetDevicePathEndNode(a) { \ 59 (a)->Type = END_DEVICE_PATH_TYPE; \ 60 (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; \ 61 (a)->Length[0] = (UINT8) sizeof (EFI_DEVICE_PATH_PROTOCOL); \ 62 (a)->Length[1] = 0; \ 63 } 64 65 // 66 // Hardware Device Paths 67 // 68 #define HARDWARE_DEVICE_PATH 0x01 69 70 #define HW_PCI_DP 0x01 71 typedef struct { 72 EFI_DEVICE_PATH_PROTOCOL Header; 73 UINT8 Function; 74 UINT8 Device; 75 } PCI_DEVICE_PATH; 76 77 #define HW_PCCARD_DP 0x02 78 typedef struct { 79 EFI_DEVICE_PATH_PROTOCOL Header; 80 UINT8 FunctionNumber; 81 } PCCARD_DEVICE_PATH; 82 83 #define HW_MEMMAP_DP 0x03 84 typedef struct { 85 EFI_DEVICE_PATH_PROTOCOL Header; 86 UINT32 MemoryType; 87 EFI_PHYSICAL_ADDRESS StartingAddress; 88 EFI_PHYSICAL_ADDRESS EndingAddress; 89 } MEMMAP_DEVICE_PATH; 90 91 #define HW_VENDOR_DP 0x04 92 typedef struct { 93 EFI_DEVICE_PATH_PROTOCOL Header; 94 EFI_GUID Guid; 95 } VENDOR_DEVICE_PATH; 96 97 #define HW_CONTROLLER_DP 0x05 98 typedef struct { 99 EFI_DEVICE_PATH_PROTOCOL Header; 100 UINT32 Controller; 101 } CONTROLLER_DEVICE_PATH; 102 103 // 104 // ACPI Device Paths 105 // 106 #define ACPI_DEVICE_PATH 0x02 107 108 #define ACPI_DP 0x01 109 typedef struct { 110 EFI_DEVICE_PATH_PROTOCOL Header; 111 UINT32 HID; 112 UINT32 UID; 113 } ACPI_HID_DEVICE_PATH; 114 115 #define ACPI_EXTENDED_DP 0x02 116 typedef struct { 117 EFI_DEVICE_PATH_PROTOCOL Header; 118 UINT32 HID; 119 UINT32 UID; 120 UINT32 CID; 121 // 122 // Optional variable length _HIDSTR 123 // Optional variable length _UIDSTR 124 // 125 } ACPI_EXTENDED_HID_DEVICE_PATH; 126 127 #define ACPI_ADR_DP 0x03 128 129 typedef struct { 130 EFI_DEVICE_PATH_PROTOCOL Header; 131 UINT32 ADR; 132 } ACPI_ADR_DEVICE_PATH; 133 134 #define ACPI_ADR_DISPLAY_TYPE_OTHER 0 135 #define ACPI_ADR_DISPLAY_TYPE_VGA 1 136 #define ACPI_ADR_DISPLAY_TYPE_TV 2 137 #define ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL 3 138 #define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4 139 140 #define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \ 141 ((UINT32) ( (((_DeviceIdScheme) & 0x1) << 31) | \ 142 (((_HeadId) & 0x7) << 18) | \ 143 (((_NonVgaOutput) & 0x1) << 17) | \ 144 (((_BiosCanDetect) & 0x1) << 16) | \ 145 (((_VendorInfo) & 0xf) << 12) | \ 146 (((_Type) & 0xf) << 8) | \ 147 (((_Port) & 0xf) << 4) | \ 148 ((_Index) & 0xf) )) 149 150 // 151 // EISA ID Macro 152 // EISA ID Definition 32-bits 153 // bits[15:0] - three character compressed ASCII EISA ID. 154 // bits[31:16] - binary number 155 // Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z' 156 // 157 #define PNP_EISA_ID_CONST 0x41d0 158 #define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16)) 159 #define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId))) 160 #define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId))) 161 162 #define PNP_EISA_ID_MASK 0xffff 163 #define EISA_ID_TO_NUM(_Id) ((_Id) >> 16) 164 165 // 166 // Messaging Device Paths 167 // 168 #define MESSAGING_DEVICE_PATH 0x03 169 170 #define MSG_ATAPI_DP 0x01 171 typedef struct { 172 EFI_DEVICE_PATH_PROTOCOL Header; 173 UINT8 PrimarySecondary; 174 UINT8 SlaveMaster; 175 UINT16 Lun; 176 } ATAPI_DEVICE_PATH; 177 178 #define MSG_SCSI_DP 0x02 179 typedef struct { 180 EFI_DEVICE_PATH_PROTOCOL Header; 181 UINT16 Pun; 182 UINT16 Lun; 183 } SCSI_DEVICE_PATH; 184 185 #define MSG_FIBRECHANNEL_DP 0x03 186 typedef struct { 187 EFI_DEVICE_PATH_PROTOCOL Header; 188 UINT32 Reserved; 189 UINT64 WWN; 190 UINT64 Lun; 191 } FIBRECHANNEL_DEVICE_PATH; 192 193 #define MSG_1394_DP 0x04 194 typedef struct { 195 EFI_DEVICE_PATH_PROTOCOL Header; 196 UINT32 Reserved; 197 UINT64 Guid; 198 } F1394_DEVICE_PATH; 199 200 #define MSG_USB_DP 0x05 201 typedef struct { 202 EFI_DEVICE_PATH_PROTOCOL Header; 203 UINT8 ParentPortNumber; 204 UINT8 InterfaceNumber; 205 } USB_DEVICE_PATH; 206 207 #define MSG_USB_CLASS_DP 0x0f 208 typedef struct { 209 EFI_DEVICE_PATH_PROTOCOL Header; 210 UINT16 VendorId; 211 UINT16 ProductId; 212 UINT8 DeviceClass; 213 UINT8 DeviceSubClass; 214 UINT8 DeviceProtocol; 215 } USB_CLASS_DEVICE_PATH; 216 217 #define MSG_USB_WWID_DP 0x10 218 typedef struct { 219 EFI_DEVICE_PATH_PROTOCOL Header; 220 UINT16 InterfaceNumber; 221 UINT16 VendorId; 222 UINT16 ProductId; 223 // 224 // CHAR16 SerialNumber[]; 225 // 226 } USB_WWID_DEVICE_PATH; 227 228 #define MSG_DEVICE_LOGICAL_UNIT_DP 0x11 229 typedef struct { 230 EFI_DEVICE_PATH_PROTOCOL Header; 231 UINT8 Lun; 232 } DEVICE_LOGICAL_UNIT_DEVICE_PATH; 233 234 #define MSG_SATA_DP 0x12 235 typedef struct { 236 EFI_DEVICE_PATH_PROTOCOL Header; 237 UINT16 HBAPortNumber; 238 UINT16 PortMultiplierPortNumber; 239 UINT16 Lun; 240 } SATA_DEVICE_PATH; 241 242 #define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000 243 244 #define MSG_I2O_DP 0x06 245 typedef struct { 246 EFI_DEVICE_PATH_PROTOCOL Header; 247 UINT32 Tid; 248 } I2O_DEVICE_PATH; 249 250 #define MSG_MAC_ADDR_DP 0x0b 251 typedef struct { 252 EFI_DEVICE_PATH_PROTOCOL Header; 253 EFI_MAC_ADDRESS MacAddress; 254 UINT8 IfType; 255 } MAC_ADDR_DEVICE_PATH; 256 257 #define MSG_IPv4_DP 0x0c 258 typedef struct { 259 EFI_DEVICE_PATH_PROTOCOL Header; 260 EFI_IPv4_ADDRESS LocalIpAddress; 261 EFI_IPv4_ADDRESS RemoteIpAddress; 262 UINT16 LocalPort; 263 UINT16 RemotePort; 264 UINT16 Protocol; 265 BOOLEAN StaticIpAddress; 266 } IPv4_DEVICE_PATH; 267 268 #define MSG_IPv6_DP 0x0d 269 typedef struct { 270 EFI_DEVICE_PATH_PROTOCOL Header; 271 EFI_IPv6_ADDRESS LocalIpAddress; 272 EFI_IPv6_ADDRESS RemoteIpAddress; 273 UINT16 LocalPort; 274 UINT16 RemotePort; 275 UINT16 Protocol; 276 BOOLEAN StaticIpAddress; 277 } IPv6_DEVICE_PATH; 278 279 #define MSG_INFINIBAND_DP 0x09 280 typedef struct { 281 EFI_DEVICE_PATH_PROTOCOL Header; 282 UINT32 ResourceFlags; 283 UINT8 PortGid[16]; 284 UINT64 ServiceId; 285 UINT64 TargetPortId; 286 UINT64 DeviceId; 287 } INFINIBAND_DEVICE_PATH; 288 289 #define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01 290 #define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02 291 #define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04 292 #define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08 293 #define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10 294 295 #define MSG_UART_DP 0x0e 296 typedef struct { 297 EFI_DEVICE_PATH_PROTOCOL Header; 298 UINT32 Reserved; 299 UINT64 BaudRate; 300 UINT8 DataBits; 301 UINT8 Parity; 302 UINT8 StopBits; 303 } UART_DEVICE_PATH; 304 305 // 306 // Use VENDOR_DEVICE_PATH struct 307 // 308 #define MSG_VENDOR_DP 0x0a 309 310 #define DEVICE_PATH_MESSAGING_PC_ANSI \ 311 { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 312 313 #define DEVICE_PATH_MESSAGING_VT_100 \ 314 { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 315 316 #define DEVICE_PATH_MESSAGING_VT_100_PLUS \ 317 { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} } 318 319 #define DEVICE_PATH_MESSAGING_VT_UTF8 \ 320 { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} } 321 322 #define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL \ 323 { 0x37499a9d, 0x542f, 0x4c89, {0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4} } 324 325 typedef struct { 326 EFI_DEVICE_PATH_PROTOCOL Header; 327 EFI_GUID Guid; 328 UINT32 FlowControlMap; 329 } UART_FLOW_CONTROL_DEVICE_PATH; 330 331 #define DEVICE_PATH_MESSAGING_SAS \ 332 { 0xd487ddb4, 0x008b, 0x11d9, {0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d} } 333 334 typedef struct { 335 EFI_DEVICE_PATH_PROTOCOL Header; 336 EFI_GUID Guid; 337 UINT32 Reserved; 338 UINT64 SasAddress; 339 UINT64 Lun; 340 UINT16 DeviceTopology; 341 UINT16 RelativeTargetPort; 342 } SAS_DEVICE_PATH; 343 344 #define MSG_ISCSI_DP 0x13 345 typedef struct { 346 EFI_DEVICE_PATH_PROTOCOL Header; 347 UINT16 NetworkProtocol; 348 UINT16 LoginOption; 349 UINT64 Lun; 350 UINT16 TargetPortalGroupTag; 351 // CHAR8 iSCSI Target Name 352 } ISCSI_DEVICE_PATH; 353 354 #define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000 355 #define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002 356 #define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000 357 #define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008 358 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000 359 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000 360 #define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000 361 #define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000 362 363 /// 364 /// VLAN Device Path SubType. 365 /// 366 #define MSG_VLAN_DP 0x14 367 typedef struct { 368 EFI_DEVICE_PATH_PROTOCOL Header; 369 /// 370 /// VLAN identifier (0-4094). 371 /// 372 UINT16 VlanId; 373 } VLAN_DEVICE_PATH; 374 375 376 // 377 // Media Device Path 378 // 379 #define MEDIA_DEVICE_PATH 0x04 380 381 #define MEDIA_HARDDRIVE_DP 0x01 382 typedef struct { 383 EFI_DEVICE_PATH_PROTOCOL Header; 384 UINT32 PartitionNumber; 385 UINT64 PartitionStart; 386 UINT64 PartitionSize; 387 UINT8 Signature[16]; 388 UINT8 MBRType; 389 UINT8 SignatureType; 390 } HARDDRIVE_DEVICE_PATH; 391 392 #define MBR_TYPE_PCAT 0x01 393 #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02 394 395 #define SIGNATURE_TYPE_MBR 0x01 396 #define SIGNATURE_TYPE_GUID 0x02 397 398 #define MEDIA_CDROM_DP 0x02 399 typedef struct { 400 EFI_DEVICE_PATH_PROTOCOL Header; 401 UINT32 BootEntry; 402 UINT64 PartitionStart; 403 UINT64 PartitionSize; 404 } CDROM_DEVICE_PATH; 405 406 // 407 // Use VENDOR_DEVICE_PATH struct 408 // 409 #define MEDIA_VENDOR_DP 0x03 410 411 #define MEDIA_FILEPATH_DP 0x04 412 typedef struct { 413 EFI_DEVICE_PATH_PROTOCOL Header; 414 CHAR16 PathName[1]; 415 } FILEPATH_DEVICE_PATH; 416 417 #define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName) 418 419 #define MEDIA_PROTOCOL_DP 0x05 420 typedef struct { 421 EFI_DEVICE_PATH_PROTOCOL Header; 422 EFI_GUID Protocol; 423 } MEDIA_PROTOCOL_DEVICE_PATH; 424 425 #define MEDIA_FV_DP 0x07 426 typedef struct { 427 EFI_DEVICE_PATH_PROTOCOL Header; 428 EFI_GUID NameGuid; 429 } MEDIA_FW_VOL_DEVICE_PATH; 430 431 #define MEDIA_FV_FILEPATH_DP 0x06 432 typedef struct { 433 EFI_DEVICE_PATH_PROTOCOL Header; 434 EFI_GUID NameGuid; 435 } MEDIA_FW_VOL_FILEPATH_DEVICE_PATH; 436 437 #define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08 438 typedef struct { 439 EFI_DEVICE_PATH_PROTOCOL Header; 440 UINT32 Reserved; 441 UINT64 StartingOffset; 442 UINT64 EndingOffset; 443 } MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH; 444 445 // 446 // BBS Device Path 447 // 448 #define BBS_DEVICE_PATH 0x05 449 #define BBS_BBS_DP 0x01 450 typedef struct { 451 EFI_DEVICE_PATH_PROTOCOL Header; 452 UINT16 DeviceType; 453 UINT16 StatusFlag; 454 CHAR8 String[1]; 455 } BBS_BBS_DEVICE_PATH; 456 457 // 458 // DeviceType definitions - from BBS specification 459 // 460 #define BBS_TYPE_FLOPPY 0x01 461 #define BBS_TYPE_HARDDRIVE 0x02 462 #define BBS_TYPE_CDROM 0x03 463 #define BBS_TYPE_PCMCIA 0x04 464 #define BBS_TYPE_USB 0x05 465 #define BBS_TYPE_EMBEDDED_NETWORK 0x06 466 #define BBS_TYPE_BEV 0x80 467 #define BBS_TYPE_UNKNOWN 0xFF 468 469 #define UNKNOWN_DEVICE_GUID \ 470 { 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} } 471 472 typedef struct { 473 VENDOR_DEVICE_PATH DevicePath; 474 UINT8 LegacyDriveLetter; 475 } UNKNOWN_DEVICE_VENDOR_DEVICE_PATH; 476 477 478 // 479 // Union of all possible Device Paths and pointers to Device Paths 480 // 481 482 typedef union { 483 EFI_DEVICE_PATH_PROTOCOL DevPath; 484 PCI_DEVICE_PATH Pci; 485 PCCARD_DEVICE_PATH PcCard; 486 MEMMAP_DEVICE_PATH MemMap; 487 VENDOR_DEVICE_PATH Vendor; 488 489 UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor; 490 491 CONTROLLER_DEVICE_PATH Controller; 492 ACPI_HID_DEVICE_PATH Acpi; 493 ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi; 494 495 ATAPI_DEVICE_PATH Atapi; 496 SCSI_DEVICE_PATH Scsi; 497 FIBRECHANNEL_DEVICE_PATH FibreChannel; 498 SATA_DEVICE_PATH Sata; 499 500 F1394_DEVICE_PATH F1394; 501 USB_DEVICE_PATH Usb; 502 USB_CLASS_DEVICE_PATH UsbClass; 503 USB_WWID_DEVICE_PATH UsbWwid; 504 DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit; 505 I2O_DEVICE_PATH I2O; 506 MAC_ADDR_DEVICE_PATH MacAddr; 507 IPv4_DEVICE_PATH Ipv4; 508 IPv6_DEVICE_PATH Ipv6; 509 INFINIBAND_DEVICE_PATH InfiniBand; 510 UART_DEVICE_PATH Uart; 511 UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl; 512 SAS_DEVICE_PATH Sas; 513 ISCSI_DEVICE_PATH Iscsi; 514 HARDDRIVE_DEVICE_PATH HardDrive; 515 CDROM_DEVICE_PATH CD; 516 517 FILEPATH_DEVICE_PATH FilePath; 518 MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol; 519 520 MEDIA_FW_VOL_DEVICE_PATH PiwgFirmwareVolume; 521 MEDIA_FW_VOL_FILEPATH_DEVICE_PATH PiwgFirmwareFile; 522 MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH 523 Offset; 524 525 BBS_BBS_DEVICE_PATH Bbs; 526 } EFI_DEV_PATH; 527 528 529 530 typedef union { 531 EFI_DEVICE_PATH_PROTOCOL *DevPath; 532 PCI_DEVICE_PATH *Pci; 533 PCCARD_DEVICE_PATH *PcCard; 534 MEMMAP_DEVICE_PATH *MemMap; 535 VENDOR_DEVICE_PATH *Vendor; 536 537 UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownVendor; 538 539 CONTROLLER_DEVICE_PATH *Controller; 540 ACPI_HID_DEVICE_PATH *Acpi; 541 ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi; 542 543 ATAPI_DEVICE_PATH *Atapi; 544 SCSI_DEVICE_PATH *Scsi; 545 FIBRECHANNEL_DEVICE_PATH *FibreChannel; 546 SATA_DEVICE_PATH *Sata; 547 548 F1394_DEVICE_PATH *F1394; 549 USB_DEVICE_PATH *Usb; 550 USB_CLASS_DEVICE_PATH *UsbClass; 551 USB_WWID_DEVICE_PATH *UsbWwid; 552 DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicUnit; 553 I2O_DEVICE_PATH *I2O; 554 MAC_ADDR_DEVICE_PATH *MacAddr; 555 IPv4_DEVICE_PATH *Ipv4; 556 IPv6_DEVICE_PATH *Ipv6; 557 INFINIBAND_DEVICE_PATH *InfiniBand; 558 UART_DEVICE_PATH *Uart; 559 UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl; 560 561 SAS_DEVICE_PATH *Sas; 562 ISCSI_DEVICE_PATH *Iscsi; 563 564 HARDDRIVE_DEVICE_PATH *HardDrive; 565 CDROM_DEVICE_PATH *CD; 566 567 FILEPATH_DEVICE_PATH *FilePath; 568 MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol; 569 570 MEDIA_FW_VOL_DEVICE_PATH *PiwgFirmwareVolume; 571 MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *PiwgFirmwareFile; 572 MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH 573 *Offset; 574 575 BBS_BBS_DEVICE_PATH *Bbs; 576 UINT8 *Raw; 577 } EFI_DEV_PATH_PTR; 578 579 #pragma pack() 580 581 582 #endif 583