Home | History | Annotate | Line # | Download | only in inc
      1      1.1  jakllsch /*	$NetBSD: efidevp.h,v 1.1.1.3 2021/09/30 18:50:09 jmcneill Exp $	*/
      2      1.1  jakllsch 
      3      1.1  jakllsch #ifndef _DEVPATH_H
      4      1.1  jakllsch #define _DEVPATH_H
      5      1.1  jakllsch 
      6      1.1  jakllsch /*++
      7      1.1  jakllsch 
      8      1.1  jakllsch Copyright (c) 1998  Intel Corporation
      9      1.1  jakllsch 
     10      1.1  jakllsch Module Name:
     11      1.1  jakllsch 
     12      1.1  jakllsch     devpath.h
     13      1.1  jakllsch 
     14      1.1  jakllsch Abstract:
     15      1.1  jakllsch 
     16      1.1  jakllsch     Defines for parsing the EFI Device Path structures
     17      1.1  jakllsch 
     18      1.1  jakllsch 
     19      1.1  jakllsch 
     20      1.1  jakllsch Revision History
     21      1.1  jakllsch 
     22      1.1  jakllsch --*/
     23      1.1  jakllsch 
     24      1.1  jakllsch //
     25      1.1  jakllsch // Device Path structures - Section C
     26      1.1  jakllsch //
     27      1.1  jakllsch 
     28  1.1.1.2  jmcneill typedef struct _EFI_DEVICE_PATH_PROTOCOL {
     29      1.1  jakllsch         UINT8                           Type;
     30      1.1  jakllsch         UINT8                           SubType;
     31      1.1  jakllsch         UINT8                           Length[2];
     32  1.1.1.2  jmcneill } EFI_DEVICE_PATH_PROTOCOL;
     33  1.1.1.2  jmcneill 
     34  1.1.1.2  jmcneill typedef struct _EFI_DEVICE_PATH_PROTOCOL _EFI_DEVICE_PATH;
     35  1.1.1.2  jmcneill typedef EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH;
     36      1.1  jakllsch 
     37      1.1  jakllsch #define EFI_DP_TYPE_MASK                    0x7F
     38      1.1  jakllsch #define EFI_DP_TYPE_UNPACKED                0x80
     39      1.1  jakllsch 
     40      1.1  jakllsch //#define END_DEVICE_PATH_TYPE                0xff
     41      1.1  jakllsch #define END_DEVICE_PATH_TYPE                0x7f
     42      1.1  jakllsch //#define END_DEVICE_PATH_TYPE_UNPACKED       0x7f
     43      1.1  jakllsch 
     44      1.1  jakllsch #define END_ENTIRE_DEVICE_PATH_SUBTYPE      0xff
     45      1.1  jakllsch #define END_INSTANCE_DEVICE_PATH_SUBTYPE    0x01
     46  1.1.1.2  jmcneill #define END_DEVICE_PATH_LENGTH              (sizeof(EFI_DEVICE_PATH_PROTOCOL))
     47      1.1  jakllsch 
     48      1.1  jakllsch 
     49      1.1  jakllsch #define DP_IS_END_TYPE(a)
     50      1.1  jakllsch #define DP_IS_END_SUBTYPE(a)        ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
     51      1.1  jakllsch 
     52      1.1  jakllsch #define DevicePathType(a)           ( ((a)->Type) & EFI_DP_TYPE_MASK )
     53      1.1  jakllsch #define DevicePathSubType(a)        ( (a)->SubType )
     54      1.1  jakllsch #define DevicePathNodeLength(a)     ( ((a)->Length[0]) | ((a)->Length[1] << 8) )
     55  1.1.1.2  jmcneill #define NextDevicePathNode(a)       ( (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
     56      1.1  jakllsch //#define IsDevicePathEndType(a)      ( DevicePathType(a) == END_DEVICE_PATH_TYPE_UNPACKED )
     57      1.1  jakllsch #define IsDevicePathEndType(a)      ( DevicePathType(a) == END_DEVICE_PATH_TYPE )
     58      1.1  jakllsch #define IsDevicePathEndSubType(a)   ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
     59      1.1  jakllsch #define IsDevicePathEnd(a)          ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) )
     60      1.1  jakllsch #define IsDevicePathUnpacked(a)     ( (a)->Type & EFI_DP_TYPE_UNPACKED )
     61      1.1  jakllsch 
     62      1.1  jakllsch 
     63      1.1  jakllsch #define SetDevicePathNodeLength(a,l) {                  \
     64      1.1  jakllsch             (a)->Length[0] = (UINT8) (l);               \
     65      1.1  jakllsch             (a)->Length[1] = (UINT8) ((l) >> 8);        \
     66      1.1  jakllsch             }
     67      1.1  jakllsch 
     68      1.1  jakllsch #define SetDevicePathEndNode(a)  {                      \
     69      1.1  jakllsch             (a)->Type = END_DEVICE_PATH_TYPE;           \
     70      1.1  jakllsch             (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE;     \
     71  1.1.1.2  jmcneill             (a)->Length[0] = sizeof(EFI_DEVICE_PATH_PROTOCOL); \
     72      1.1  jakllsch             (a)->Length[1] = 0;                         \
     73      1.1  jakllsch             }
     74      1.1  jakllsch 
     75      1.1  jakllsch 
     76      1.1  jakllsch /*
     77  1.1.1.2  jmcneill  * Hardware Device Path (UEFI 2.4 specification, version 2.4  9.3.2.)
     78      1.1  jakllsch  */
     79  1.1.1.2  jmcneill 
     80      1.1  jakllsch #define HARDWARE_DEVICE_PATH            0x01
     81      1.1  jakllsch 
     82      1.1  jakllsch #define HW_PCI_DP                       0x01
     83      1.1  jakllsch typedef struct _PCI_DEVICE_PATH {
     84  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
     85      1.1  jakllsch         UINT8                           Function;
     86      1.1  jakllsch         UINT8                           Device;
     87      1.1  jakllsch } PCI_DEVICE_PATH;
     88      1.1  jakllsch 
     89      1.1  jakllsch #define HW_PCCARD_DP                    0x02
     90      1.1  jakllsch typedef struct _PCCARD_DEVICE_PATH {
     91  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
     92  1.1.1.2  jmcneill         UINT8                           FunctionNumber ;
     93      1.1  jakllsch } PCCARD_DEVICE_PATH;
     94      1.1  jakllsch 
     95      1.1  jakllsch #define HW_MEMMAP_DP                    0x03
     96      1.1  jakllsch typedef struct _MEMMAP_DEVICE_PATH {
     97  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
     98      1.1  jakllsch         UINT32                          MemoryType;
     99      1.1  jakllsch         EFI_PHYSICAL_ADDRESS            StartingAddress;
    100      1.1  jakllsch         EFI_PHYSICAL_ADDRESS            EndingAddress;
    101      1.1  jakllsch } MEMMAP_DEVICE_PATH;
    102      1.1  jakllsch 
    103      1.1  jakllsch #define HW_VENDOR_DP                    0x04
    104      1.1  jakllsch typedef struct _VENDOR_DEVICE_PATH {
    105  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    106      1.1  jakllsch         EFI_GUID                        Guid;
    107      1.1  jakllsch } VENDOR_DEVICE_PATH;
    108      1.1  jakllsch 
    109      1.1  jakllsch #define UNKNOWN_DEVICE_GUID \
    110      1.1  jakllsch     { 0xcf31fac5, 0xc24e, 0x11d2,  {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b}  }
    111      1.1  jakllsch 
    112      1.1  jakllsch typedef struct _UKNOWN_DEVICE_VENDOR_DP {
    113      1.1  jakllsch     VENDOR_DEVICE_PATH      DevicePath;
    114      1.1  jakllsch     UINT8                   LegacyDriveLetter;
    115      1.1  jakllsch } UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
    116      1.1  jakllsch 
    117      1.1  jakllsch #define HW_CONTROLLER_DP            0x05
    118      1.1  jakllsch typedef struct _CONTROLLER_DEVICE_PATH {
    119  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL  Header;
    120  1.1.1.2  jmcneill         UINT32                    Controller;
    121      1.1  jakllsch } CONTROLLER_DEVICE_PATH;
    122      1.1  jakllsch 
    123  1.1.1.2  jmcneill 
    124      1.1  jakllsch /*
    125  1.1.1.2  jmcneill  * ACPI Device Path (UEFI 2.4 specification, version 2.4  9.3.3 and 9.3.4.)
    126      1.1  jakllsch  */
    127  1.1.1.3  jmcneill #define ACPI_DEVICE_PATH                0x02
    128      1.1  jakllsch 
    129      1.1  jakllsch #define ACPI_DP                         0x01
    130      1.1  jakllsch typedef struct _ACPI_HID_DEVICE_PATH {
    131  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    132      1.1  jakllsch         UINT32                          HID;
    133      1.1  jakllsch         UINT32                          UID;
    134      1.1  jakllsch } ACPI_HID_DEVICE_PATH;
    135      1.1  jakllsch 
    136  1.1.1.3  jmcneill #define EXPANDED_ACPI_DP                0x02
    137      1.1  jakllsch typedef struct _EXPANDED_ACPI_HID_DEVICE_PATH {
    138  1.1.1.3  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    139  1.1.1.3  jmcneill         UINT32                          HID;
    140  1.1.1.3  jmcneill         UINT32                          UID;
    141  1.1.1.3  jmcneill         UINT32                          CID;
    142  1.1.1.3  jmcneill         UINT8                           HidStr[1];
    143      1.1  jakllsch } EXPANDED_ACPI_HID_DEVICE_PATH;
    144      1.1  jakllsch 
    145  1.1.1.2  jmcneill #define ACPI_ADR_DP 3
    146  1.1.1.2  jmcneill typedef struct _ACPI_ADR_DEVICE_PATH {
    147  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    148  1.1.1.2  jmcneill     UINT32 ADR ;
    149  1.1.1.2  jmcneill } ACPI_ADR_DEVICE_PATH ;
    150  1.1.1.2  jmcneill 
    151      1.1  jakllsch //
    152      1.1  jakllsch // EISA ID Macro
    153      1.1  jakllsch // EISA ID Definition 32-bits
    154      1.1  jakllsch //  bits[15:0] - three character compressed ASCII EISA ID.
    155      1.1  jakllsch //  bits[31:16] - binary number
    156      1.1  jakllsch //   Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
    157      1.1  jakllsch //
    158  1.1.1.2  jmcneill #define PNP_EISA_ID_CONST       0x41d0
    159  1.1.1.2  jmcneill #define EISA_ID(_Name, _Num)    ((UINT32) ((_Name) | (_Num) << 16))
    160      1.1  jakllsch #define EISA_PNP_ID(_PNPId)     (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
    161      1.1  jakllsch 
    162      1.1  jakllsch #define PNP_EISA_ID_MASK        0xffff
    163      1.1  jakllsch #define EISA_ID_TO_NUM(_Id)     ((_Id) >> 16)
    164  1.1.1.2  jmcneill 
    165  1.1.1.2  jmcneill 
    166      1.1  jakllsch /*
    167  1.1.1.2  jmcneill  * Messaging Device Path (UEFI 2.4 specification, version 2.4  9.3.5.)
    168      1.1  jakllsch  */
    169  1.1.1.2  jmcneill #define MESSAGING_DEVICE_PATH           0x03
    170      1.1  jakllsch 
    171      1.1  jakllsch #define MSG_ATAPI_DP                    0x01
    172      1.1  jakllsch typedef struct _ATAPI_DEVICE_PATH {
    173  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    174      1.1  jakllsch         UINT8                           PrimarySecondary;
    175      1.1  jakllsch         UINT8                           SlaveMaster;
    176      1.1  jakllsch         UINT16                          Lun;
    177      1.1  jakllsch } ATAPI_DEVICE_PATH;
    178      1.1  jakllsch 
    179      1.1  jakllsch #define MSG_SCSI_DP                     0x02
    180      1.1  jakllsch typedef struct _SCSI_DEVICE_PATH {
    181  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    182      1.1  jakllsch         UINT16                          Pun;
    183  1.1.1.2  jmcneill         UINT16                          Lun;
    184      1.1  jakllsch } SCSI_DEVICE_PATH;
    185      1.1  jakllsch 
    186      1.1  jakllsch #define MSG_FIBRECHANNEL_DP             0x03
    187      1.1  jakllsch typedef struct _FIBRECHANNEL_DEVICE_PATH {
    188  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    189      1.1  jakllsch         UINT32                          Reserved;
    190      1.1  jakllsch         UINT64                          WWN;
    191      1.1  jakllsch         UINT64                          Lun;
    192      1.1  jakllsch } FIBRECHANNEL_DEVICE_PATH;
    193      1.1  jakllsch 
    194  1.1.1.2  jmcneill /**
    195  1.1.1.2  jmcneill  * Fibre Channel Ex SubType.
    196  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.5.6.
    197  1.1.1.2  jmcneill  */
    198  1.1.1.2  jmcneill #define MSG_FIBRECHANNELEX_DP 21
    199  1.1.1.2  jmcneill typedef struct _FIBRECHANNELEX_DEVICE_PATH {
    200  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    201  1.1.1.2  jmcneill     UINT32 Reserved ;
    202  1.1.1.2  jmcneill     UINT8 WWN[ 8 ] ; /* World Wide Name */
    203  1.1.1.2  jmcneill     UINT8 Lun[ 8 ] ; /* Logical unit, T-10 SCSI Architecture Model 4 specification */
    204  1.1.1.2  jmcneill } FIBRECHANNELEX_DEVICE_PATH ;
    205  1.1.1.2  jmcneill 
    206      1.1  jakllsch #define MSG_1394_DP                     0x04
    207      1.1  jakllsch typedef struct _F1394_DEVICE_PATH {
    208  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    209      1.1  jakllsch         UINT32                          Reserved;
    210      1.1  jakllsch         UINT64                          Guid;
    211      1.1  jakllsch } F1394_DEVICE_PATH;
    212      1.1  jakllsch 
    213      1.1  jakllsch #define MSG_USB_DP                      0x05
    214      1.1  jakllsch typedef struct _USB_DEVICE_PATH {
    215  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    216      1.1  jakllsch         UINT8                           Port;
    217      1.1  jakllsch         UINT8                           Endpoint;
    218      1.1  jakllsch } USB_DEVICE_PATH;
    219      1.1  jakllsch 
    220  1.1.1.2  jmcneill /**
    221  1.1.1.2  jmcneill  * SATA Device Path SubType.
    222  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.5.6.
    223  1.1.1.2  jmcneill  */
    224  1.1.1.2  jmcneill #define MSG_SATA_DP 18
    225  1.1.1.2  jmcneill typedef struct _SATA_DEVICE_PATH {
    226  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    227  1.1.1.2  jmcneill     UINT16 HBAPortNumber ;
    228  1.1.1.2  jmcneill     UINT16 PortMultiplierPortNumber ;
    229  1.1.1.2  jmcneill     UINT16 Lun ; /* Logical Unit Number */
    230  1.1.1.2  jmcneill } SATA_DEVICE_PATH ;
    231  1.1.1.2  jmcneill 
    232  1.1.1.2  jmcneill /**
    233  1.1.1.2  jmcneill  * USB WWID Device Path SubType.
    234  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.5.7.
    235  1.1.1.2  jmcneill  */
    236  1.1.1.2  jmcneill #define MSG_USB_WWID_DP 16
    237  1.1.1.2  jmcneill typedef struct _USB_WWID_DEVICE_PATH {
    238  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    239  1.1.1.2  jmcneill     UINT16 InterfaceNumber ;
    240  1.1.1.2  jmcneill     UINT16 VendorId ;
    241  1.1.1.2  jmcneill     UINT16 ProductId ;
    242  1.1.1.2  jmcneill     CHAR16 SerialNumber[ 1 ] ; /* UTF-16 characters of the USB serial number */
    243  1.1.1.2  jmcneill } USB_WWID_DEVICE_PATH ;
    244  1.1.1.2  jmcneill 
    245  1.1.1.2  jmcneill /**
    246  1.1.1.2  jmcneill  * Device Logical Unit SubType.
    247  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.5.8.
    248  1.1.1.2  jmcneill  */
    249  1.1.1.2  jmcneill #define MSG_DEVICE_LOGICAL_UNIT_DP 17
    250  1.1.1.2  jmcneill typedef struct _DEVICE_LOGICAL_UNIT_DEVICE_PATH {
    251  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    252  1.1.1.2  jmcneill     UINT8 Lun ; /* Logical Unit Number */
    253  1.1.1.2  jmcneill } DEVICE_LOGICAL_UNIT_DEVICE_PATH ;
    254  1.1.1.2  jmcneill 
    255      1.1  jakllsch #define MSG_USB_CLASS_DP                0x0F
    256      1.1  jakllsch typedef struct _USB_CLASS_DEVICE_PATH {
    257  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    258      1.1  jakllsch         UINT16                          VendorId;
    259      1.1  jakllsch         UINT16                          ProductId;
    260      1.1  jakllsch         UINT8                           DeviceClass;
    261      1.1  jakllsch         UINT8                           DeviceSubclass;
    262      1.1  jakllsch         UINT8                           DeviceProtocol;
    263      1.1  jakllsch } USB_CLASS_DEVICE_PATH;
    264      1.1  jakllsch 
    265      1.1  jakllsch #define MSG_I2O_DP                      0x06
    266      1.1  jakllsch typedef struct _I2O_DEVICE_PATH {
    267  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    268      1.1  jakllsch         UINT32                          Tid;
    269      1.1  jakllsch } I2O_DEVICE_PATH;
    270      1.1  jakllsch 
    271      1.1  jakllsch #define MSG_MAC_ADDR_DP                 0x0b
    272      1.1  jakllsch typedef struct _MAC_ADDR_DEVICE_PATH {
    273  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    274      1.1  jakllsch         EFI_MAC_ADDRESS                 MacAddress;
    275      1.1  jakllsch         UINT8                           IfType;
    276      1.1  jakllsch } MAC_ADDR_DEVICE_PATH;
    277      1.1  jakllsch 
    278      1.1  jakllsch #define MSG_IPv4_DP                     0x0c
    279      1.1  jakllsch typedef struct _IPv4_DEVICE_PATH {
    280  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    281      1.1  jakllsch         EFI_IPv4_ADDRESS                LocalIpAddress;
    282      1.1  jakllsch         EFI_IPv4_ADDRESS                RemoteIpAddress;
    283      1.1  jakllsch         UINT16                          LocalPort;
    284      1.1  jakllsch         UINT16                          RemotePort;
    285      1.1  jakllsch         UINT16                          Protocol;
    286      1.1  jakllsch         BOOLEAN                         StaticIpAddress;
    287  1.1.1.2  jmcneill         /* new from UEFI version 2, code must check Length field in Header */
    288  1.1.1.2  jmcneill         EFI_IPv4_ADDRESS                GatewayIpAddress ;
    289  1.1.1.2  jmcneill         EFI_IPv4_ADDRESS                SubnetMask ;
    290      1.1  jakllsch } IPv4_DEVICE_PATH;
    291      1.1  jakllsch 
    292      1.1  jakllsch #define MSG_IPv6_DP                     0x0d
    293      1.1  jakllsch typedef struct _IPv6_DEVICE_PATH {
    294  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    295      1.1  jakllsch         EFI_IPv6_ADDRESS                LocalIpAddress;
    296      1.1  jakllsch         EFI_IPv6_ADDRESS                RemoteIpAddress;
    297      1.1  jakllsch         UINT16                          LocalPort;
    298      1.1  jakllsch         UINT16                          RemotePort;
    299      1.1  jakllsch         UINT16                          Protocol;
    300  1.1.1.2  jmcneill         BOOLEAN                         IPAddressOrigin ;
    301  1.1.1.2  jmcneill         /* new from UEFI version 2, code must check Length field in Header */
    302  1.1.1.2  jmcneill         UINT8                           PrefixLength ;
    303  1.1.1.2  jmcneill         EFI_IPv6_ADDRESS                GatewayIpAddress ;
    304      1.1  jakllsch } IPv6_DEVICE_PATH;
    305      1.1  jakllsch 
    306  1.1.1.2  jmcneill 
    307  1.1.1.2  jmcneill /**
    308  1.1.1.2  jmcneill  * Uniform Resource Identifiers SubType.
    309  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4C  9.3.5.23.
    310  1.1.1.2  jmcneill  */
    311  1.1.1.2  jmcneill #define MSG_URI_DP                      24
    312  1.1.1.2  jmcneill typedef struct _URI_DEVICE_PATH {
    313  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    314  1.1.1.2  jmcneill         CHAR8                           Uri[1];
    315  1.1.1.2  jmcneill } URI_DEVICE_PATH;
    316  1.1.1.2  jmcneill 
    317  1.1.1.2  jmcneill /**
    318  1.1.1.2  jmcneill  * Device Logical Unit SubType.
    319  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.5.8.
    320  1.1.1.2  jmcneill  */
    321  1.1.1.2  jmcneill #define MSG_VLAN_DP 20
    322  1.1.1.2  jmcneill typedef struct _VLAN_DEVICE_PATH {
    323  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    324  1.1.1.2  jmcneill     UINT16 VlanId ;
    325  1.1.1.2  jmcneill } VLAN_DEVICE_PATH;
    326  1.1.1.2  jmcneill 
    327      1.1  jakllsch #define MSG_INFINIBAND_DP               0x09
    328      1.1  jakllsch typedef struct _INFINIBAND_DEVICE_PATH {
    329  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    330  1.1.1.3  jmcneill         UINT32                          ResourceFlags;
    331  1.1.1.3  jmcneill         UINT8                           PortGid[16];
    332  1.1.1.3  jmcneill         UINT64                          ServiceId;
    333  1.1.1.3  jmcneill         UINT64                          TargetPortId;
    334  1.1.1.3  jmcneill         UINT64                          DeviceId;
    335      1.1  jakllsch } INFINIBAND_DEVICE_PATH;
    336      1.1  jakllsch 
    337      1.1  jakllsch #define MSG_UART_DP                     0x0e
    338      1.1  jakllsch typedef struct _UART_DEVICE_PATH {
    339  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    340      1.1  jakllsch         UINT32                          Reserved;
    341      1.1  jakllsch         UINT64                          BaudRate;
    342      1.1  jakllsch         UINT8                           DataBits;
    343      1.1  jakllsch         UINT8                           Parity;
    344      1.1  jakllsch         UINT8                           StopBits;
    345      1.1  jakllsch } UART_DEVICE_PATH;
    346      1.1  jakllsch 
    347      1.1  jakllsch #define MSG_VENDOR_DP                   0x0A
    348      1.1  jakllsch /* Use VENDOR_DEVICE_PATH struct */
    349      1.1  jakllsch 
    350  1.1.1.2  jmcneill #define EFI_PC_ANSI_GUID \
    351  1.1.1.2  jmcneill     { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    352  1.1.1.2  jmcneill #define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID
    353  1.1.1.2  jmcneill 
    354  1.1.1.2  jmcneill #define EFI_VT_100_GUID \
    355  1.1.1.2  jmcneill     { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
    356  1.1.1.2  jmcneill #define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID
    357  1.1.1.2  jmcneill 
    358  1.1.1.2  jmcneill #define EFI_VT_100_PLUS_GUID \
    359  1.1.1.2  jmcneill     { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} }
    360  1.1.1.2  jmcneill #define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID
    361  1.1.1.2  jmcneill 
    362  1.1.1.2  jmcneill #define EFI_VT_UTF8_GUID \
    363  1.1.1.2  jmcneill     { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} }
    364  1.1.1.2  jmcneill #define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID
    365      1.1  jakllsch 
    366      1.1  jakllsch 
    367  1.1.1.2  jmcneill /*
    368  1.1.1.2  jmcneill  * Media Device Path (UEFI 2.4 specification, version 2.4  9.3.6.)
    369  1.1.1.2  jmcneill  */
    370      1.1  jakllsch #define MEDIA_DEVICE_PATH               0x04
    371      1.1  jakllsch 
    372      1.1  jakllsch #define MEDIA_HARDDRIVE_DP              0x01
    373      1.1  jakllsch typedef struct _HARDDRIVE_DEVICE_PATH {
    374  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    375      1.1  jakllsch         UINT32                          PartitionNumber;
    376      1.1  jakllsch         UINT64                          PartitionStart;
    377      1.1  jakllsch         UINT64                          PartitionSize;
    378      1.1  jakllsch         UINT8                           Signature[16];
    379      1.1  jakllsch         UINT8                           MBRType;
    380      1.1  jakllsch         UINT8                           SignatureType;
    381      1.1  jakllsch } HARDDRIVE_DEVICE_PATH;
    382      1.1  jakllsch 
    383      1.1  jakllsch #define MBR_TYPE_PCAT                       0x01
    384      1.1  jakllsch #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
    385      1.1  jakllsch 
    386      1.1  jakllsch #define SIGNATURE_TYPE_MBR                  0x01
    387      1.1  jakllsch #define SIGNATURE_TYPE_GUID                 0x02
    388      1.1  jakllsch 
    389      1.1  jakllsch #define MEDIA_CDROM_DP                  0x02
    390      1.1  jakllsch typedef struct _CDROM_DEVICE_PATH {
    391  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    392      1.1  jakllsch         UINT32                          BootEntry;
    393      1.1  jakllsch         UINT64                          PartitionStart;
    394      1.1  jakllsch         UINT64                          PartitionSize;
    395      1.1  jakllsch } CDROM_DEVICE_PATH;
    396      1.1  jakllsch 
    397      1.1  jakllsch #define MEDIA_VENDOR_DP                 0x03
    398      1.1  jakllsch /* Use VENDOR_DEVICE_PATH struct */
    399      1.1  jakllsch 
    400      1.1  jakllsch #define MEDIA_FILEPATH_DP               0x04
    401      1.1  jakllsch typedef struct _FILEPATH_DEVICE_PATH {
    402  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    403      1.1  jakllsch         CHAR16                          PathName[1];
    404      1.1  jakllsch } FILEPATH_DEVICE_PATH;
    405      1.1  jakllsch 
    406      1.1  jakllsch #define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
    407      1.1  jakllsch 
    408      1.1  jakllsch #define MEDIA_PROTOCOL_DP               0x05
    409      1.1  jakllsch typedef struct _MEDIA_PROTOCOL_DEVICE_PATH {
    410  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    411      1.1  jakllsch         EFI_GUID                        Protocol;
    412      1.1  jakllsch } MEDIA_PROTOCOL_DEVICE_PATH;
    413      1.1  jakllsch 
    414  1.1.1.2  jmcneill /**
    415  1.1.1.2  jmcneill  * PIWG Firmware File SubType.
    416  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.6.6.
    417  1.1.1.2  jmcneill  */
    418  1.1.1.2  jmcneill #define MEDIA_PIWG_FW_FILE_DP 6
    419  1.1.1.2  jmcneill typedef struct _MEDIA_FW_VOL_FILEPATH_DEVICE_PATH {
    420  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    421  1.1.1.2  jmcneill     EFI_GUID FvFileName ;
    422  1.1.1.2  jmcneill } MEDIA_FW_VOL_FILEPATH_DEVICE_PATH ;
    423  1.1.1.2  jmcneill 
    424  1.1.1.2  jmcneill /**
    425  1.1.1.2  jmcneill  * PIWG Firmware Volume Device Path SubType.
    426  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.6.7.
    427  1.1.1.2  jmcneill  */
    428  1.1.1.2  jmcneill #define MEDIA_PIWG_FW_VOL_DP 7
    429  1.1.1.2  jmcneill typedef struct _MEDIA_FW_VOL_DEVICE_PATH {
    430  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    431  1.1.1.2  jmcneill     EFI_GUID FvName ;
    432  1.1.1.2  jmcneill } MEDIA_FW_VOL_DEVICE_PATH ;
    433  1.1.1.2  jmcneill 
    434  1.1.1.2  jmcneill /**
    435  1.1.1.2  jmcneill  * Media relative offset range device path.
    436  1.1.1.2  jmcneill  * UEFI 2.0 specification version 2.4  9.3.6.8.
    437  1.1.1.2  jmcneill  */
    438  1.1.1.2  jmcneill #define MEDIA_RELATIVE_OFFSET_RANGE_DP 8
    439  1.1.1.2  jmcneill typedef struct _MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH {
    440  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL Header ;
    441  1.1.1.2  jmcneill     UINT32 Reserved ;
    442  1.1.1.2  jmcneill     UINT64 StartingOffset ;
    443  1.1.1.2  jmcneill     UINT64 EndingOffset ;
    444  1.1.1.2  jmcneill } MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH ;
    445  1.1.1.2  jmcneill 
    446      1.1  jakllsch 
    447  1.1.1.2  jmcneill /*
    448  1.1.1.2  jmcneill  * BIOS Boot Specification Device Path (UEFI 2.4 specification, version 2.4  9.3.7.)
    449  1.1.1.2  jmcneill  */
    450      1.1  jakllsch #define BBS_DEVICE_PATH                 0x05
    451  1.1.1.2  jmcneill 
    452      1.1  jakllsch #define BBS_BBS_DP                      0x01
    453      1.1  jakllsch typedef struct _BBS_BBS_DEVICE_PATH {
    454  1.1.1.2  jmcneill         EFI_DEVICE_PATH_PROTOCOL        Header;
    455      1.1  jakllsch         UINT16                          DeviceType;
    456      1.1  jakllsch         UINT16                          StatusFlag;
    457      1.1  jakllsch         CHAR8                           String[1];
    458      1.1  jakllsch } BBS_BBS_DEVICE_PATH;
    459      1.1  jakllsch 
    460      1.1  jakllsch /* DeviceType definitions - from BBS specification */
    461      1.1  jakllsch #define BBS_TYPE_FLOPPY                 0x01
    462      1.1  jakllsch #define BBS_TYPE_HARDDRIVE              0x02
    463      1.1  jakllsch #define BBS_TYPE_CDROM                  0x03
    464      1.1  jakllsch #define BBS_TYPE_PCMCIA                 0x04
    465      1.1  jakllsch #define BBS_TYPE_USB                    0x05
    466      1.1  jakllsch #define BBS_TYPE_EMBEDDED_NETWORK       0x06
    467      1.1  jakllsch #define BBS_TYPE_DEV                    0x80
    468      1.1  jakllsch #define BBS_TYPE_UNKNOWN                0xFF
    469      1.1  jakllsch 
    470      1.1  jakllsch typedef union {
    471  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL             DevPath;
    472      1.1  jakllsch     PCI_DEVICE_PATH                      Pci;
    473      1.1  jakllsch     PCCARD_DEVICE_PATH                   PcCard;
    474      1.1  jakllsch     MEMMAP_DEVICE_PATH                   MemMap;
    475      1.1  jakllsch     VENDOR_DEVICE_PATH                   Vendor;
    476  1.1.1.2  jmcneill     UNKNOWN_DEVICE_VENDOR_DEVICE_PATH    UnknownVendor;
    477      1.1  jakllsch     CONTROLLER_DEVICE_PATH               Controller;
    478      1.1  jakllsch     ACPI_HID_DEVICE_PATH                 Acpi;
    479      1.1  jakllsch 
    480      1.1  jakllsch     ATAPI_DEVICE_PATH                    Atapi;
    481      1.1  jakllsch     SCSI_DEVICE_PATH                     Scsi;
    482      1.1  jakllsch     FIBRECHANNEL_DEVICE_PATH             FibreChannel;
    483      1.1  jakllsch 
    484      1.1  jakllsch     F1394_DEVICE_PATH                    F1394;
    485      1.1  jakllsch     USB_DEVICE_PATH                      Usb;
    486      1.1  jakllsch     USB_CLASS_DEVICE_PATH                UsbClass;
    487      1.1  jakllsch     I2O_DEVICE_PATH                      I2O;
    488      1.1  jakllsch     MAC_ADDR_DEVICE_PATH                 MacAddr;
    489      1.1  jakllsch     IPv4_DEVICE_PATH                     Ipv4;
    490      1.1  jakllsch     IPv6_DEVICE_PATH                     Ipv6;
    491  1.1.1.2  jmcneill     URI_DEVICE_PATH                      Uri;
    492      1.1  jakllsch     INFINIBAND_DEVICE_PATH               InfiniBand;
    493      1.1  jakllsch     UART_DEVICE_PATH                     Uart;
    494      1.1  jakllsch 
    495      1.1  jakllsch     HARDDRIVE_DEVICE_PATH                HardDrive;
    496      1.1  jakllsch     CDROM_DEVICE_PATH                    CD;
    497      1.1  jakllsch 
    498      1.1  jakllsch     FILEPATH_DEVICE_PATH                 FilePath;
    499      1.1  jakllsch     MEDIA_PROTOCOL_DEVICE_PATH           MediaProtocol;
    500      1.1  jakllsch 
    501      1.1  jakllsch     BBS_BBS_DEVICE_PATH                  Bbs;
    502      1.1  jakllsch 
    503      1.1  jakllsch } EFI_DEV_PATH;
    504      1.1  jakllsch 
    505      1.1  jakllsch typedef union {
    506  1.1.1.2  jmcneill     EFI_DEVICE_PATH_PROTOCOL             *DevPath;
    507      1.1  jakllsch     PCI_DEVICE_PATH                      *Pci;
    508      1.1  jakllsch     PCCARD_DEVICE_PATH                   *PcCard;
    509      1.1  jakllsch     MEMMAP_DEVICE_PATH                   *MemMap;
    510      1.1  jakllsch     VENDOR_DEVICE_PATH                   *Vendor;
    511  1.1.1.2  jmcneill     UNKNOWN_DEVICE_VENDOR_DEVICE_PATH    *UnknownVendor;
    512      1.1  jakllsch     CONTROLLER_DEVICE_PATH               *Controller;
    513      1.1  jakllsch     ACPI_HID_DEVICE_PATH                 *Acpi;
    514      1.1  jakllsch 
    515      1.1  jakllsch     ATAPI_DEVICE_PATH                    *Atapi;
    516      1.1  jakllsch     SCSI_DEVICE_PATH                     *Scsi;
    517      1.1  jakllsch     FIBRECHANNEL_DEVICE_PATH             *FibreChannel;
    518      1.1  jakllsch 
    519      1.1  jakllsch     F1394_DEVICE_PATH                    *F1394;
    520      1.1  jakllsch     USB_DEVICE_PATH                      *Usb;
    521      1.1  jakllsch     USB_CLASS_DEVICE_PATH                *UsbClass;
    522      1.1  jakllsch     I2O_DEVICE_PATH                      *I2O;
    523      1.1  jakllsch     MAC_ADDR_DEVICE_PATH                 *MacAddr;
    524      1.1  jakllsch     IPv4_DEVICE_PATH                     *Ipv4;
    525      1.1  jakllsch     IPv6_DEVICE_PATH                     *Ipv6;
    526  1.1.1.2  jmcneill     URI_DEVICE_PATH                      *Uri;
    527      1.1  jakllsch     INFINIBAND_DEVICE_PATH               *InfiniBand;
    528      1.1  jakllsch     UART_DEVICE_PATH                     *Uart;
    529      1.1  jakllsch 
    530      1.1  jakllsch     HARDDRIVE_DEVICE_PATH                *HardDrive;
    531      1.1  jakllsch 
    532      1.1  jakllsch     FILEPATH_DEVICE_PATH                 *FilePath;
    533      1.1  jakllsch     MEDIA_PROTOCOL_DEVICE_PATH           *MediaProtocol;
    534      1.1  jakllsch 
    535      1.1  jakllsch     CDROM_DEVICE_PATH                    *CD;
    536      1.1  jakllsch     BBS_BBS_DEVICE_PATH                  *Bbs;
    537      1.1  jakllsch 
    538      1.1  jakllsch } EFI_DEV_PATH_PTR;
    539      1.1  jakllsch 
    540  1.1.1.2  jmcneill #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \
    541  1.1.1.2  jmcneill   { 0x8b843e20, 0x8132, 0x4852, {0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c} }
    542  1.1.1.2  jmcneill 
    543  1.1.1.2  jmcneill typedef
    544  1.1.1.2  jmcneill CHAR16*
    545  1.1.1.2  jmcneill (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE) (
    546  1.1.1.2  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DeviceNode,
    547  1.1.1.2  jmcneill     IN BOOLEAN                           DisplayOnly,
    548  1.1.1.2  jmcneill     IN BOOLEAN                           AllowShortcuts
    549  1.1.1.2  jmcneill     );
    550  1.1.1.2  jmcneill 
    551  1.1.1.2  jmcneill typedef
    552  1.1.1.2  jmcneill CHAR16*
    553  1.1.1.2  jmcneill (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH) (
    554  1.1.1.2  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DevicePath,
    555  1.1.1.2  jmcneill     IN BOOLEAN                           DisplayOnly,
    556  1.1.1.2  jmcneill     IN BOOLEAN                           AllowShortcuts
    557  1.1.1.2  jmcneill     );
    558  1.1.1.2  jmcneill 
    559  1.1.1.2  jmcneill typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL {
    560  1.1.1.3  jmcneill     EFI_DEVICE_PATH_TO_TEXT_NODE         ConvertDeviceNodeToText;
    561  1.1.1.3  jmcneill     EFI_DEVICE_PATH_TO_TEXT_PATH         ConvertDevicePathToText;
    562  1.1.1.2  jmcneill } EFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
    563  1.1.1.2  jmcneill 
    564  1.1.1.2  jmcneill #define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \
    565  1.1.1.2  jmcneill   { 0x5c99a21, 0xc70f, 0x4ad2, {0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e} }
    566  1.1.1.2  jmcneill 
    567  1.1.1.2  jmcneill typedef
    568  1.1.1.2  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    569  1.1.1.2  jmcneill (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_NODE) (
    570  1.1.1.2  jmcneill     IN CONST CHAR16                      *TextDeviceNode
    571  1.1.1.2  jmcneill     );
    572  1.1.1.2  jmcneill 
    573  1.1.1.2  jmcneill typedef
    574  1.1.1.2  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    575  1.1.1.2  jmcneill (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_PATH) (
    576  1.1.1.2  jmcneill     IN CONST CHAR16                      *TextDevicePath
    577  1.1.1.2  jmcneill     );
    578  1.1.1.2  jmcneill 
    579  1.1.1.2  jmcneill typedef struct {
    580  1.1.1.2  jmcneill     EFI_DEVICE_PATH_FROM_TEXT_NODE       ConvertTextToDeviceNode;
    581  1.1.1.2  jmcneill     EFI_DEVICE_PATH_FROM_TEXT_PATH       ConvertTextToDevicePath;
    582  1.1.1.2  jmcneill } EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
    583      1.1  jakllsch 
    584  1.1.1.3  jmcneill #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \
    585  1.1.1.3  jmcneill   { 0x379be4e, 0xd706, 0x437d, {0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4} }
    586  1.1.1.3  jmcneill 
    587  1.1.1.3  jmcneill typedef
    588  1.1.1.3  jmcneill UINTN
    589  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE) (
    590  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DevicePath
    591  1.1.1.3  jmcneill     );
    592  1.1.1.3  jmcneill 
    593  1.1.1.3  jmcneill typedef
    594  1.1.1.3  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    595  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH) (
    596  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DevicePath
    597  1.1.1.3  jmcneill     );
    598  1.1.1.3  jmcneill 
    599  1.1.1.3  jmcneill typedef
    600  1.1.1.3  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    601  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_PATH) (
    602  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *Src1,
    603  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *Src2
    604  1.1.1.3  jmcneill     );
    605  1.1.1.3  jmcneill 
    606  1.1.1.3  jmcneill typedef
    607  1.1.1.3  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    608  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_NODE) (
    609  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DevicePath,
    610  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DeviceNode
    611  1.1.1.3  jmcneill );
    612  1.1.1.3  jmcneill 
    613  1.1.1.3  jmcneill typedef
    614  1.1.1.3  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    615  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE) (
    616  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DevicePath,
    617  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DevicePathInstance
    618  1.1.1.3  jmcneill );
    619  1.1.1.3  jmcneill 
    620  1.1.1.3  jmcneill typedef
    621  1.1.1.3  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    622  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE) (
    623  1.1.1.3  jmcneill     IN OUT EFI_DEVICE_PATH_PROTOCOL      **DevicePathInstance,
    624  1.1.1.3  jmcneill     OUT UINTN                            *DevicePathInstanceSize OPTIONAL
    625  1.1.1.3  jmcneill );
    626  1.1.1.3  jmcneill 
    627  1.1.1.3  jmcneill typedef
    628  1.1.1.3  jmcneill EFI_DEVICE_PATH_PROTOCOL*
    629  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_CREATE_NODE) (
    630  1.1.1.3  jmcneill     IN UINT8                             NodeType,
    631  1.1.1.3  jmcneill     IN UINT8                             NodeSubType,
    632  1.1.1.3  jmcneill     IN UINT16                            NodeLength
    633  1.1.1.3  jmcneill     );
    634  1.1.1.3  jmcneill 
    635  1.1.1.3  jmcneill typedef
    636  1.1.1.3  jmcneill BOOLEAN
    637  1.1.1.3  jmcneill (EFIAPI *EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE) (
    638  1.1.1.3  jmcneill     IN CONST EFI_DEVICE_PATH_PROTOCOL    *DevicePath
    639  1.1.1.3  jmcneill     );
    640  1.1.1.3  jmcneill 
    641  1.1.1.3  jmcneill typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL {
    642  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE   GetDevicePathSize;
    643  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH        DuplicateDevicePath;
    644  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_APPEND_PATH            AppendDevicePath;
    645  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_APPEND_NODE            AppendDeviceNode;
    646  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE        AppendDevicePathInstance;
    647  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE      GetNextDevicePathInstance;
    648  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE      IsDevicePathMultiInstance;
    649  1.1.1.3  jmcneill     EFI_DEVICE_PATH_UTILS_CREATE_NODE            CreateDeviceNode;
    650  1.1.1.3  jmcneill } EFI_DEVICE_PATH_UTILITIES_PROTOCOL;
    651  1.1.1.3  jmcneill 
    652      1.1  jakllsch #endif
    653