]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Include/EfiDevicePath.h
Update the copyright notice format
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Include / EfiDevicePath.h
1 /*++
2
3 Copyright (c) 2004 - 2009, 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] = 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 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
218 #define MSG_USB_WWID_DP 0x10
219 typedef struct {
220 EFI_DEVICE_PATH_PROTOCOL Header;
221 UINT16 InterfaceNumber;
222 UINT16 VendorId;
223 UINT16 ProductId;
224 //
225 // CHAR16 SerialNumber[];
226 //
227 } USB_WWID_DEVICE_PATH;
228
229 #define MSG_DEVICE_LOGICAL_UNIT_DP 0x11
230 typedef struct {
231 EFI_DEVICE_PATH_PROTOCOL Header;
232 UINT8 Lun;
233 } DEVICE_LOGICAL_UNIT_DEVICE_PATH;
234 #endif
235
236 #define MSG_SATA_DP 0x12
237 typedef struct {
238 EFI_DEVICE_PATH_PROTOCOL Header;
239 UINT16 HBAPortNumber;
240 UINT16 PortMultiplierPortNumber;
241 UINT16 Lun;
242 } SATA_DEVICE_PATH;
243
244 #define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000
245
246 #define MSG_I2O_DP 0x06
247 typedef struct {
248 EFI_DEVICE_PATH_PROTOCOL Header;
249 UINT32 Tid;
250 } I2O_DEVICE_PATH;
251
252 #define MSG_MAC_ADDR_DP 0x0b
253 typedef struct {
254 EFI_DEVICE_PATH_PROTOCOL Header;
255 EFI_MAC_ADDRESS MacAddress;
256 UINT8 IfType;
257 } MAC_ADDR_DEVICE_PATH;
258
259 #define MSG_IPv4_DP 0x0c
260 typedef struct {
261 EFI_DEVICE_PATH_PROTOCOL Header;
262 EFI_IPv4_ADDRESS LocalIpAddress;
263 EFI_IPv4_ADDRESS RemoteIpAddress;
264 UINT16 LocalPort;
265 UINT16 RemotePort;
266 UINT16 Protocol;
267 BOOLEAN StaticIpAddress;
268 } IPv4_DEVICE_PATH;
269
270 #define MSG_IPv6_DP 0x0d
271 typedef struct {
272 EFI_DEVICE_PATH_PROTOCOL Header;
273 EFI_IPv6_ADDRESS LocalIpAddress;
274 EFI_IPv6_ADDRESS RemoteIpAddress;
275 UINT16 LocalPort;
276 UINT16 RemotePort;
277 UINT16 Protocol;
278 BOOLEAN StaticIpAddress;
279 } IPv6_DEVICE_PATH;
280
281 #define MSG_INFINIBAND_DP 0x09
282 typedef struct {
283 EFI_DEVICE_PATH_PROTOCOL Header;
284 UINT32 ResourceFlags;
285 UINT8 PortGid[16];
286 UINT64 ServiceId;
287 UINT64 TargetPortId;
288 UINT64 DeviceId;
289 } INFINIBAND_DEVICE_PATH;
290
291 #define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
292 #define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
293 #define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
294 #define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
295 #define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
296
297 #define MSG_UART_DP 0x0e
298 typedef struct {
299 EFI_DEVICE_PATH_PROTOCOL Header;
300 UINT32 Reserved;
301 UINT64 BaudRate;
302 UINT8 DataBits;
303 UINT8 Parity;
304 UINT8 StopBits;
305 } UART_DEVICE_PATH;
306
307 //
308 // Use VENDOR_DEVICE_PATH struct
309 //
310 #define MSG_VENDOR_DP 0x0a
311
312 #define DEVICE_PATH_MESSAGING_PC_ANSI \
313 { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
314
315 #define DEVICE_PATH_MESSAGING_VT_100 \
316 { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
317
318 #define DEVICE_PATH_MESSAGING_VT_100_PLUS \
319 { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} }
320
321 #define DEVICE_PATH_MESSAGING_VT_UTF8 \
322 { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} }
323
324 #define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL \
325 { 0x37499a9d, 0x542f, 0x4c89, {0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4} }
326
327 typedef struct {
328 EFI_DEVICE_PATH_PROTOCOL Header;
329 EFI_GUID Guid;
330 UINT32 FlowControlMap;
331 } UART_FLOW_CONTROL_DEVICE_PATH;
332
333 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
334
335 #define DEVICE_PATH_MESSAGING_SAS \
336 { 0xd487ddb4, 0x008b, 0x11d9, {0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d} }
337
338 typedef struct {
339 EFI_DEVICE_PATH_PROTOCOL Header;
340 EFI_GUID Guid;
341 UINT32 Reserved;
342 UINT64 SasAddress;
343 UINT64 Lun;
344 UINT16 DeviceTopology;
345 UINT16 RelativeTargetPort;
346 } SAS_DEVICE_PATH;
347
348 #endif
349
350 #define MSG_ISCSI_DP 0x13
351 typedef struct {
352 EFI_DEVICE_PATH_PROTOCOL Header;
353 UINT16 NetworkProtocol;
354 UINT16 LoginOption;
355 UINT64 Lun;
356 UINT16 TargetPortalGroupTag;
357 // CHAR8 iSCSI Target Name
358 } ISCSI_DEVICE_PATH;
359
360 #define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000
361 #define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002
362 #define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000
363 #define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008
364 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000
365 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000
366 #define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000
367 #define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000
368
369 //
370 // Media Device Path
371 //
372 #define MEDIA_DEVICE_PATH 0x04
373
374 #define MEDIA_HARDDRIVE_DP 0x01
375 typedef struct {
376 EFI_DEVICE_PATH_PROTOCOL Header;
377 UINT32 PartitionNumber;
378 UINT64 PartitionStart;
379 UINT64 PartitionSize;
380 UINT8 Signature[16];
381 UINT8 MBRType;
382 UINT8 SignatureType;
383 } HARDDRIVE_DEVICE_PATH;
384
385 #define MBR_TYPE_PCAT 0x01
386 #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
387
388 #define SIGNATURE_TYPE_MBR 0x01
389 #define SIGNATURE_TYPE_GUID 0x02
390
391 #define MEDIA_CDROM_DP 0x02
392 typedef struct {
393 EFI_DEVICE_PATH_PROTOCOL Header;
394 UINT32 BootEntry;
395 UINT64 PartitionStart;
396 UINT64 PartitionSize;
397 } CDROM_DEVICE_PATH;
398
399 //
400 // Use VENDOR_DEVICE_PATH struct
401 //
402 #define MEDIA_VENDOR_DP 0x03
403
404 #define MEDIA_FILEPATH_DP 0x04
405 typedef struct {
406 EFI_DEVICE_PATH_PROTOCOL Header;
407 CHAR16 PathName[1];
408 } FILEPATH_DEVICE_PATH;
409
410 #define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
411
412 #define MEDIA_PROTOCOL_DP 0x05
413 typedef struct {
414 EFI_DEVICE_PATH_PROTOCOL Header;
415 EFI_GUID Protocol;
416 } MEDIA_PROTOCOL_DEVICE_PATH;
417
418 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
419
420 #define MEDIA_FV_DP 0x07
421 typedef struct {
422 EFI_DEVICE_PATH_PROTOCOL Header;
423 EFI_GUID NameGuid;
424 } MEDIA_FW_VOL_DEVICE_PATH;
425
426 #define MEDIA_FV_FILEPATH_DP 0x06
427 typedef struct {
428 EFI_DEVICE_PATH_PROTOCOL Header;
429 EFI_GUID NameGuid;
430 } MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
431
432 #define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08
433 typedef struct {
434 EFI_DEVICE_PATH_PROTOCOL Header;
435 UINT32 Reserved;
436 UINT64 StartingOffset;
437 UINT64 EndingOffset;
438 } MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
439 #endif
440
441 //
442 // BBS Device Path
443 //
444 #define BBS_DEVICE_PATH 0x05
445 #define BBS_BBS_DP 0x01
446 typedef struct {
447 EFI_DEVICE_PATH_PROTOCOL Header;
448 UINT16 DeviceType;
449 UINT16 StatusFlag;
450 CHAR8 String[1];
451 } BBS_BBS_DEVICE_PATH;
452
453 //
454 // DeviceType definitions - from BBS specification
455 //
456 #define BBS_TYPE_FLOPPY 0x01
457 #define BBS_TYPE_HARDDRIVE 0x02
458 #define BBS_TYPE_CDROM 0x03
459 #define BBS_TYPE_PCMCIA 0x04
460 #define BBS_TYPE_USB 0x05
461 #define BBS_TYPE_EMBEDDED_NETWORK 0x06
462 #define BBS_TYPE_BEV 0x80
463 #define BBS_TYPE_UNKNOWN 0xFF
464
465 #define UNKNOWN_DEVICE_GUID \
466 { 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} }
467
468 typedef struct {
469 VENDOR_DEVICE_PATH DevicePath;
470 UINT8 LegacyDriveLetter;
471 } UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
472
473
474 //
475 // Union of all possible Device Paths and pointers to Device Paths
476 //
477
478 typedef union {
479 EFI_DEVICE_PATH_PROTOCOL DevPath;
480 PCI_DEVICE_PATH Pci;
481 PCCARD_DEVICE_PATH PcCard;
482 MEMMAP_DEVICE_PATH MemMap;
483 VENDOR_DEVICE_PATH Vendor;
484
485 UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor;
486
487 CONTROLLER_DEVICE_PATH Controller;
488 ACPI_HID_DEVICE_PATH Acpi;
489 ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
490
491 ATAPI_DEVICE_PATH Atapi;
492 SCSI_DEVICE_PATH Scsi;
493 FIBRECHANNEL_DEVICE_PATH FibreChannel;
494 SATA_DEVICE_PATH Sata;
495
496 F1394_DEVICE_PATH F1394;
497 USB_DEVICE_PATH Usb;
498 USB_CLASS_DEVICE_PATH UsbClass;
499 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
500 USB_WWID_DEVICE_PATH UsbWwid;
501 DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit;
502 #endif
503 I2O_DEVICE_PATH I2O;
504 MAC_ADDR_DEVICE_PATH MacAddr;
505 IPv4_DEVICE_PATH Ipv4;
506 IPv6_DEVICE_PATH Ipv6;
507 INFINIBAND_DEVICE_PATH InfiniBand;
508 UART_DEVICE_PATH Uart;
509 UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl;
510 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
511 SAS_DEVICE_PATH Sas;
512 #endif
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 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
521 MEDIA_FW_VOL_DEVICE_PATH PiwgFirmwareVolume;
522 MEDIA_FW_VOL_FILEPATH_DEVICE_PATH PiwgFirmwareFile;
523 MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH
524 Offset;
525 #endif
526
527 BBS_BBS_DEVICE_PATH Bbs;
528 } EFI_DEV_PATH;
529
530
531
532 typedef union {
533 EFI_DEVICE_PATH_PROTOCOL *DevPath;
534 PCI_DEVICE_PATH *Pci;
535 PCCARD_DEVICE_PATH *PcCard;
536 MEMMAP_DEVICE_PATH *MemMap;
537 VENDOR_DEVICE_PATH *Vendor;
538
539 UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownVendor;
540
541 CONTROLLER_DEVICE_PATH *Controller;
542 ACPI_HID_DEVICE_PATH *Acpi;
543 ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
544
545 ATAPI_DEVICE_PATH *Atapi;
546 SCSI_DEVICE_PATH *Scsi;
547 FIBRECHANNEL_DEVICE_PATH *FibreChannel;
548 SATA_DEVICE_PATH *Sata;
549
550 F1394_DEVICE_PATH *F1394;
551 USB_DEVICE_PATH *Usb;
552 USB_CLASS_DEVICE_PATH *UsbClass;
553 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
554 USB_WWID_DEVICE_PATH *UsbWwid;
555 DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicUnit;
556 #endif
557 I2O_DEVICE_PATH *I2O;
558 MAC_ADDR_DEVICE_PATH *MacAddr;
559 IPv4_DEVICE_PATH *Ipv4;
560 IPv6_DEVICE_PATH *Ipv6;
561 INFINIBAND_DEVICE_PATH *InfiniBand;
562 UART_DEVICE_PATH *Uart;
563 UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;
564
565 #if (EFI_SPECIFICATION_VERSION >= 0x00020000)
566 SAS_DEVICE_PATH *Sas;
567 #endif
568 ISCSI_DEVICE_PATH *Iscsi;
569
570 HARDDRIVE_DEVICE_PATH *HardDrive;
571 CDROM_DEVICE_PATH *CD;
572
573 FILEPATH_DEVICE_PATH *FilePath;
574 MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
575
576 #if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
577 MEDIA_FW_VOL_DEVICE_PATH *PiwgFirmwareVolume;
578 MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *PiwgFirmwareFile;
579 #endif
580
581 BBS_BBS_DEVICE_PATH *Bbs;
582 UINT8 *Raw;
583 } EFI_DEV_PATH_PTR;
584
585 #pragma pack()
586
587
588 #endif