iPXE
DevicePath.h
Go to the documentation of this file.
1 /** @file
2  The device path protocol as defined in UEFI 2.0.
3 
4  The device path represents a programmatic path to a device,
5  from a software point of view. The path must persist from boot to boot, so
6  it can not contain things like PCI bus numbers that change from boot to boot.
7 
8 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
9 SPDX-License-Identifier: BSD-2-Clause-Patent
10 
11 **/
12 
13 #ifndef __EFI_DEVICE_PATH_PROTOCOL_H__
14 #define __EFI_DEVICE_PATH_PROTOCOL_H__
15 
16 FILE_LICENCE ( BSD2_PATENT );
17 FILE_SECBOOT ( PERMITTED );
18 
19 #include <ipxe/efi/Guid/PcAnsi.h>
22 
23 ///
24 /// Device Path protocol.
25 ///
26 #define EFI_DEVICE_PATH_PROTOCOL_GUID \
27  { \
28  0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \
29  }
30 
31 ///
32 /// Device Path guid definition for backward-compatible with EFI1.1.
33 ///
34 #define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID
35 
36 #pragma pack(1)
37 
38 /**
39  This protocol can be used on any device handle to obtain generic path/location
40  information concerning the physical device or logical device. If the handle does
41  not logically map to a physical device, the handle may not necessarily support
42  the device path protocol. The device path describes the location of the device
43  the handle is for. The size of the Device Path can be determined from the structures
44  that make up the Device Path.
45 **/
46 typedef struct {
47  UINT8 Type; ///< 0x01 Hardware Device Path.
48  ///< 0x02 ACPI Device Path.
49  ///< 0x03 Messaging Device Path.
50  ///< 0x04 Media Device Path.
51  ///< 0x05 BIOS Boot Specification Device Path.
52  ///< 0x7F End of Hardware Device Path.
53 
54  UINT8 SubType; ///< Varies by Type
55  ///< 0xFF End Entire Device Path, or
56  ///< 0x01 End This Instance of a Device Path and start a new
57  ///< Device Path.
58 
59  UINT8 Length[2]; ///< Specific Device Path data. Type and Sub-Type define
60  ///< type of data. Size of data is included in Length.
62 
63 ///
64 /// Device Path protocol definition for backward-compatible with EFI1.1.
65 ///
67 
68 ///
69 /// Hardware Device Paths.
70 ///
71 #define HARDWARE_DEVICE_PATH 0x01
72 
73 ///
74 /// PCI Device Path SubType.
75 ///
76 #define HW_PCI_DP 0x01
77 
78 ///
79 /// PCI Device Path.
80 ///
81 typedef struct {
83  ///
84  /// PCI Function Number.
85  ///
87  ///
88  /// PCI Device Number.
89  ///
92 
93 ///
94 /// PCCARD Device Path SubType.
95 ///
96 #define HW_PCCARD_DP 0x02
97 
98 ///
99 /// PCCARD Device Path.
100 ///
101 typedef struct {
103  ///
104  /// Function Number (0 = First Function).
105  ///
108 
109 ///
110 /// Memory Mapped Device Path SubType.
111 ///
112 #define HW_MEMMAP_DP 0x03
113 
114 ///
115 /// Memory Mapped Device Path.
116 ///
117 typedef struct {
119  ///
120  /// EFI_MEMORY_TYPE
121  ///
123  ///
124  /// Starting Memory Address.
125  ///
127  ///
128  /// Ending Memory Address.
129  ///
132 
133 ///
134 /// Hardware Vendor Device Path SubType.
135 ///
136 #define HW_VENDOR_DP 0x04
137 
138 ///
139 /// The Vendor Device Path allows the creation of vendor-defined Device Paths. A vendor must
140 /// allocate a Vendor GUID for a Device Path. The Vendor GUID can then be used to define the
141 /// contents on the n bytes that follow in the Vendor Device Path node.
142 ///
143 typedef struct {
145  ///
146  /// Vendor-assigned GUID that defines the data that follows.
147  ///
149  ///
150  /// Vendor-defined variable size data.
151  ///
153 
154 ///
155 /// Controller Device Path SubType.
156 ///
157 #define HW_CONTROLLER_DP 0x05
158 
159 ///
160 /// Controller Device Path.
161 ///
162 typedef struct {
164  ///
165  /// Controller number.
166  ///
169 
170 ///
171 /// BMC Device Path SubType.
172 ///
173 #define HW_BMC_DP 0x06
174 
175 ///
176 /// BMC Device Path.
177 ///
178 typedef struct {
180  ///
181  /// Interface Type.
182  ///
184  ///
185  /// Base Address.
186  ///
189 
190 ///
191 /// ACPI Device Paths.
192 ///
193 #define ACPI_DEVICE_PATH 0x02
194 
195 ///
196 /// ACPI Device Path SubType.
197 ///
198 #define ACPI_DP 0x01
199 typedef struct {
201  ///
202  /// Device's PnP hardware ID stored in a numeric 32-bit
203  /// compressed EISA-type ID. This value must match the
204  /// corresponding _HID in the ACPI name space.
205  ///
207  ///
208  /// Unique ID that is required by ACPI if two devices have the
209  /// same _HID. This value must also match the corresponding
210  /// _UID/_HID pair in the ACPI name space. Only the 32-bit
211  /// numeric value type of _UID is supported. Thus, strings must
212  /// not be used for the _UID in the ACPI name space.
213  ///
216 
217 ///
218 /// Expanded ACPI Device Path SubType.
219 ///
220 #define ACPI_EXTENDED_DP 0x02
221 typedef struct {
223  ///
224  /// Device's PnP hardware ID stored in a numeric 32-bit
225  /// compressed EISA-type ID. This value must match the
226  /// corresponding _HID in the ACPI name space.
227  ///
229  ///
230  /// Unique ID that is required by ACPI if two devices have the
231  /// same _HID. This value must also match the corresponding
232  /// _UID/_HID pair in the ACPI name space.
233  ///
235  ///
236  /// Device's compatible PnP hardware ID stored in a numeric
237  /// 32-bit compressed EISA-type ID. This value must match at
238  /// least one of the compatible device IDs returned by the
239  /// corresponding _CID in the ACPI name space.
240  ///
242  ///
243  /// Optional variable length _HIDSTR.
244  /// Optional variable length _UIDSTR.
245  /// Optional variable length _CIDSTR.
246  ///
248 
249 //
250 // EISA ID Macro
251 // EISA ID Definition 32-bits
252 // bits[15:0] - three character compressed ASCII EISA ID.
253 // bits[31:16] - binary number
254 // Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
255 //
256 #define PNP_EISA_ID_CONST 0x41d0
257 #define EISA_ID(_Name, _Num) ((UINT32)((_Name) | (_Num) << 16))
258 #define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
259 #define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
260 
261 #define PNP_EISA_ID_MASK 0xffff
262 #define EISA_ID_TO_NUM(_Id) ((_Id) >> 16)
263 
264 ///
265 /// ACPI _ADR Device Path SubType.
266 ///
267 #define ACPI_ADR_DP 0x03
268 
269 ///
270 /// The _ADR device path is used to contain video output device attributes to support the Graphics
271 /// Output Protocol. The device path can contain multiple _ADR entries if multiple video output
272 /// devices are displaying the same output.
273 ///
274 typedef struct {
276  ///
277  /// _ADR value. For video output devices the value of this
278  /// field comes from Table B-2 of the ACPI 3.0 specification. At
279  /// least one _ADR value is required.
280  ///
282  //
283  // This device path may optionally contain more than one _ADR entry.
284  //
286 
287 ///
288 /// ACPI NVDIMM Device Path SubType.
289 ///
290 #define ACPI_NVDIMM_DP 0x04
291 ///
292 ///
293 typedef struct {
295  ///
296  /// NFIT Device Handle, the _ADR of the NVDIMM device.
297  /// The value of this field comes from Section 9.20.3 of the ACPI 6.2A specification.
298  ///
301 
302 #define ACPI_ADR_DISPLAY_TYPE_OTHER 0
303 #define ACPI_ADR_DISPLAY_TYPE_VGA 1
304 #define ACPI_ADR_DISPLAY_TYPE_TV 2
305 #define ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL 3
306 #define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4
307 
308 #define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \
309  ((UINT32)( ((UINT32)((_DeviceIdScheme) & 0x1) << 31) | \
310  (((_HeadId) & 0x7) << 18) | \
311  (((_NonVgaOutput) & 0x1) << 17) | \
312  (((_BiosCanDetect) & 0x1) << 16) | \
313  (((_VendorInfo) & 0xf) << 12) | \
314  (((_Type) & 0xf) << 8) | \
315  (((_Port) & 0xf) << 4) | \
316  ((_Index) & 0xf) ))
317 
318 ///
319 /// Messaging Device Paths.
320 /// This Device Path is used to describe the connection of devices outside the resource domain of the
321 /// system. This Device Path can describe physical messaging information like SCSI ID, or abstract
322 /// information like networking protocol IP addresses.
323 ///
324 #define MESSAGING_DEVICE_PATH 0x03
325 
326 ///
327 /// ATAPI Device Path SubType
328 ///
329 #define MSG_ATAPI_DP 0x01
330 typedef struct {
332  ///
333  /// Set to zero for primary, or one for secondary.
334  ///
336  ///
337  /// Set to zero for master, or one for slave mode.
338  ///
340  ///
341  /// Logical Unit Number.
342  ///
345 
346 ///
347 /// SCSI Device Path SubType.
348 ///
349 #define MSG_SCSI_DP 0x02
350 typedef struct {
352  ///
353  /// Target ID on the SCSI bus (PUN).
354  ///
356  ///
357  /// Logical Unit Number (LUN).
358  ///
361 
362 ///
363 /// Fibre Channel SubType.
364 ///
365 #define MSG_FIBRECHANNEL_DP 0x03
366 typedef struct {
368  ///
369  /// Reserved for the future.
370  ///
372  ///
373  /// Fibre Channel World Wide Number.
374  ///
376  ///
377  /// Fibre Channel Logical Unit Number.
378  ///
381 
382 ///
383 /// Fibre Channel Ex SubType.
384 ///
385 #define MSG_FIBRECHANNELEX_DP 0x15
386 typedef struct {
388  ///
389  /// Reserved for the future.
390  ///
392  ///
393  /// 8 byte array containing Fibre Channel End Device Port Name.
394  ///
395  UINT8 WWN[8];
396  ///
397  /// 8 byte array containing Fibre Channel Logical Unit Number.
398  ///
399  UINT8 Lun[8];
401 
402 ///
403 /// 1394 Device Path SubType
404 ///
405 #define MSG_1394_DP 0x04
406 typedef struct {
408  ///
409  /// Reserved for the future.
410  ///
412  ///
413  /// 1394 Global Unique ID (GUID).
414  ///
417 
418 ///
419 /// USB Device Path SubType.
420 ///
421 #define MSG_USB_DP 0x05
422 typedef struct {
424  ///
425  /// USB Parent Port Number.
426  ///
428  ///
429  /// USB Interface Number.
430  ///
433 
434 ///
435 /// USB Class Device Path SubType.
436 ///
437 #define MSG_USB_CLASS_DP 0x0f
438 typedef struct {
440  ///
441  /// Vendor ID assigned by USB-IF. A value of 0xFFFF will
442  /// match any Vendor ID.
443  ///
445  ///
446  /// Product ID assigned by USB-IF. A value of 0xFFFF will
447  /// match any Product ID.
448  ///
450  ///
451  /// The class code assigned by the USB-IF. A value of 0xFF
452  /// will match any class code.
453  ///
455  ///
456  /// The subclass code assigned by the USB-IF. A value of
457  /// 0xFF will match any subclass code.
458  ///
460  ///
461  /// The protocol code assigned by the USB-IF. A value of
462  /// 0xFF will match any protocol code.
463  ///
466 
467 ///
468 /// USB WWID Device Path SubType.
469 ///
470 #define MSG_USB_WWID_DP 0x10
471 
472 ///
473 /// This device path describes a USB device using its serial number.
474 ///
475 typedef struct {
477  ///
478  /// USB interface number.
479  ///
481  ///
482  /// USB vendor id of the device.
483  ///
485  ///
486  /// USB product id of the device.
487  ///
489  ///
490  /// Last 64-or-fewer UTF-16 characters of the USB
491  /// serial number. The length of the string is
492  /// determined by the Length field less the offset of the
493  /// Serial Number field (10)
494  ///
495  /// CHAR16 SerialNumber[...];
497 
498 ///
499 /// Device Logical Unit SubType.
500 ///
501 #define MSG_DEVICE_LOGICAL_UNIT_DP 0x11
502 typedef struct {
504  ///
505  /// Logical Unit Number for the interface.
506  ///
509 
510 ///
511 /// SATA Device Path SubType.
512 ///
513 #define MSG_SATA_DP 0x12
514 typedef struct {
516  ///
517  /// The HBA port number that facilitates the connection to the
518  /// device or a port multiplier. The value 0xFFFF is reserved.
519  ///
521  ///
522  /// The Port multiplier port number that facilitates the connection
523  /// to the device. Must be set to 0xFFFF if the device is directly
524  /// connected to the HBA.
525  ///
527  ///
528  /// Logical Unit Number.
529  ///
532 
533 ///
534 /// Flag for if the device is directly connected to the HBA.
535 ///
536 #define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000
537 
538 ///
539 /// I2O Device Path SubType.
540 ///
541 #define MSG_I2O_DP 0x06
542 typedef struct {
544  ///
545  /// Target ID (TID) for a device.
546  ///
549 
550 ///
551 /// MAC Address Device Path SubType.
552 ///
553 #define MSG_MAC_ADDR_DP 0x0b
554 typedef struct {
556  ///
557  /// The MAC address for a network interface padded with 0s.
558  ///
560  ///
561  /// Network interface type(i.e. 802.3, FDDI).
562  ///
565 
566 ///
567 /// IPv4 Device Path SubType
568 ///
569 #define MSG_IPv4_DP 0x0c
570 typedef struct {
572  ///
573  /// The local IPv4 address.
574  ///
576  ///
577  /// The remote IPv4 address.
578  ///
580  ///
581  /// The local port number.
582  ///
584  ///
585  /// The remote port number.
586  ///
588  ///
589  /// The network protocol(i.e. UDP, TCP).
590  ///
592  ///
593  /// 0x00 - The Source IP Address was assigned though DHCP.
594  /// 0x01 - The Source IP Address is statically bound.
595  ///
597  ///
598  /// The gateway IP address
599  ///
601  ///
602  /// The subnet mask
603  ///
606 
607 ///
608 /// IPv6 Device Path SubType.
609 ///
610 #define MSG_IPv6_DP 0x0d
611 typedef struct {
613  ///
614  /// The local IPv6 address.
615  ///
617  ///
618  /// The remote IPv6 address.
619  ///
621  ///
622  /// The local port number.
623  ///
625  ///
626  /// The remote port number.
627  ///
629  ///
630  /// The network protocol(i.e. UDP, TCP).
631  ///
633  ///
634  /// 0x00 - The Local IP Address was manually configured.
635  /// 0x01 - The Local IP Address is assigned through IPv6
636  /// stateless auto-configuration.
637  /// 0x02 - The Local IP Address is assigned through IPv6
638  /// stateful configuration.
639  ///
641  ///
642  /// The prefix length
643  ///
645  ///
646  /// The gateway IP address
647  ///
650 
651 ///
652 /// InfiniBand Device Path SubType.
653 ///
654 #define MSG_INFINIBAND_DP 0x09
655 typedef struct {
657  ///
658  /// Flags to help identify/manage InfiniBand device path elements:
659  /// Bit 0 - IOC/Service (0b = IOC, 1b = Service).
660  /// Bit 1 - Extend Boot Environment.
661  /// Bit 2 - Console Protocol.
662  /// Bit 3 - Storage Protocol.
663  /// Bit 4 - Network Protocol.
664  /// All other bits are reserved.
665  ///
667  ///
668  /// 128-bit Global Identifier for remote fabric port.
669  ///
670  UINT8 PortGid[16];
671  ///
672  /// 64-bit unique identifier to remote IOC or server process.
673  /// Interpretation of field specified by Resource Flags (bit 0).
674  ///
676  ///
677  /// 64-bit persistent ID of remote IOC port.
678  ///
680  ///
681  /// 64-bit persistent ID of remote device.
682  ///
685 
686 #define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01
687 #define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02
688 #define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04
689 #define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08
690 #define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10
691 
692 ///
693 /// UART Device Path SubType.
694 ///
695 #define MSG_UART_DP 0x0e
696 typedef struct {
698  ///
699  /// Reserved.
700  ///
702  ///
703  /// The baud rate setting for the UART style device. A value of 0
704  /// means that the device's default baud rate will be used.
705  ///
707  ///
708  /// The number of data bits for the UART style device. A value
709  /// of 0 means that the device's default number of data bits will be used.
710  ///
712  ///
713  /// The parity setting for the UART style device.
714  /// Parity 0x00 - Default Parity.
715  /// Parity 0x01 - No Parity.
716  /// Parity 0x02 - Even Parity.
717  /// Parity 0x03 - Odd Parity.
718  /// Parity 0x04 - Mark Parity.
719  /// Parity 0x05 - Space Parity.
720  ///
722  ///
723  /// The number of stop bits for the UART style device.
724  /// Stop Bits 0x00 - Default Stop Bits.
725  /// Stop Bits 0x01 - 1 Stop Bit.
726  /// Stop Bits 0x02 - 1.5 Stop Bits.
727  /// Stop Bits 0x03 - 2 Stop Bits.
728  ///
731 
732 ///
733 /// NVDIMM Namespace Device Path SubType.
734 ///
735 #define NVDIMM_NAMESPACE_DP 0x20
736 typedef struct {
738  ///
739  /// Namespace unique label identifier UUID.
740  ///
743 
744 //
745 // Use VENDOR_DEVICE_PATH struct
746 //
747 #define MSG_VENDOR_DP 0x0a
749 
750 #define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID
751 #define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID
752 #define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
753 #define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID
754 
755 ///
756 /// A new device path node is defined to declare flow control characteristics.
757 /// UART Flow Control Messaging Device Path
758 ///
759 typedef struct {
761  ///
762  /// DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL GUID.
763  ///
765  ///
766  /// Bitmap of supported flow control types.
767  /// Bit 0 set indicates hardware flow control.
768  /// Bit 1 set indicates Xon/Xoff flow control.
769  /// All other bits are reserved and are clear.
770  ///
773 
774 #define UART_FLOW_CONTROL_HARDWARE 0x00000001
775 #define UART_FLOW_CONTROL_XON_XOFF 0x00000010
776 
777 #define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID
778 ///
779 /// Serial Attached SCSI (SAS) Device Path.
780 ///
781 typedef struct {
783  ///
784  /// DEVICE_PATH_MESSAGING_SAS GUID.
785  ///
787  ///
788  /// Reserved for future use.
789  ///
791  ///
792  /// SAS Address for Serial Attached SCSI Target.
793  ///
795  ///
796  /// SAS Logical Unit Number.
797  ///
799  ///
800  /// More Information about the device and its interconnect.
801  ///
803  ///
804  /// Relative Target Port (RTP).
805  ///
808 
809 ///
810 /// Serial Attached SCSI (SAS) Ex Device Path SubType
811 ///
812 #define MSG_SASEX_DP 0x16
813 typedef struct {
815  ///
816  /// 8-byte array of the SAS Address for Serial Attached SCSI Target Port.
817  ///
818  UINT8 SasAddress[8];
819  ///
820  /// 8-byte array of the SAS Logical Unit Number.
821  ///
822  UINT8 Lun[8];
823  ///
824  /// More Information about the device and its interconnect.
825  ///
827  ///
828  /// Relative Target Port (RTP).
829  ///
832 
833 ///
834 /// NvmExpress Namespace Device Path SubType.
835 ///
836 #define MSG_NVME_NAMESPACE_DP 0x17
837 typedef struct {
842 
843 ///
844 /// NVMe over Fabric (NVMe-oF) Namespace Device Path SubType.
845 ///
846 #define MSG_NVME_OF_NAMESPACE_DP 0x22
847 typedef struct {
849  ///
850  /// Namespace Identifier Type (NIDT)
851  ///
853  ///
854  /// Namespace Identifier (NID)
855  ///
856  UINT8 NamespaceId[16];
857  ///
858  /// Unique identifier of an NVM subsystem
859  ///
860  CHAR8 SubsystemNqn[];
862 
863 ///
864 /// DNS Device Path SubType
865 ///
866 #define MSG_DNS_DP 0x1F
867 typedef struct {
869  ///
870  /// Indicates the DNS server address is IPv4 or IPv6 address.
871  ///
873  ///
874  /// Instance of the DNS server address.
875  ///
876  EFI_IP_ADDRESS DnsServerIp[];
878 
879 ///
880 /// Uniform Resource Identifiers (URI) Device Path SubType
881 ///
882 #define MSG_URI_DP 0x18
883 typedef struct {
885  ///
886  /// Instance of the URI pursuant to RFC 3986.
887  ///
888  CHAR8 Uri[];
890 
891 ///
892 /// Universal Flash Storage (UFS) Device Path SubType.
893 ///
894 #define MSG_UFS_DP 0x19
895 typedef struct {
897  ///
898  /// Target ID on the UFS bus (PUN).
899  ///
901  ///
902  /// Logical Unit Number (LUN).
903  ///
906 
907 ///
908 /// SD (Secure Digital) Device Path SubType.
909 ///
910 #define MSG_SD_DP 0x1A
911 typedef struct {
915 
916 ///
917 /// EMMC (Embedded MMC) Device Path SubType.
918 ///
919 #define MSG_EMMC_DP 0x1D
920 typedef struct {
924 
925 ///
926 /// iSCSI Device Path SubType
927 ///
928 #define MSG_ISCSI_DP 0x13
929 typedef struct {
931  ///
932  /// Network Protocol (0 = TCP, 1+ = reserved).
933  ///
935  ///
936  /// iSCSI Login Options.
937  ///
939  ///
940  /// iSCSI Logical Unit Number.
941  ///
943  ///
944  /// iSCSI Target Portal group tag the initiator intends
945  /// to establish a session with.
946  ///
948  ///
949  /// iSCSI NodeTarget Name. The length of the name
950  /// is determined by subtracting the offset of this field from Length.
951  ///
952  /// CHAR8 iSCSI Target Name.
954 
955 #define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000
956 #define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002
957 #define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000
958 #define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008
959 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000
960 #define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000
961 #define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000
962 #define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000
963 
964 ///
965 /// VLAN Device Path SubType.
966 ///
967 #define MSG_VLAN_DP 0x14
968 typedef struct {
970  ///
971  /// VLAN identifier (0-4094).
972  ///
975 
976 ///
977 /// Bluetooth Device Path SubType.
978 ///
979 #define MSG_BLUETOOTH_DP 0x1b
980 typedef struct {
982  ///
983  /// 48bit Bluetooth device address.
984  ///
987 
988 ///
989 /// Wi-Fi Device Path SubType.
990 ///
991 #define MSG_WIFI_DP 0x1C
992 typedef struct {
994  ///
995  /// Service set identifier. A 32-byte octets string.
996  ///
997  UINT8 SSId[32];
999 
1000 ///
1001 /// Bluetooth LE Device Path SubType.
1002 ///
1003 #define MSG_BLUETOOTH_LE_DP 0x1E
1004 typedef struct {
1008 
1009 //
1010 // Media Device Path
1011 //
1012 #define MEDIA_DEVICE_PATH 0x04
1013 
1014 ///
1015 /// Hard Drive Media Device Path SubType.
1016 ///
1017 #define MEDIA_HARDDRIVE_DP 0x01
1018 
1019 ///
1020 /// The Hard Drive Media Device Path is used to represent a partition on a hard drive.
1021 ///
1022 typedef struct {
1024  ///
1025  /// Describes the entry in a partition table, starting with entry 1.
1026  /// Partition number zero represents the entire device. Valid
1027  /// partition numbers for a MBR partition are [1, 4]. Valid
1028  /// partition numbers for a GPT partition are [1, NumberOfPartitionEntries].
1029  ///
1031  ///
1032  /// Starting LBA of the partition on the hard drive.
1033  ///
1035  ///
1036  /// Size of the partition in units of Logical Blocks.
1037  ///
1039  ///
1040  /// Signature unique to this partition:
1041  /// If SignatureType is 0, this field has to be initialized with 16 zeros.
1042  /// If SignatureType is 1, the MBR signature is stored in the first 4 bytes of this field.
1043  /// The other 12 bytes are initialized with zeros.
1044  /// If SignatureType is 2, this field contains a 16 byte signature.
1045  ///
1047  ///
1048  /// Partition Format: (Unused values reserved).
1049  /// 0x01 - PC-AT compatible legacy MBR.
1050  /// 0x02 - GUID Partition Table.
1051  ///
1053  ///
1054  /// Type of Disk Signature: (Unused values reserved).
1055  /// 0x00 - No Disk Signature.
1056  /// 0x01 - 32-bit signature from address 0x1b8 of the type 0x01 MBR.
1057  /// 0x02 - GUID signature.
1058  ///
1061 
1062 #define MBR_TYPE_PCAT 0x01
1063 #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
1064 
1065 #define NO_DISK_SIGNATURE 0x00
1066 #define SIGNATURE_TYPE_MBR 0x01
1067 #define SIGNATURE_TYPE_GUID 0x02
1068 
1069 ///
1070 /// CD-ROM Media Device Path SubType.
1071 ///
1072 #define MEDIA_CDROM_DP 0x02
1073 
1074 ///
1075 /// The CD-ROM Media Device Path is used to define a system partition that exists on a CD-ROM.
1076 ///
1077 typedef struct {
1079  ///
1080  /// Boot Entry number from the Boot Catalog. The Initial/Default entry is defined as zero.
1081  ///
1083  ///
1084  /// Starting RBA of the partition on the medium. CD-ROMs use Relative logical Block Addressing.
1085  ///
1087  ///
1088  /// Size of the partition in units of Blocks, also called Sectors.
1089  ///
1092 
1093 //
1094 // Use VENDOR_DEVICE_PATH struct
1095 //
1096 #define MEDIA_VENDOR_DP 0x03 ///< Media vendor device path subtype.
1097 
1098 ///
1099 /// File Path Media Device Path SubType
1100 ///
1101 #define MEDIA_FILEPATH_DP 0x04
1102 typedef struct {
1104  ///
1105  /// A NULL-terminated Path string including directory and file names.
1106  ///
1107  CHAR16 PathName[1];
1109 
1110 #define SIZE_OF_FILEPATH_DEVICE_PATH OFFSET_OF(FILEPATH_DEVICE_PATH,PathName)
1111 
1112 ///
1113 /// Media Protocol Device Path SubType.
1114 ///
1115 #define MEDIA_PROTOCOL_DP 0x05
1116 
1117 ///
1118 /// The Media Protocol Device Path is used to denote the protocol that is being
1119 /// used in a device path at the location of the path specified.
1120 /// Many protocols are inherent to the style of device path.
1121 ///
1122 typedef struct {
1124  ///
1125  /// The ID of the protocol.
1126  ///
1129 
1130 ///
1131 /// PIWG Firmware File SubType.
1132 ///
1133 #define MEDIA_PIWG_FW_FILE_DP 0x06
1134 
1135 ///
1136 /// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware file.
1137 ///
1138 typedef struct {
1140  ///
1141  /// Firmware file name
1142  ///
1145 
1146 ///
1147 /// PIWG Firmware Volume Device Path SubType.
1148 ///
1149 #define MEDIA_PIWG_FW_VOL_DP 0x07
1150 
1151 ///
1152 /// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware volume.
1153 ///
1154 typedef struct {
1156  ///
1157  /// Firmware volume name.
1158  ///
1161 
1162 ///
1163 /// Media relative offset range device path.
1164 ///
1165 #define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08
1166 
1167 ///
1168 /// Used to describe the offset range of media relative.
1169 ///
1170 typedef struct {
1176 
1177 ///
1178 /// This GUID defines a RAM Disk supporting a raw disk format in volatile memory.
1179 ///
1180 #define EFI_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE
1181 
1183 
1184 ///
1185 /// This GUID defines a RAM Disk supporting an ISO image in volatile memory.
1186 ///
1187 #define EFI_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE
1188 
1190 
1191 ///
1192 /// This GUID defines a RAM Disk supporting a raw disk format in persistent memory.
1193 ///
1194 #define EFI_PERSISTENT_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT
1195 
1197 
1198 ///
1199 /// This GUID defines a RAM Disk supporting an ISO image in persistent memory.
1200 ///
1201 #define EFI_PERSISTENT_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT
1202 
1204 
1205 ///
1206 /// Media ram disk device path.
1207 ///
1208 #define MEDIA_RAM_DISK_DP 0x09
1209 
1210 ///
1211 /// Used to describe the ram disk device path.
1212 ///
1213 typedef struct {
1215  ///
1216  /// Starting Memory Address.
1217  ///
1218  UINT32 StartingAddr[2];
1219  ///
1220  /// Ending Memory Address.
1221  ///
1222  UINT32 EndingAddr[2];
1223  ///
1224  /// GUID that defines the type of the RAM Disk.
1225  ///
1227  ///
1228  /// RAM Diskinstance number, if supported. The default value is zero.
1229  ///
1232 
1233 ///
1234 /// BIOS Boot Specification Device Path.
1235 ///
1236 #define BBS_DEVICE_PATH 0x05
1237 
1238 ///
1239 /// BIOS Boot Specification Device Path SubType.
1240 ///
1241 #define BBS_BBS_DP 0x01
1242 
1243 ///
1244 /// This Device Path is used to describe the booting of non-EFI-aware operating systems.
1245 ///
1246 typedef struct {
1248  ///
1249  /// Device Type as defined by the BIOS Boot Specification.
1250  ///
1252  ///
1253  /// Status Flags as defined by the BIOS Boot Specification.
1254  ///
1256  ///
1257  /// Null-terminated ASCII string that describes the boot device to a user.
1258  ///
1259  CHAR8 String[1];
1261 
1262 //
1263 // DeviceType definitions - from BBS specification
1264 //
1265 #define BBS_TYPE_FLOPPY 0x01
1266 #define BBS_TYPE_HARDDRIVE 0x02
1267 #define BBS_TYPE_CDROM 0x03
1268 #define BBS_TYPE_PCMCIA 0x04
1269 #define BBS_TYPE_USB 0x05
1270 #define BBS_TYPE_EMBEDDED_NETWORK 0x06
1271 #define BBS_TYPE_BEV 0x80
1272 #define BBS_TYPE_UNKNOWN 0xFF
1273 
1274 ///
1275 /// Union of all possible Device Paths and pointers to Device Paths.
1276 ///
1277 typedef union {
1283 
1289 
1295 
1323 
1326 
1332 } EFI_DEV_PATH;
1333 
1334 typedef union {
1340 
1346 
1352 
1380 
1383 
1391 
1392 #pragma pack()
1393 
1394 #define END_DEVICE_PATH_TYPE 0x7f
1395 #define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xFF
1396 #define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01
1397 
1399 
1400 #endif
INFINIBAND_DEVICE_PATH * InfiniBand
Definition: DevicePath.h:1364
UINT32 Reserved
Reserved for future use.
Definition: DevicePath.h:790
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:179
VLAN_DEVICE_PATH Vlan
Definition: DevicePath.h:1306
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:896
CONTROLLER_DEVICE_PATH Controller
Definition: DevicePath.h:1284
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:387
UINT8 Parity
The parity setting for the UART style device.
Definition: DevicePath.h:721
UINT32 MemoryType
EFI_MEMORY_TYPE.
Definition: DevicePath.h:122
ACPI_HID_DEVICE_PATH Acpi
Definition: DevicePath.h:1286
UINT16 DeviceType
Device Type as defined by the BIOS Boot Specification.
Definition: DevicePath.h:1251
PCCARD Device Path.
Definition: DevicePath.h:101
NVME_NAMESPACE_DEVICE_PATH NvmeNamespace
Definition: DevicePath.h:1312
UINT32 Reserved
Reserved for the future.
Definition: DevicePath.h:391
DNS_DEVICE_PATH Dns
Definition: DevicePath.h:1314
EFI_GUID Protocol
The ID of the protocol.
Definition: DevicePath.h:1127
ACPI_HID_DEVICE_PATH * Acpi
Definition: DevicePath.h:1343
UINT16 ProductId
Product ID assigned by USB-IF.
Definition: DevicePath.h:449
EFI_GUID FvName
Firmware volume name.
Definition: DevicePath.h:1159
EMMC_DEVICE_PATH * Emmc
Definition: DevicePath.h:1377
UINT16 VendorId
USB vendor id of the device.
Definition: DevicePath.h:484
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:921
EFI_DEVICE_PATH_PROTOCOL DevPath
Definition: DevicePath.h:1278
VENDOR_DEVICE_PATH VENDOR_DEFINED_DEVICE_PATH
Definition: DevicePath.h:748
MAC_ADDR_DEVICE_PATH MacAddr
Definition: DevicePath.h:1303
NVME_OF_NAMESPACE_DEVICE_PATH * NvmeOfNamespace
Definition: DevicePath.h:1370
UINT32 Reserved
Reserved.
Definition: DevicePath.h:701
BLUETOOTH_ADDRESS.
Definition: Bluetooth.h:21
128 bit buffer containing a unique identifier value.
Definition: Base.h:216
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:697
UINT8 IfType
Network interface type(i.e.
Definition: DevicePath.h:563
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:760
UINT8 SignatureType
Type of Disk Signature: (Unused values reserved).
Definition: DevicePath.h:1059
Memory Mapped Device Path.
Definition: DevicePath.h:117
32-byte buffer containing a network Media Access Control address.
Definition: UefiBaseType.h:98
F1394_DEVICE_PATH * F1394
Definition: DevicePath.h:1353
unsigned char BOOLEAN
UART_DEVICE_PATH Uart
Definition: DevicePath.h:1308
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1023
EFI_MAC_ADDRESS MacAddress
The MAC address for a network interface padded with 0s.
Definition: DevicePath.h:559
ACPI_ADR_DEVICE_PATH * AcpiAdr
Definition: DevicePath.h:1345
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:848
SASEX_DEVICE_PATH * SasEx
Definition: DevicePath.h:1368
ISCSI_DEVICE_PATH Iscsi
Definition: DevicePath.h:1292
IPv4_DEVICE_PATH * Ipv4
Definition: DevicePath.h:1361
NVME_OF_NAMESPACE_DEVICE_PATH NvmeOfNamespace
Definition: DevicePath.h:1313
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1171
EFI_IPv4_ADDRESS RemoteIpAddress
The remote IPv4 address.
Definition: DevicePath.h:579
MEDIA_PROTOCOL_DEVICE_PATH * MediaProtocol
Definition: DevicePath.h:1382
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:118
MEDIA_RAM_DISK_DEVICE_PATH * RamDisk
Definition: DevicePath.h:1387
UINT8 Lun
Logical Unit Number for the interface.
Definition: DevicePath.h:507
SAS_DEVICE_PATH Sas
Definition: DevicePath.h:1310
UINT32 FlowControlMap
Bitmap of supported flow control types.
Definition: DevicePath.h:771
unsigned int UINT32
Definition: ProcessorBind.h:99
EFI_DEVICE_PATH_PROTOCOL * DevPath
Definition: DevicePath.h:1335
FIBRECHANNELEX_DEVICE_PATH FibreChannelEx
Definition: DevicePath.h:1294
EFI_GUID Guid
DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL GUID.
Definition: DevicePath.h:764
unsigned short CHAR16
MEDIA_RAM_DISK_DEVICE_PATH RamDisk
Definition: DevicePath.h:1330
SD_DEVICE_PATH Sd
Definition: DevicePath.h:1319
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:656
BOOLEAN StaticIpAddress
0x00 - The Source IP Address was assigned though DHCP.
Definition: DevicePath.h:596
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:102
ACPI 6.0 definitions from the ACPI Specification Revision 6.0 Errata A January, 2016.
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:294
UINT8 DeviceClass
The class code assigned by the USB-IF.
Definition: DevicePath.h:454
SAS_DEVICE_PATH * Sas
Definition: DevicePath.h:1367
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:555
This protocol can be used on any device handle to obtain generic path/location information concerning...
Definition: DevicePath.h:46
UINT8 Lun
Logical Unit Number (LUN).
Definition: DevicePath.h:904
UINT16 LoginOption
iSCSI Login Options.
Definition: DevicePath.h:938
USB_DEVICE_PATH * Usb
Definition: DevicePath.h:1354
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1103
EMMC_DEVICE_PATH Emmc
Definition: DevicePath.h:1320
BLUETOOTH_ADDRESS BD_ADDR
48bit Bluetooth device address.
Definition: DevicePath.h:985
FILE_LICENCE(BSD2_PATENT)
UINT8_t Length
Length of this structure.
Definition: pxe_api.h:70
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:515
WIFI_DEVICE_PATH WiFi
Definition: DevicePath.h:1317
UINT16 HBAPortNumber
The HBA port number that facilitates the connection to the device or a port multiplier.
Definition: DevicePath.h:520
MEMMAP_DEVICE_PATH MemMap
Definition: DevicePath.h:1281
SCSI_DEVICE_PATH * Scsi
Definition: DevicePath.h:1348
UINT8 DeviceSubClass
The subclass code assigned by the USB-IF.
Definition: DevicePath.h:459
unsigned char UINT8
Terminal Device Path Vendor Guid.
UINT64 EFI_PHYSICAL_ADDRESS
64-bit physical memory address.
Definition: UefiBaseType.h:53
UINT32 ResourceFlags
Flags to help identify/manage InfiniBand device path elements: Bit 0 - IOC/Service (0b = IOC,...
Definition: DevicePath.h:666
UINT32 ADR
_ADR value.
Definition: DevicePath.h:281
The _ADR device path is used to contain video output device attributes to support the Graphics Output...
Definition: DevicePath.h:274
UINT8 FunctionNumber
Function Number (0 = First Function).
Definition: DevicePath.h:106
UINT16 InterfaceNumber
USB interface number.
Definition: DevicePath.h:480
UINT32 BootEntry
Boot Entry number from the Boot Catalog.
Definition: DevicePath.h:1082
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:367
UINT16 VendorId
Vendor ID assigned by USB-IF.
Definition: DevicePath.h:444
FIBRECHANNELEX_DEVICE_PATH * FibreChannelEx
Definition: DevicePath.h:1351
EFI_GUID TypeGuid
GUID that defines the type of the RAM Disk.
Definition: DevicePath.h:1226
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:612
EFI_IPv4_ADDRESS GatewayIpAddress
The gateway IP address.
Definition: DevicePath.h:600
UINT8 Device
PCI Device Number.
Definition: DevicePath.h:90
ISCSI_DEVICE_PATH * Iscsi
Definition: DevicePath.h:1349
BLUETOOTH_LE_ADDRESS Address
Definition: DevicePath.h:1006
EFI_GUID Guid
Vendor-assigned GUID that defines the data that follows.
Definition: DevicePath.h:148
UINT16 RelativeTargetPort
Relative Target Port (RTP).
Definition: DevicePath.h:806
UINT32 ControllerNumber
Controller number.
Definition: DevicePath.h:167
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:476
UINT64 Lun
SAS Logical Unit Number.
Definition: DevicePath.h:798
EFI_GUID gEfiPersistentVirtualDiskGuid
USB_WWID_DEVICE_PATH UsbWwid
Definition: DevicePath.h:1300
Union of all possible Device Paths and pointers to Device Paths.
Definition: DevicePath.h:1277
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:351
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:884
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:144
EFI_PHYSICAL_ADDRESS StartingAddress
Starting Memory Address.
Definition: DevicePath.h:126
PCCARD_DEVICE_PATH * PcCard
Definition: DevicePath.h:1337
BLUETOOTH_DEVICE_PATH Bluetooth
Definition: DevicePath.h:1316
MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH Offset
Definition: DevicePath.h:1329
EFI_GUID gEfiDevicePathProtocolGuid
UINT8 SlotNumber
Definition: DevicePath.h:913
DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit
Definition: DevicePath.h:1301
16-byte buffer.
Definition: Base.h:233
ACPI_EXTENDED_HID_DEVICE_PATH * ExtendedAcpi
Definition: DevicePath.h:1344
16-byte buffer aligned on a 4-byte boundary.
Definition: UefiBaseType.h:106
UINT8 InterfaceType
Interface Type.
Definition: DevicePath.h:183
UINT16 Protocol
The network protocol(i.e.
Definition: DevicePath.h:591
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:439
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1005
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:782
BMC_DEVICE_PATH Bmc
Definition: DevicePath.h:1285
The Vendor Device Path allows the creation of vendor-defined Device Paths.
Definition: DevicePath.h:143
UINT8 DeviceProtocol
The protocol code assigned by the USB-IF.
Definition: DevicePath.h:464
Used to describe the offset range of media relative.
Definition: DevicePath.h:1170
UART_DEVICE_PATH * Uart
Definition: DevicePath.h:1365
UINT32 Reserved
Reserved for the future.
Definition: DevicePath.h:371
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:543
UINT8 ParentPortNumber
USB Parent Port Number.
Definition: DevicePath.h:427
4-byte buffer.
Definition: Base.h:226
UINT64 PartitionStart
Starting LBA of the partition on the hard drive.
Definition: DevicePath.h:1034
This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware...
Definition: DevicePath.h:1154
USB_DEVICE_PATH Usb
Definition: DevicePath.h:1297
This Device Path is used to describe the booting of non-EFI-aware operating systems.
Definition: DevicePath.h:1246
UINT16 VlanId
VLAN identifier (0-4094).
Definition: DevicePath.h:973
CDROM_DEVICE_PATH * CD
Definition: DevicePath.h:1379
UINT16 StatusFlag
Status Flags as defined by the BIOS Boot Specification.
Definition: DevicePath.h:1255
FILEPATH_DEVICE_PATH * FilePath
Definition: DevicePath.h:1381
EFI_IPv6_ADDRESS GatewayIpAddress
The gateway IP address.
Definition: DevicePath.h:648
UINT16 LocalPort
The local port number.
Definition: DevicePath.h:624
BLUETOOTH_LE_ADDRESS.
Definition: Bluetooth.h:41
UINT64 Lun
iSCSI Logical Unit Number.
Definition: DevicePath.h:942
I2O_DEVICE_PATH I2O
Definition: DevicePath.h:1302
USB_CLASS_DEVICE_PATH UsbClass
Definition: DevicePath.h:1299
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1155
ATAPI_DEVICE_PATH Atapi
Definition: DevicePath.h:1290
FILEPATH_DEVICE_PATH FilePath
Definition: DevicePath.h:1324
unsigned short UINT16
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:423
UINT8 MBRType
Partition Format: (Unused values reserved).
Definition: DevicePath.h:1052
DNS_DEVICE_PATH * Dns
Definition: DevicePath.h:1371
UINT16 ProductId
USB product id of the device.
Definition: DevicePath.h:488
CONTROLLER_DEVICE_PATH * Controller
Definition: DevicePath.h:1341
UINT8_t Signature[6]
Signature.
Definition: pxe_api.h:61
Serial Attached SCSI (SAS) Device Path.
Definition: DevicePath.h:781
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:275
UINT16 DeviceTopology
More Information about the device and its interconnect.
Definition: DevicePath.h:802
UINT8 InterfaceNumber
USB Interface Number.
Definition: DevicePath.h:431
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1214
UINT16 Lun
Logical Unit Number.
Definition: DevicePath.h:343
The CD-ROM Media Device Path is used to define a system partition that exists on a CD-ROM.
Definition: DevicePath.h:1077
This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware...
Definition: DevicePath.h:1138
UINT32 CID
Device's compatible PnP hardware ID stored in a numeric 32-bit compressed EISA-type ID.
Definition: DevicePath.h:241
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:407
UINT8 Function
PCI Function Number.
Definition: DevicePath.h:86
NVME_NAMESPACE_DEVICE_PATH * NvmeNamespace
Definition: DevicePath.h:1369
UINT32 HID
Device's PnP hardware ID stored in a numeric 32-bit compressed EISA-type ID.
Definition: DevicePath.h:206
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1139
EFI_IPv6_ADDRESS RemoteIpAddress
The remote IPv6 address.
Definition: DevicePath.h:620
UINT64 DeviceId
64-bit persistent ID of remote device.
Definition: DevicePath.h:683
UINT8 SlaveMaster
Set to zero for master, or one for slave mode.
Definition: DevicePath.h:339
UINT8 PrimarySecondary
Set to zero for primary, or one for secondary.
Definition: DevicePath.h:335
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1123
UINT8 Pun
Target ID on the UFS bus (PUN).
Definition: DevicePath.h:900
ACPI_ADR_DEVICE_PATH AcpiAdr
Definition: DevicePath.h:1288
SATA_DEVICE_PATH * Sata
Definition: DevicePath.h:1355
F1394_DEVICE_PATH F1394
Definition: DevicePath.h:1296
This file contains the Bluetooth definitions that are consumed by drivers.
UINT64 PartitionSize
Size of the partition in units of Logical Blocks.
Definition: DevicePath.h:1038
UINT16 Protocol
The network protocol(i.e.
Definition: DevicePath.h:632
PCI_DEVICE_PATH Pci
Definition: DevicePath.h:1279
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:331
unsigned long long UINT64
Definition: ProcessorBind.h:97
CDROM_DEVICE_PATH CD
Definition: DevicePath.h:1322
FIBRECHANNEL_DEVICE_PATH FibreChannel
Definition: DevicePath.h:1293
Used to describe the ram disk device path.
Definition: DevicePath.h:1213
UINT16 RemotePort
The remote port number.
Definition: DevicePath.h:628
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:868
UINT64 PartitionStart
Starting RBA of the partition on the medium.
Definition: DevicePath.h:1086
URI_DEVICE_PATH * Uri
Definition: DevicePath.h:1372
MAC_ADDR_DEVICE_PATH * MacAddr
Definition: DevicePath.h:1360
EFI_PHYSICAL_ADDRESS EndingAddress
Ending Memory Address.
Definition: DevicePath.h:130
UINT16 LocalPort
The local port number.
Definition: DevicePath.h:583
UINT32 PartitionNumber
Describes the entry in a partition table, starting with entry 1.
Definition: DevicePath.h:1030
INFINIBAND_DEVICE_PATH InfiniBand
Definition: DevicePath.h:1307
EFI_GUID Uuid
Namespace unique label identifier UUID.
Definition: DevicePath.h:741
UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl
Definition: DevicePath.h:1309
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:571
UINT64 TargetPortId
64-bit persistent ID of remote IOC port.
Definition: DevicePath.h:679
HARDDRIVE_DEVICE_PATH HardDrive
Definition: DevicePath.h:1321
USB_CLASS_DEVICE_PATH * UsbClass
Definition: DevicePath.h:1356
MEDIA_FW_VOL_DEVICE_PATH * FirmwareVolume
Definition: DevicePath.h:1384
UINT64 ServiceId
64-bit unique identifier to remote IOC or server process.
Definition: DevicePath.h:675
IPv6_DEVICE_PATH Ipv6
Definition: DevicePath.h:1305
EFI_GUID gEfiVirtualDiskGuid
ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi
Definition: DevicePath.h:1287
IPv6_DEVICE_PATH * Ipv6
Definition: DevicePath.h:1362
PCI Device Path.
Definition: DevicePath.h:81
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:969
UINT8 StopBits
The number of stop bits for the UART style device.
Definition: DevicePath.h:729
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1078
I2O_DEVICE_PATH * I2O
Definition: DevicePath.h:1359
UINT16 BaseAddress
Definition: Acpi10.h:195
ATAPI_DEVICE_PATH * Atapi
Definition: DevicePath.h:1347
The Media Protocol Device Path is used to denote the protocol that is being used in a device path at ...
Definition: DevicePath.h:1122
MEMMAP_DEVICE_PATH * MemMap
Definition: DevicePath.h:1338
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:1247
UINT32 UID
Unique ID that is required by ACPI if two devices have the same _HID.
Definition: DevicePath.h:234
char CHAR8
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:737
UINT8 PrefixLength
The prefix length.
Definition: DevicePath.h:644
UINT16 RemotePort
The remote port number.
Definition: DevicePath.h:587
Controller Device Path.
Definition: DevicePath.h:162
UINT8 SubType
Varies by Type 0xFF End Entire Device Path, or 0x01 End This Instance of a Device Path and start a ne...
Definition: DevicePath.h:54
MEDIA_FW_VOL_FILEPATH_DEVICE_PATH * FirmwareFile
Definition: DevicePath.h:1385
WIFI_DEVICE_PATH * WiFi
Definition: DevicePath.h:1374
The Hard Drive Media Device Path is used to represent a partition on a hard drive.
Definition: DevicePath.h:1022
UINT16 Pun
Target ID on the SCSI bus (PUN).
Definition: DevicePath.h:355
SASEX_DEVICE_PATH SasEx
Definition: DevicePath.h:1311
BMC_DEVICE_PATH * Bmc
Definition: DevicePath.h:1342
EFI_IPv6_ADDRESS LocalIpAddress
The local IPv6 address.
Definition: DevicePath.h:616
UINT16 Lun
Logical Unit Number (LUN).
Definition: DevicePath.h:359
UINT16 TargetPortalGroupTag
iSCSI Target Portal group tag the initiator intends to establish a session with.
Definition: DevicePath.h:947
UINT64 WWN
Fibre Channel World Wide Number.
Definition: DevicePath.h:375
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:200
A new device path node is defined to declare flow control characteristics.
Definition: DevicePath.h:759
SATA_DEVICE_PATH Sata
Definition: DevicePath.h:1298
VLAN_DEVICE_PATH * Vlan
Definition: DevicePath.h:1363
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:993
EFI_GUID FvFileName
Firmware file name.
Definition: DevicePath.h:1143
SCSI_DEVICE_PATH Scsi
Definition: DevicePath.h:1291
PCI_DEVICE_PATH * Pci
Definition: DevicePath.h:1336
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:503
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:82
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:163
VENDOR_DEVICE_PATH Vendor
Definition: DevicePath.h:1282
UINT32 NFITDeviceHandle
NFIT Device Handle, the _ADR of the NVDIMM device.
Definition: DevicePath.h:299
EFI_GUID gEfiVirtualCdGuid
EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH
Device Path protocol definition for backward-compatible with EFI1.1.
Definition: DevicePath.h:66
UINT8 Type
0x01 Hardware Device Path.
Definition: DevicePath.h:47
UINT16 DeviceTopology
More Information about the device and its interconnect.
Definition: DevicePath.h:826
UINT16 PortMultiplierPortNumber
The Port multiplier port number that facilitates the connection to the device.
Definition: DevicePath.h:526
UINT32 HID
Device's PnP hardware ID stored in a numeric 32-bit compressed EISA-type ID.
Definition: DevicePath.h:228
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:222
EFI_GUID Guid
DEVICE_PATH_MESSAGING_SAS GUID.
Definition: DevicePath.h:786
VENDOR_DEVICE_PATH * Vendor
Definition: DevicePath.h:1339
UINT64 BaudRate
The baud rate setting for the UART style device.
Definition: DevicePath.h:706
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:981
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:912
BBS_BBS_DEVICE_PATH * Bbs
Definition: DevicePath.h:1388
PCCARD_DEVICE_PATH PcCard
Definition: DevicePath.h:1280
UFS_DEVICE_PATH * Ufs
Definition: DevicePath.h:1375
UINT16 RelativeTargetPort
Relative Target Port (RTP).
Definition: DevicePath.h:830
UINT8 NamespaceIdType
Namespace Identifier Type (NIDT)
Definition: DevicePath.h:852
MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol
Definition: DevicePath.h:1325
UINT64 PartitionSize
Size of the partition in units of Blocks, also called Sectors.
Definition: DevicePath.h:1090
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:814
UINT16 Instance
RAM Diskinstance number, if supported.
Definition: DevicePath.h:1230
UINT8 IpAddressOrigin
0x00 - The Local IP Address was manually configured.
Definition: DevicePath.h:640
UINT8 IsIPv6
Indicates the DNS server address is IPv4 or IPv6 address.
Definition: DevicePath.h:872
UFS_DEVICE_PATH Ufs
Definition: DevicePath.h:1318
UINT32 UID
Unique ID that is required by ACPI if two devices have the same _HID.
Definition: DevicePath.h:214
This device path describes a USB device using its serial number.
Definition: DevicePath.h:475
HARDDRIVE_DEVICE_PATH * HardDrive
Definition: DevicePath.h:1378
UINT64 SasAddress
SAS Address for Serial Attached SCSI Target.
Definition: DevicePath.h:794
FILE_SECBOOT(PERMITTED)
UINT64 Lun
Fibre Channel Logical Unit Number.
Definition: DevicePath.h:379
BLUETOOTH_DEVICE_PATH * Bluetooth
Definition: DevicePath.h:1373
BMC Device Path.
Definition: DevicePath.h:178
UINT32 Tid
Target ID (TID) for a device.
Definition: DevicePath.h:547
UINT16 Lun
Logical Unit Number.
Definition: DevicePath.h:530
EFI_IPv4_ADDRESS LocalIpAddress
The local IPv4 address.
Definition: DevicePath.h:575
UINT8 DataBits
The number of data bits for the UART style device.
Definition: DevicePath.h:711
FIBRECHANNEL_DEVICE_PATH * FibreChannel
Definition: DevicePath.h:1350
EFI_GUID gEfiPersistentVirtualCdGuid
UINT16 NetworkProtocol
Network Protocol (0 = TCP, 1+ = reserved).
Definition: DevicePath.h:934
SD_DEVICE_PATH * Sd
Definition: DevicePath.h:1376
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:930
URI_DEVICE_PATH Uri
Definition: DevicePath.h:1315
MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH * Offset
Definition: DevicePath.h:1386
MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FirmwareFile
Definition: DevicePath.h:1328
EFI_DEVICE_PATH_PROTOCOL Header
Definition: DevicePath.h:838
BBS_BBS_DEVICE_PATH Bbs
Definition: DevicePath.h:1331
UART_FLOW_CONTROL_DEVICE_PATH * UartFlowControl
Definition: DevicePath.h:1366
USB_WWID_DEVICE_PATH * UsbWwid
Definition: DevicePath.h:1357
IPv4_DEVICE_PATH Ipv4
Definition: DevicePath.h:1304
UINT64 Guid
1394 Global Unique ID (GUID).
Definition: DevicePath.h:415
UINT32 Reserved
Reserved for the future.
Definition: DevicePath.h:411
MEDIA_FW_VOL_DEVICE_PATH FirmwareVolume
Definition: DevicePath.h:1327
DEVICE_LOGICAL_UNIT_DEVICE_PATH * LogicUnit
Definition: DevicePath.h:1358
EFI_IPv4_ADDRESS SubnetMask
The subnet mask.
Definition: DevicePath.h:604