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