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