1530d68baSNigel Croxon #ifndef _DEVPATH_H 2530d68baSNigel Croxon #define _DEVPATH_H 3530d68baSNigel Croxon 4530d68baSNigel Croxon /*++ 5530d68baSNigel Croxon 6530d68baSNigel Croxon Copyright (c) 1998 Intel Corporation 7530d68baSNigel Croxon 8530d68baSNigel Croxon Module Name: 9530d68baSNigel Croxon 10530d68baSNigel Croxon devpath.h 11530d68baSNigel Croxon 12530d68baSNigel Croxon Abstract: 13530d68baSNigel Croxon 14530d68baSNigel Croxon Defines for parsing the EFI Device Path structures 15530d68baSNigel Croxon 16530d68baSNigel Croxon 17530d68baSNigel Croxon 18530d68baSNigel Croxon Revision History 19530d68baSNigel Croxon 20530d68baSNigel Croxon --*/ 21530d68baSNigel Croxon 22530d68baSNigel Croxon // 23530d68baSNigel Croxon // Device Path structures - Section C 24530d68baSNigel Croxon // 25530d68baSNigel Croxon 261b10394eSNigel Croxon typedef struct _EFI_DEVICE_PATH_PROTOCOL { 27530d68baSNigel Croxon UINT8 Type; 28530d68baSNigel Croxon UINT8 SubType; 29530d68baSNigel Croxon UINT8 Length[2]; 301b10394eSNigel Croxon } EFI_DEVICE_PATH_PROTOCOL; 311b10394eSNigel Croxon 321b10394eSNigel Croxon typedef struct _EFI_DEVICE_PATH_PROTOCOL _EFI_DEVICE_PATH; 331b10394eSNigel Croxon typedef EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH; 34530d68baSNigel Croxon 35530d68baSNigel Croxon #define EFI_DP_TYPE_MASK 0x7F 36530d68baSNigel Croxon #define EFI_DP_TYPE_UNPACKED 0x80 37530d68baSNigel Croxon 38530d68baSNigel Croxon //#define END_DEVICE_PATH_TYPE 0xff 39530d68baSNigel Croxon #define END_DEVICE_PATH_TYPE 0x7f 40530d68baSNigel Croxon //#define END_DEVICE_PATH_TYPE_UNPACKED 0x7f 41530d68baSNigel Croxon 42530d68baSNigel Croxon #define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xff 43530d68baSNigel Croxon #define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01 441b10394eSNigel Croxon #define END_DEVICE_PATH_LENGTH (sizeof(EFI_DEVICE_PATH_PROTOCOL)) 45530d68baSNigel Croxon 46530d68baSNigel Croxon 47530d68baSNigel Croxon #define DP_IS_END_TYPE(a) 48530d68baSNigel Croxon #define DP_IS_END_SUBTYPE(a) ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE ) 49530d68baSNigel Croxon 50530d68baSNigel Croxon #define DevicePathType(a) ( ((a)->Type) & EFI_DP_TYPE_MASK ) 51530d68baSNigel Croxon #define DevicePathSubType(a) ( (a)->SubType ) 52530d68baSNigel Croxon #define DevicePathNodeLength(a) ( ((a)->Length[0]) | ((a)->Length[1] << 8) ) 531b10394eSNigel Croxon #define NextDevicePathNode(a) ( (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a))) 54530d68baSNigel Croxon //#define IsDevicePathEndType(a) ( DevicePathType(a) == END_DEVICE_PATH_TYPE_UNPACKED ) 55530d68baSNigel Croxon #define IsDevicePathEndType(a) ( DevicePathType(a) == END_DEVICE_PATH_TYPE ) 56530d68baSNigel Croxon #define IsDevicePathEndSubType(a) ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE ) 57530d68baSNigel Croxon #define IsDevicePathEnd(a) ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) ) 58530d68baSNigel Croxon #define IsDevicePathUnpacked(a) ( (a)->Type & EFI_DP_TYPE_UNPACKED ) 59530d68baSNigel Croxon 60530d68baSNigel Croxon 61530d68baSNigel Croxon #define SetDevicePathNodeLength(a,l) { \ 62530d68baSNigel Croxon (a)->Length[0] = (UINT8) (l); \ 63530d68baSNigel Croxon (a)->Length[1] = (UINT8) ((l) >> 8); \ 64530d68baSNigel Croxon } 65530d68baSNigel Croxon 66530d68baSNigel Croxon #define SetDevicePathEndNode(a) { \ 67530d68baSNigel Croxon (a)->Type = END_DEVICE_PATH_TYPE; \ 68530d68baSNigel Croxon (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE; \ 691b10394eSNigel Croxon (a)->Length[0] = sizeof(EFI_DEVICE_PATH_PROTOCOL); \ 70530d68baSNigel Croxon (a)->Length[1] = 0; \ 71530d68baSNigel Croxon } 72530d68baSNigel Croxon 73530d68baSNigel Croxon 74530d68baSNigel Croxon /* 75530d68baSNigel Croxon * Hardware Device Path (UEFI 2.4 specification, version 2.4 § 9.3.2.) 76530d68baSNigel Croxon */ 77530d68baSNigel Croxon 78530d68baSNigel Croxon #define HARDWARE_DEVICE_PATH 0x01 79530d68baSNigel Croxon 80530d68baSNigel Croxon #define HW_PCI_DP 0x01 81530d68baSNigel Croxon typedef struct _PCI_DEVICE_PATH { 821b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 83530d68baSNigel Croxon UINT8 Function; 84530d68baSNigel Croxon UINT8 Device; 85530d68baSNigel Croxon } PCI_DEVICE_PATH; 86530d68baSNigel Croxon 87530d68baSNigel Croxon #define HW_PCCARD_DP 0x02 88530d68baSNigel Croxon typedef struct _PCCARD_DEVICE_PATH { 891b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 90530d68baSNigel Croxon UINT8 FunctionNumber ; 91530d68baSNigel Croxon } PCCARD_DEVICE_PATH; 92530d68baSNigel Croxon 93530d68baSNigel Croxon #define HW_MEMMAP_DP 0x03 94530d68baSNigel Croxon typedef struct _MEMMAP_DEVICE_PATH { 951b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 96530d68baSNigel Croxon UINT32 MemoryType; 97530d68baSNigel Croxon EFI_PHYSICAL_ADDRESS StartingAddress; 98530d68baSNigel Croxon EFI_PHYSICAL_ADDRESS EndingAddress; 99530d68baSNigel Croxon } MEMMAP_DEVICE_PATH; 100530d68baSNigel Croxon 101530d68baSNigel Croxon #define HW_VENDOR_DP 0x04 102530d68baSNigel Croxon typedef struct _VENDOR_DEVICE_PATH { 1031b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 104530d68baSNigel Croxon EFI_GUID Guid; 105530d68baSNigel Croxon } VENDOR_DEVICE_PATH; 106530d68baSNigel Croxon 107530d68baSNigel Croxon #define UNKNOWN_DEVICE_GUID \ 108530d68baSNigel Croxon { 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} } 109530d68baSNigel Croxon 110530d68baSNigel Croxon typedef struct _UKNOWN_DEVICE_VENDOR_DP { 111530d68baSNigel Croxon VENDOR_DEVICE_PATH DevicePath; 112530d68baSNigel Croxon UINT8 LegacyDriveLetter; 113530d68baSNigel Croxon } UNKNOWN_DEVICE_VENDOR_DEVICE_PATH; 114530d68baSNigel Croxon 115530d68baSNigel Croxon #define HW_CONTROLLER_DP 0x05 116530d68baSNigel Croxon typedef struct _CONTROLLER_DEVICE_PATH { 1171b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 118530d68baSNigel Croxon UINT32 Controller; 119530d68baSNigel Croxon } CONTROLLER_DEVICE_PATH; 120530d68baSNigel Croxon 121530d68baSNigel Croxon 122530d68baSNigel Croxon /* 123530d68baSNigel Croxon * ACPI Device Path (UEFI 2.4 specification, version 2.4 § 9.3.3 and 9.3.4.) 124530d68baSNigel Croxon */ 125530d68baSNigel Croxon #define ACPI_DEVICE_PATH 0x02 126530d68baSNigel Croxon 127530d68baSNigel Croxon #define ACPI_DP 0x01 128530d68baSNigel Croxon typedef struct _ACPI_HID_DEVICE_PATH { 1291b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 130530d68baSNigel Croxon UINT32 HID; 131530d68baSNigel Croxon UINT32 UID; 132530d68baSNigel Croxon } ACPI_HID_DEVICE_PATH; 133530d68baSNigel Croxon 134530d68baSNigel Croxon #define EXPANDED_ACPI_DP 0x02 135530d68baSNigel Croxon typedef struct _EXPANDED_ACPI_HID_DEVICE_PATH { 1361b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 137530d68baSNigel Croxon UINT32 HID; 138530d68baSNigel Croxon UINT32 UID; 139530d68baSNigel Croxon UINT32 CID; 140530d68baSNigel Croxon UINT8 HidStr[1]; 141530d68baSNigel Croxon } EXPANDED_ACPI_HID_DEVICE_PATH; 142530d68baSNigel Croxon 143530d68baSNigel Croxon #define ACPI_ADR_DP 3 144530d68baSNigel Croxon typedef struct _ACPI_ADR_DEVICE_PATH { 1451b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 146530d68baSNigel Croxon UINT32 ADR ; 147530d68baSNigel Croxon } ACPI_ADR_DEVICE_PATH ; 148530d68baSNigel Croxon 149530d68baSNigel Croxon // 150530d68baSNigel Croxon // EISA ID Macro 151530d68baSNigel Croxon // EISA ID Definition 32-bits 152530d68baSNigel Croxon // bits[15:0] - three character compressed ASCII EISA ID. 153530d68baSNigel Croxon // bits[31:16] - binary number 154530d68baSNigel Croxon // Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z' 155530d68baSNigel Croxon // 156530d68baSNigel Croxon #define PNP_EISA_ID_CONST 0x41d0 157530d68baSNigel Croxon #define EISA_ID(_Name, _Num) ((UINT32) ((_Name) | (_Num) << 16)) 158530d68baSNigel Croxon #define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId))) 159530d68baSNigel Croxon 160530d68baSNigel Croxon #define PNP_EISA_ID_MASK 0xffff 161530d68baSNigel Croxon #define EISA_ID_TO_NUM(_Id) ((_Id) >> 16) 162530d68baSNigel Croxon 163530d68baSNigel Croxon 164530d68baSNigel Croxon /* 165530d68baSNigel Croxon * Messaging Device Path (UEFI 2.4 specification, version 2.4 § 9.3.5.) 166530d68baSNigel Croxon */ 167530d68baSNigel Croxon #define MESSAGING_DEVICE_PATH 0x03 168530d68baSNigel Croxon 169530d68baSNigel Croxon #define MSG_ATAPI_DP 0x01 170530d68baSNigel Croxon typedef struct _ATAPI_DEVICE_PATH { 1711b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 172530d68baSNigel Croxon UINT8 PrimarySecondary; 173530d68baSNigel Croxon UINT8 SlaveMaster; 174530d68baSNigel Croxon UINT16 Lun; 175530d68baSNigel Croxon } ATAPI_DEVICE_PATH; 176530d68baSNigel Croxon 177530d68baSNigel Croxon #define MSG_SCSI_DP 0x02 178530d68baSNigel Croxon typedef struct _SCSI_DEVICE_PATH { 1791b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 180530d68baSNigel Croxon UINT16 Pun; 181530d68baSNigel Croxon UINT16 Lun; 182530d68baSNigel Croxon } SCSI_DEVICE_PATH; 183530d68baSNigel Croxon 184530d68baSNigel Croxon #define MSG_FIBRECHANNEL_DP 0x03 185530d68baSNigel Croxon typedef struct _FIBRECHANNEL_DEVICE_PATH { 1861b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 187530d68baSNigel Croxon UINT32 Reserved; 188530d68baSNigel Croxon UINT64 WWN; 189530d68baSNigel Croxon UINT64 Lun; 190530d68baSNigel Croxon } FIBRECHANNEL_DEVICE_PATH; 191530d68baSNigel Croxon 192530d68baSNigel Croxon /** 193530d68baSNigel Croxon * Fibre Channel Ex SubType. 194530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.5.6. 195530d68baSNigel Croxon */ 196530d68baSNigel Croxon #define MSG_FIBRECHANNELEX_DP 21 197530d68baSNigel Croxon typedef struct _FIBRECHANNELEX_DEVICE_PATH { 1981b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 199530d68baSNigel Croxon UINT32 Reserved ; 200530d68baSNigel Croxon UINT8 WWN[ 8 ] ; /* World Wide Name */ 201530d68baSNigel Croxon UINT8 Lun[ 8 ] ; /* Logical unit, T-10 SCSI Architecture Model 4 specification */ 202530d68baSNigel Croxon } FIBRECHANNELEX_DEVICE_PATH ; 203530d68baSNigel Croxon 204530d68baSNigel Croxon #define MSG_1394_DP 0x04 205530d68baSNigel Croxon typedef struct _F1394_DEVICE_PATH { 2061b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 207530d68baSNigel Croxon UINT32 Reserved; 208530d68baSNigel Croxon UINT64 Guid; 209530d68baSNigel Croxon } F1394_DEVICE_PATH; 210530d68baSNigel Croxon 211530d68baSNigel Croxon #define MSG_USB_DP 0x05 212530d68baSNigel Croxon typedef struct _USB_DEVICE_PATH { 2131b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 214530d68baSNigel Croxon UINT8 Port; 215530d68baSNigel Croxon UINT8 Endpoint; 216530d68baSNigel Croxon } USB_DEVICE_PATH; 217530d68baSNigel Croxon 218530d68baSNigel Croxon /** 219530d68baSNigel Croxon * SATA Device Path SubType. 220530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.5.6. 221530d68baSNigel Croxon */ 222530d68baSNigel Croxon #define MSG_SATA_DP 18 223530d68baSNigel Croxon typedef struct _SATA_DEVICE_PATH { 2241b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 225530d68baSNigel Croxon UINT16 HBAPortNumber ; 226530d68baSNigel Croxon UINT16 PortMultiplierPortNumber ; 227530d68baSNigel Croxon UINT16 Lun ; /* Logical Unit Number */ 228530d68baSNigel Croxon } SATA_DEVICE_PATH ; 229530d68baSNigel Croxon 230530d68baSNigel Croxon /** 231530d68baSNigel Croxon * USB WWID Device Path SubType. 232530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.5.7. 233530d68baSNigel Croxon */ 234530d68baSNigel Croxon #define MSG_USB_WWID_DP 16 235530d68baSNigel Croxon typedef struct _USB_WWID_DEVICE_PATH { 2361b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 237530d68baSNigel Croxon UINT16 InterfaceNumber ; 238530d68baSNigel Croxon UINT16 VendorId ; 239530d68baSNigel Croxon UINT16 ProductId ; 240530d68baSNigel Croxon CHAR16 SerialNumber[ 1 ] ; /* UTF-16 characters of the USB serial number */ 241530d68baSNigel Croxon } USB_WWID_DEVICE_PATH ; 242530d68baSNigel Croxon 243530d68baSNigel Croxon /** 244530d68baSNigel Croxon * Device Logical Unit SubType. 245530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.5.8. 246530d68baSNigel Croxon */ 247530d68baSNigel Croxon #define MSG_DEVICE_LOGICAL_UNIT_DP 17 248530d68baSNigel Croxon typedef struct _DEVICE_LOGICAL_UNIT_DEVICE_PATH { 2491b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 250530d68baSNigel Croxon UINT8 Lun ; /* Logical Unit Number */ 251530d68baSNigel Croxon } DEVICE_LOGICAL_UNIT_DEVICE_PATH ; 252530d68baSNigel Croxon 253530d68baSNigel Croxon #define MSG_USB_CLASS_DP 0x0F 254530d68baSNigel Croxon typedef struct _USB_CLASS_DEVICE_PATH { 2551b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 256530d68baSNigel Croxon UINT16 VendorId; 257530d68baSNigel Croxon UINT16 ProductId; 258530d68baSNigel Croxon UINT8 DeviceClass; 259530d68baSNigel Croxon UINT8 DeviceSubclass; 260530d68baSNigel Croxon UINT8 DeviceProtocol; 261530d68baSNigel Croxon } USB_CLASS_DEVICE_PATH; 262530d68baSNigel Croxon 263530d68baSNigel Croxon #define MSG_I2O_DP 0x06 264530d68baSNigel Croxon typedef struct _I2O_DEVICE_PATH { 2651b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 266530d68baSNigel Croxon UINT32 Tid; 267530d68baSNigel Croxon } I2O_DEVICE_PATH; 268530d68baSNigel Croxon 269530d68baSNigel Croxon #define MSG_MAC_ADDR_DP 0x0b 270530d68baSNigel Croxon typedef struct _MAC_ADDR_DEVICE_PATH { 2711b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 272530d68baSNigel Croxon EFI_MAC_ADDRESS MacAddress; 273530d68baSNigel Croxon UINT8 IfType; 274530d68baSNigel Croxon } MAC_ADDR_DEVICE_PATH; 275530d68baSNigel Croxon 276530d68baSNigel Croxon #define MSG_IPv4_DP 0x0c 277530d68baSNigel Croxon typedef struct _IPv4_DEVICE_PATH { 2781b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 279530d68baSNigel Croxon EFI_IPv4_ADDRESS LocalIpAddress; 280530d68baSNigel Croxon EFI_IPv4_ADDRESS RemoteIpAddress; 281530d68baSNigel Croxon UINT16 LocalPort; 282530d68baSNigel Croxon UINT16 RemotePort; 283530d68baSNigel Croxon UINT16 Protocol; 284530d68baSNigel Croxon BOOLEAN StaticIpAddress; 285530d68baSNigel Croxon /* new from UEFI version 2, code must check Length field in Header */ 286530d68baSNigel Croxon EFI_IPv4_ADDRESS GatewayIpAddress ; 287530d68baSNigel Croxon EFI_IPv4_ADDRESS SubnetMask ; 288530d68baSNigel Croxon } IPv4_DEVICE_PATH; 289530d68baSNigel Croxon 290530d68baSNigel Croxon #define MSG_IPv6_DP 0x0d 291530d68baSNigel Croxon typedef struct _IPv6_DEVICE_PATH { 2921b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 293530d68baSNigel Croxon EFI_IPv6_ADDRESS LocalIpAddress; 294530d68baSNigel Croxon EFI_IPv6_ADDRESS RemoteIpAddress; 295530d68baSNigel Croxon UINT16 LocalPort; 296530d68baSNigel Croxon UINT16 RemotePort; 297530d68baSNigel Croxon UINT16 Protocol; 298530d68baSNigel Croxon BOOLEAN IPAddressOrigin ; 299530d68baSNigel Croxon /* new from UEFI version 2, code must check Length field in Header */ 300530d68baSNigel Croxon UINT8 PrefixLength ; 301530d68baSNigel Croxon EFI_IPv6_ADDRESS GatewayIpAddress ; 302530d68baSNigel Croxon } IPv6_DEVICE_PATH; 303530d68baSNigel Croxon 304ad7f0d4bSNigel Croxon 305ad7f0d4bSNigel Croxon /** 306ad7f0d4bSNigel Croxon * Uniform Resource Identifiers SubType. 307ad7f0d4bSNigel Croxon * UEFI 2.0 specification version 2.4C § 9.3.5.23. 308ad7f0d4bSNigel Croxon */ 309ad7f0d4bSNigel Croxon #define MSG_URI_DP 24 310ad7f0d4bSNigel Croxon typedef struct _URI_DEVICE_PATH { 3111b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 312ad7f0d4bSNigel Croxon CHAR8 Uri[1]; 313ad7f0d4bSNigel Croxon } URI_DEVICE_PATH; 314ad7f0d4bSNigel Croxon 315530d68baSNigel Croxon /** 316530d68baSNigel Croxon * Device Logical Unit SubType. 317530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.5.8. 318530d68baSNigel Croxon */ 319530d68baSNigel Croxon #define MSG_VLAN_DP 20 320530d68baSNigel Croxon typedef struct _VLAN_DEVICE_PATH { 3211b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 322530d68baSNigel Croxon UINT16 VlanId ; 323530d68baSNigel Croxon } VLAN_DEVICE_PATH; 324530d68baSNigel Croxon 325530d68baSNigel Croxon #define MSG_INFINIBAND_DP 0x09 326530d68baSNigel Croxon typedef struct _INFINIBAND_DEVICE_PATH { 3271b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 328530d68baSNigel Croxon UINT32 ResourceFlags; 329d34132e6SNigel Croxon UINT8 PortGid[16]; 330530d68baSNigel Croxon UINT64 ServiceId; 331530d68baSNigel Croxon UINT64 TargetPortId; 332530d68baSNigel Croxon UINT64 DeviceId; 333530d68baSNigel Croxon } INFINIBAND_DEVICE_PATH; 334530d68baSNigel Croxon 335530d68baSNigel Croxon #define MSG_UART_DP 0x0e 336530d68baSNigel Croxon typedef struct _UART_DEVICE_PATH { 3371b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 338530d68baSNigel Croxon UINT32 Reserved; 339530d68baSNigel Croxon UINT64 BaudRate; 340530d68baSNigel Croxon UINT8 DataBits; 341530d68baSNigel Croxon UINT8 Parity; 342530d68baSNigel Croxon UINT8 StopBits; 343530d68baSNigel Croxon } UART_DEVICE_PATH; 344530d68baSNigel Croxon 345530d68baSNigel Croxon #define MSG_VENDOR_DP 0x0A 346530d68baSNigel Croxon /* Use VENDOR_DEVICE_PATH struct */ 347530d68baSNigel Croxon 348530d68baSNigel Croxon #define EFI_PC_ANSI_GUID \ 349751cbce3SNigel Croxon { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 350751cbce3SNigel Croxon #define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID 351530d68baSNigel Croxon 352530d68baSNigel Croxon #define EFI_VT_100_GUID \ 353751cbce3SNigel Croxon { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} } 354751cbce3SNigel Croxon #define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID 355530d68baSNigel Croxon 356530d68baSNigel Croxon #define EFI_VT_100_PLUS_GUID \ 357751cbce3SNigel Croxon { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} } 358751cbce3SNigel Croxon #define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID 359530d68baSNigel Croxon 360530d68baSNigel Croxon #define EFI_VT_UTF8_GUID \ 361751cbce3SNigel Croxon { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} } 362751cbce3SNigel Croxon #define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID 363530d68baSNigel Croxon 364530d68baSNigel Croxon 365530d68baSNigel Croxon /* 366530d68baSNigel Croxon * Media Device Path (UEFI 2.4 specification, version 2.4 § 9.3.6.) 367530d68baSNigel Croxon */ 368530d68baSNigel Croxon #define MEDIA_DEVICE_PATH 0x04 369530d68baSNigel Croxon 370530d68baSNigel Croxon #define MEDIA_HARDDRIVE_DP 0x01 371530d68baSNigel Croxon typedef struct _HARDDRIVE_DEVICE_PATH { 3721b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 373530d68baSNigel Croxon UINT32 PartitionNumber; 374530d68baSNigel Croxon UINT64 PartitionStart; 375530d68baSNigel Croxon UINT64 PartitionSize; 376530d68baSNigel Croxon UINT8 Signature[16]; 377530d68baSNigel Croxon UINT8 MBRType; 378530d68baSNigel Croxon UINT8 SignatureType; 379530d68baSNigel Croxon } HARDDRIVE_DEVICE_PATH; 380530d68baSNigel Croxon 381530d68baSNigel Croxon #define MBR_TYPE_PCAT 0x01 382530d68baSNigel Croxon #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02 383530d68baSNigel Croxon 384530d68baSNigel Croxon #define SIGNATURE_TYPE_MBR 0x01 385530d68baSNigel Croxon #define SIGNATURE_TYPE_GUID 0x02 386530d68baSNigel Croxon 387530d68baSNigel Croxon #define MEDIA_CDROM_DP 0x02 388530d68baSNigel Croxon typedef struct _CDROM_DEVICE_PATH { 3891b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 390530d68baSNigel Croxon UINT32 BootEntry; 391530d68baSNigel Croxon UINT64 PartitionStart; 392530d68baSNigel Croxon UINT64 PartitionSize; 393530d68baSNigel Croxon } CDROM_DEVICE_PATH; 394530d68baSNigel Croxon 395530d68baSNigel Croxon #define MEDIA_VENDOR_DP 0x03 396530d68baSNigel Croxon /* Use VENDOR_DEVICE_PATH struct */ 397530d68baSNigel Croxon 398530d68baSNigel Croxon #define MEDIA_FILEPATH_DP 0x04 399530d68baSNigel Croxon typedef struct _FILEPATH_DEVICE_PATH { 4001b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 401530d68baSNigel Croxon CHAR16 PathName[1]; 402530d68baSNigel Croxon } FILEPATH_DEVICE_PATH; 403530d68baSNigel Croxon 404530d68baSNigel Croxon #define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName) 405530d68baSNigel Croxon 406530d68baSNigel Croxon #define MEDIA_PROTOCOL_DP 0x05 407530d68baSNigel Croxon typedef struct _MEDIA_PROTOCOL_DEVICE_PATH { 4081b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 409530d68baSNigel Croxon EFI_GUID Protocol; 410530d68baSNigel Croxon } MEDIA_PROTOCOL_DEVICE_PATH; 411530d68baSNigel Croxon 412530d68baSNigel Croxon /** 413530d68baSNigel Croxon * PIWG Firmware File SubType. 414530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.6.6. 415530d68baSNigel Croxon */ 416530d68baSNigel Croxon #define MEDIA_PIWG_FW_FILE_DP 6 417530d68baSNigel Croxon typedef struct _MEDIA_FW_VOL_FILEPATH_DEVICE_PATH { 4181b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 419530d68baSNigel Croxon EFI_GUID FvFileName ; 420530d68baSNigel Croxon } MEDIA_FW_VOL_FILEPATH_DEVICE_PATH ; 421530d68baSNigel Croxon 422530d68baSNigel Croxon /** 423530d68baSNigel Croxon * PIWG Firmware Volume Device Path SubType. 424530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.6.7. 425530d68baSNigel Croxon */ 426530d68baSNigel Croxon #define MEDIA_PIWG_FW_VOL_DP 7 427530d68baSNigel Croxon typedef struct _MEDIA_FW_VOL_DEVICE_PATH { 4281b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 429530d68baSNigel Croxon EFI_GUID FvName ; 430530d68baSNigel Croxon } MEDIA_FW_VOL_DEVICE_PATH ; 431530d68baSNigel Croxon 432530d68baSNigel Croxon /** 433530d68baSNigel Croxon * Media relative offset range device path. 434530d68baSNigel Croxon * UEFI 2.0 specification version 2.4 § 9.3.6.8. 435530d68baSNigel Croxon */ 436530d68baSNigel Croxon #define MEDIA_RELATIVE_OFFSET_RANGE_DP 8 437530d68baSNigel Croxon typedef struct _MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH { 4381b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header ; 439530d68baSNigel Croxon UINT32 Reserved ; 440530d68baSNigel Croxon UINT64 StartingOffset ; 441530d68baSNigel Croxon UINT64 EndingOffset ; 442530d68baSNigel Croxon } MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH ; 443530d68baSNigel Croxon 444530d68baSNigel Croxon 445530d68baSNigel Croxon /* 446530d68baSNigel Croxon * BIOS Boot Specification Device Path (UEFI 2.4 specification, version 2.4 § 9.3.7.) 447530d68baSNigel Croxon */ 448530d68baSNigel Croxon #define BBS_DEVICE_PATH 0x05 449530d68baSNigel Croxon 450530d68baSNigel Croxon #define BBS_BBS_DP 0x01 451530d68baSNigel Croxon typedef struct _BBS_BBS_DEVICE_PATH { 4521b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL Header; 453530d68baSNigel Croxon UINT16 DeviceType; 454530d68baSNigel Croxon UINT16 StatusFlag; 455530d68baSNigel Croxon CHAR8 String[1]; 456530d68baSNigel Croxon } BBS_BBS_DEVICE_PATH; 457530d68baSNigel Croxon 458530d68baSNigel Croxon /* DeviceType definitions - from BBS specification */ 459530d68baSNigel Croxon #define BBS_TYPE_FLOPPY 0x01 460530d68baSNigel Croxon #define BBS_TYPE_HARDDRIVE 0x02 461530d68baSNigel Croxon #define BBS_TYPE_CDROM 0x03 462530d68baSNigel Croxon #define BBS_TYPE_PCMCIA 0x04 463530d68baSNigel Croxon #define BBS_TYPE_USB 0x05 464530d68baSNigel Croxon #define BBS_TYPE_EMBEDDED_NETWORK 0x06 465530d68baSNigel Croxon #define BBS_TYPE_DEV 0x80 466530d68baSNigel Croxon #define BBS_TYPE_UNKNOWN 0xFF 467530d68baSNigel Croxon 468530d68baSNigel Croxon typedef union { 4691b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL DevPath; 470530d68baSNigel Croxon PCI_DEVICE_PATH Pci; 471530d68baSNigel Croxon PCCARD_DEVICE_PATH PcCard; 472530d68baSNigel Croxon MEMMAP_DEVICE_PATH MemMap; 473530d68baSNigel Croxon VENDOR_DEVICE_PATH Vendor; 474530d68baSNigel Croxon UNKNOWN_DEVICE_VENDOR_DEVICE_PATH UnknownVendor; 475530d68baSNigel Croxon CONTROLLER_DEVICE_PATH Controller; 476530d68baSNigel Croxon ACPI_HID_DEVICE_PATH Acpi; 477530d68baSNigel Croxon 478530d68baSNigel Croxon ATAPI_DEVICE_PATH Atapi; 479530d68baSNigel Croxon SCSI_DEVICE_PATH Scsi; 480530d68baSNigel Croxon FIBRECHANNEL_DEVICE_PATH FibreChannel; 481530d68baSNigel Croxon 482530d68baSNigel Croxon F1394_DEVICE_PATH F1394; 483530d68baSNigel Croxon USB_DEVICE_PATH Usb; 484530d68baSNigel Croxon USB_CLASS_DEVICE_PATH UsbClass; 485530d68baSNigel Croxon I2O_DEVICE_PATH I2O; 486530d68baSNigel Croxon MAC_ADDR_DEVICE_PATH MacAddr; 487530d68baSNigel Croxon IPv4_DEVICE_PATH Ipv4; 488530d68baSNigel Croxon IPv6_DEVICE_PATH Ipv6; 489fbcdcf56SNigel Croxon URI_DEVICE_PATH Uri; 490530d68baSNigel Croxon INFINIBAND_DEVICE_PATH InfiniBand; 491530d68baSNigel Croxon UART_DEVICE_PATH Uart; 492530d68baSNigel Croxon 493530d68baSNigel Croxon HARDDRIVE_DEVICE_PATH HardDrive; 494530d68baSNigel Croxon CDROM_DEVICE_PATH CD; 495530d68baSNigel Croxon 496530d68baSNigel Croxon FILEPATH_DEVICE_PATH FilePath; 497530d68baSNigel Croxon MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol; 498530d68baSNigel Croxon 499530d68baSNigel Croxon BBS_BBS_DEVICE_PATH Bbs; 500530d68baSNigel Croxon 501530d68baSNigel Croxon } EFI_DEV_PATH; 502530d68baSNigel Croxon 503530d68baSNigel Croxon typedef union { 5041b10394eSNigel Croxon EFI_DEVICE_PATH_PROTOCOL *DevPath; 505530d68baSNigel Croxon PCI_DEVICE_PATH *Pci; 506530d68baSNigel Croxon PCCARD_DEVICE_PATH *PcCard; 507530d68baSNigel Croxon MEMMAP_DEVICE_PATH *MemMap; 508530d68baSNigel Croxon VENDOR_DEVICE_PATH *Vendor; 509530d68baSNigel Croxon UNKNOWN_DEVICE_VENDOR_DEVICE_PATH *UnknownVendor; 510530d68baSNigel Croxon CONTROLLER_DEVICE_PATH *Controller; 511530d68baSNigel Croxon ACPI_HID_DEVICE_PATH *Acpi; 512530d68baSNigel Croxon 513530d68baSNigel Croxon ATAPI_DEVICE_PATH *Atapi; 514530d68baSNigel Croxon SCSI_DEVICE_PATH *Scsi; 515530d68baSNigel Croxon FIBRECHANNEL_DEVICE_PATH *FibreChannel; 516530d68baSNigel Croxon 517530d68baSNigel Croxon F1394_DEVICE_PATH *F1394; 518530d68baSNigel Croxon USB_DEVICE_PATH *Usb; 519530d68baSNigel Croxon USB_CLASS_DEVICE_PATH *UsbClass; 520530d68baSNigel Croxon I2O_DEVICE_PATH *I2O; 521530d68baSNigel Croxon MAC_ADDR_DEVICE_PATH *MacAddr; 522530d68baSNigel Croxon IPv4_DEVICE_PATH *Ipv4; 523530d68baSNigel Croxon IPv6_DEVICE_PATH *Ipv6; 524fbcdcf56SNigel Croxon URI_DEVICE_PATH *Uri; 525530d68baSNigel Croxon INFINIBAND_DEVICE_PATH *InfiniBand; 526530d68baSNigel Croxon UART_DEVICE_PATH *Uart; 527530d68baSNigel Croxon 528530d68baSNigel Croxon HARDDRIVE_DEVICE_PATH *HardDrive; 529530d68baSNigel Croxon 530530d68baSNigel Croxon FILEPATH_DEVICE_PATH *FilePath; 531530d68baSNigel Croxon MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol; 532530d68baSNigel Croxon 533530d68baSNigel Croxon CDROM_DEVICE_PATH *CD; 534530d68baSNigel Croxon BBS_BBS_DEVICE_PATH *Bbs; 535530d68baSNigel Croxon 536530d68baSNigel Croxon } EFI_DEV_PATH_PTR; 537530d68baSNigel Croxon 5387993cbccSNigel Croxon #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID \ 5397993cbccSNigel Croxon { 0x8b843e20, 0x8132, 0x4852, {0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c} } 5407993cbccSNigel Croxon 5417993cbccSNigel Croxon typedef 5427993cbccSNigel Croxon CHAR16* 5437993cbccSNigel Croxon (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE) ( 5447993cbccSNigel Croxon IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode, 5457993cbccSNigel Croxon IN BOOLEAN DisplayOnly, 5467993cbccSNigel Croxon IN BOOLEAN AllowShortcuts 5477993cbccSNigel Croxon ); 5487993cbccSNigel Croxon 5497993cbccSNigel Croxon typedef 5507993cbccSNigel Croxon CHAR16* 5517993cbccSNigel Croxon (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH) ( 5527993cbccSNigel Croxon IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, 5537993cbccSNigel Croxon IN BOOLEAN DisplayOnly, 5547993cbccSNigel Croxon IN BOOLEAN AllowShortcuts 5557993cbccSNigel Croxon ); 5567993cbccSNigel Croxon 5577993cbccSNigel Croxon typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL { 5587993cbccSNigel Croxon EFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText; 5597993cbccSNigel Croxon EFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText; 5607993cbccSNigel Croxon } EFI_DEVICE_PATH_TO_TEXT_PROTOCOL; 5617993cbccSNigel Croxon 5627993cbccSNigel Croxon #define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID \ 5637993cbccSNigel Croxon { 0x5c99a21, 0xc70f, 0x4ad2, {0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e} } 5647993cbccSNigel Croxon 5657993cbccSNigel Croxon typedef 5667993cbccSNigel Croxon EFI_DEVICE_PATH_PROTOCOL* 5677993cbccSNigel Croxon (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_NODE) ( 5687993cbccSNigel Croxon IN CONST CHAR16 *TextDeviceNode 5697993cbccSNigel Croxon ); 5707993cbccSNigel Croxon 5717993cbccSNigel Croxon typedef 5727993cbccSNigel Croxon EFI_DEVICE_PATH_PROTOCOL* 5737993cbccSNigel Croxon (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_PATH) ( 5747993cbccSNigel Croxon IN CONST CHAR16 *TextDevicePath 5757993cbccSNigel Croxon ); 5767993cbccSNigel Croxon 5777993cbccSNigel Croxon typedef struct { 5787993cbccSNigel Croxon EFI_DEVICE_PATH_FROM_TEXT_NODE ConvertTextToDeviceNode; 5797993cbccSNigel Croxon EFI_DEVICE_PATH_FROM_TEXT_PATH ConvertTextToDevicePath; 5807993cbccSNigel Croxon } EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL; 581*ce0bd62fSKagurazaka Kotori 582*ce0bd62fSKagurazaka Kotori #define EFI_DEVICE_PATH_UTILITIES_PROTOCOL_GUID \ 583*ce0bd62fSKagurazaka Kotori { 0x379be4e, 0xd706, 0x437d, {0xb0, 0x37, 0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4} } 584*ce0bd62fSKagurazaka Kotori 585*ce0bd62fSKagurazaka Kotori typedef 586*ce0bd62fSKagurazaka Kotori UINTN 587*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE) ( 588*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath 589*ce0bd62fSKagurazaka Kotori ); 590*ce0bd62fSKagurazaka Kotori 591*ce0bd62fSKagurazaka Kotori typedef 592*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_PROTOCOL* 593*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH) ( 594*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath 595*ce0bd62fSKagurazaka Kotori ); 596*ce0bd62fSKagurazaka Kotori 597*ce0bd62fSKagurazaka Kotori typedef 598*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_PROTOCOL* 599*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_PATH) ( 600*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *Src1, 601*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *Src2 602*ce0bd62fSKagurazaka Kotori ); 603*ce0bd62fSKagurazaka Kotori 604*ce0bd62fSKagurazaka Kotori typedef 605*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_PROTOCOL* 606*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_NODE) ( 607*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, 608*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *DeviceNode 609*ce0bd62fSKagurazaka Kotori ); 610*ce0bd62fSKagurazaka Kotori 611*ce0bd62fSKagurazaka Kotori typedef 612*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_PROTOCOL* 613*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE) ( 614*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath, 615*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePathInstance 616*ce0bd62fSKagurazaka Kotori ); 617*ce0bd62fSKagurazaka Kotori 618*ce0bd62fSKagurazaka Kotori typedef 619*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_PROTOCOL* 620*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE) ( 621*ce0bd62fSKagurazaka Kotori IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePathInstance, 622*ce0bd62fSKagurazaka Kotori OUT UINTN *DevicePathInstanceSize OPTIONAL 623*ce0bd62fSKagurazaka Kotori ); 624*ce0bd62fSKagurazaka Kotori 625*ce0bd62fSKagurazaka Kotori typedef 626*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_PROTOCOL* 627*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_CREATE_NODE) ( 628*ce0bd62fSKagurazaka Kotori IN UINT8 NodeType, 629*ce0bd62fSKagurazaka Kotori IN UINT8 NodeSubType, 630*ce0bd62fSKagurazaka Kotori IN UINT16 NodeLength 631*ce0bd62fSKagurazaka Kotori ); 632*ce0bd62fSKagurazaka Kotori 633*ce0bd62fSKagurazaka Kotori typedef 634*ce0bd62fSKagurazaka Kotori BOOLEAN 635*ce0bd62fSKagurazaka Kotori (EFIAPI *EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE) ( 636*ce0bd62fSKagurazaka Kotori IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath 637*ce0bd62fSKagurazaka Kotori ); 638*ce0bd62fSKagurazaka Kotori 639*ce0bd62fSKagurazaka Kotori typedef struct _EFI_DEVICE_PATH_UTILITIES_PROTOCOL { 640*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_GET_DEVICE_PATH_SIZE GetDevicePathSize; 641*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_DUP_DEVICE_PATH DuplicateDevicePath; 642*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_APPEND_PATH AppendDevicePath; 643*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_APPEND_NODE AppendDeviceNode; 644*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_APPEND_INSTANCE AppendDevicePathInstance; 645*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_GET_NEXT_INSTANCE GetNextDevicePathInstance; 646*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_IS_MULTI_INSTANCE IsDevicePathMultiInstance; 647*ce0bd62fSKagurazaka Kotori EFI_DEVICE_PATH_UTILS_CREATE_NODE CreateDeviceNode; 648*ce0bd62fSKagurazaka Kotori } EFI_DEVICE_PATH_UTILITIES_PROTOCOL; 649530d68baSNigel Croxon 650530d68baSNigel Croxon #endif 651