]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Include/EfiDevicePath.h
Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Include / EfiDevicePath.h
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