Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:05

0001 /* $FreeBSD$ */
0002 #ifndef _DEVPATH_H
0003 #define _DEVPATH_H
0004 
0005 /*++
0006 
0007 Copyright (c)  1999 - 2002 Intel Corporation. All rights reserved
0008 This software and associated documentation (if any) is furnished
0009 under a license and may only be used or copied in accordance
0010 with the terms of the license. Except as permitted by such
0011 license, no part of this software or documentation may be
0012 reproduced, stored in a retrieval system, or transmitted in any
0013 form or by any means without the express written consent of
0014 Intel Corporation.
0015 
0016 Module Name:
0017 
0018     devpath.h
0019 
0020 Abstract:
0021 
0022     Defines for parsing the EFI Device Path structures
0023 
0024 
0025 
0026 Revision History
0027 
0028 --*/
0029 
0030 //
0031 // Device Path structures - Section C
0032 //
0033 
0034 #pragma pack(1)
0035 
0036 typedef struct _EFI_DEVICE_PATH {
0037         UINT8                           Type;
0038         UINT8                           SubType;
0039         UINT8                           Length[2];
0040 } EFI_DEVICE_PATH;
0041 
0042 #define EFI_DP_TYPE_MASK                    0x7F
0043 #define EFI_DP_TYPE_UNPACKED                0x80
0044 
0045 #define END_DEVICE_PATH_TYPE                0x7f
0046 
0047 #define END_ENTIRE_DEVICE_PATH_SUBTYPE      0xff
0048 #define END_INSTANCE_DEVICE_PATH_SUBTYPE    0x01
0049 #define END_DEVICE_PATH_LENGTH              (sizeof(EFI_DEVICE_PATH))
0050 
0051 
0052 #define DP_IS_END_TYPE(a)
0053 #define DP_IS_END_SUBTYPE(a)        ( ((a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
0054 
0055 #define DevicePathType(a)           ( ((a)->Type) & EFI_DP_TYPE_MASK )
0056 #define DevicePathSubType(a)        ( (a)->SubType )
0057 #define DevicePathNodeLength(a)     ((size_t)(((a)->Length[0]) | ((a)->Length[1] << 8)))
0058 #define NextDevicePathNode(a)       ( (EFI_DEVICE_PATH *) ( ((UINT8 *) (a)) + DevicePathNodeLength(a)))
0059 #define IsDevicePathType(a, t)      ( DevicePathType(a) == t )
0060 #define IsDevicePathEndType(a)      IsDevicePathType(a, END_DEVICE_PATH_TYPE)
0061 #define IsDevicePathEndSubType(a)   ( (a)->SubType == END_ENTIRE_DEVICE_PATH_SUBTYPE )
0062 #define IsDevicePathEnd(a)          ( IsDevicePathEndType(a) && IsDevicePathEndSubType(a) )
0063 #define IsDevicePathUnpacked(a)     ( (a)->Type & EFI_DP_TYPE_UNPACKED )
0064 
0065 
0066 #define SetDevicePathNodeLength(a,l) {                  \
0067             (a)->Length[0] = (UINT8) (l);               \
0068             (a)->Length[1] = (UINT8) ((l) >> 8);        \
0069             }
0070 
0071 #define SetDevicePathEndNode(a)  {                      \
0072             (a)->Type = END_DEVICE_PATH_TYPE;           \
0073             (a)->SubType = END_ENTIRE_DEVICE_PATH_SUBTYPE;     \
0074             (a)->Length[0] = sizeof(EFI_DEVICE_PATH);   \
0075             (a)->Length[1] = 0;                         \
0076             }
0077 
0078 /*
0079  *
0080  */
0081 #define HARDWARE_DEVICE_PATH            0x01
0082 
0083 #define HW_PCI_DP                       0x01
0084 typedef struct _PCI_DEVICE_PATH {
0085         EFI_DEVICE_PATH                 Header;
0086         UINT8                           Function;
0087         UINT8                           Device;
0088 } PCI_DEVICE_PATH;
0089 
0090 #define HW_PCCARD_DP                    0x02
0091 typedef struct _PCCARD_DEVICE_PATH {
0092         EFI_DEVICE_PATH                 Header;
0093         UINT8                           FunctionNumber;
0094 } PCCARD_DEVICE_PATH;
0095 
0096 #define HW_MEMMAP_DP                    0x03
0097 typedef struct _MEMMAP_DEVICE_PATH {
0098         EFI_DEVICE_PATH                 Header;
0099         UINT32                          MemoryType;
0100         EFI_PHYSICAL_ADDRESS            StartingAddress;
0101         EFI_PHYSICAL_ADDRESS            EndingAddress;
0102 } MEMMAP_DEVICE_PATH;
0103 
0104 #define HW_VENDOR_DP                    0x04
0105 typedef struct _VENDOR_DEVICE_PATH {
0106         EFI_DEVICE_PATH                 Header;
0107         EFI_GUID                        Guid;
0108 } VENDOR_DEVICE_PATH;
0109 
0110 #define UNKNOWN_DEVICE_GUID \
0111     { 0xcf31fac5, 0xc24e, 0x11d2, {0x85, 0xf3, 0x0, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b} }
0112 
0113 typedef struct _UKNOWN_DEVICE_VENDOR_DP {
0114     VENDOR_DEVICE_PATH      DevicePath;
0115     UINT8                   LegacyDriveLetter;
0116 } UNKNOWN_DEVICE_VENDOR_DEVICE_PATH;
0117 
0118 #define HW_CONTROLLER_DP            0x05
0119 typedef struct _CONTROLLER_DEVICE_PATH {
0120         EFI_DEVICE_PATH     Header;
0121         UINT32              Controller;
0122 } CONTROLLER_DEVICE_PATH;
0123 
0124 /*
0125  *
0126  */
0127 #define ACPI_DEVICE_PATH                 0x02
0128 
0129 #define ACPI_DP                         0x01
0130 typedef struct _ACPI_HID_DEVICE_PATH {
0131         EFI_DEVICE_PATH                 Header;
0132         UINT32                          HID;
0133         UINT32                          UID;
0134 } ACPI_HID_DEVICE_PATH;
0135 
0136 #define ACPI_EXTENDED_DP          0x02
0137 typedef struct _ACPI_EXTENDED_HID_DEVICE_PATH {
0138   EFI_DEVICE_PATH                 Header;
0139   UINT32                          HID;
0140   UINT32                          UID;
0141   UINT32                          CID;
0142 } ACPI_EXTENDED_HID_DEVICE_PATH;
0143 
0144 #define ACPI_ADR_DP                         0x03
0145 /* ACPI_ADR_DEVICE_PATH not defined */
0146 
0147 //
0148 // EISA ID Macro
0149 // EISA ID Definition 32-bits
0150 //  bits[15:0] - three character compressed ASCII EISA ID.
0151 //  bits[31:16] - binary number
0152 //   Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z'
0153 //
0154 #define PNP_EISA_ID_CONST       0x41d0    
0155 #define EISA_ID(_Name, _Num)    ((UINT32) ((_Name) | (_Num) << 16))   
0156 #define EISA_PNP_ID(_PNPId)     (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
0157 #define EFI_PNP_ID(_PNPId)      (EISA_ID(PNP_EISA_ID_CONST, (_PNPId)))
0158 
0159 #define PNP_EISA_ID_MASK        0xffff
0160 #define EISA_ID_TO_NUM(_Id)     ((_Id) >> 16)
0161 /*
0162  *
0163  */
0164 #define MESSAGING_DEVICE_PATH           0x03 
0165 
0166 #define MSG_ATAPI_DP                    0x01
0167 typedef struct _ATAPI_DEVICE_PATH {
0168         EFI_DEVICE_PATH                 Header;
0169         UINT8                           PrimarySecondary;
0170         UINT8                           SlaveMaster;
0171         UINT16                          Lun;
0172 } ATAPI_DEVICE_PATH;
0173 
0174 #define MSG_SCSI_DP                     0x02
0175 typedef struct _SCSI_DEVICE_PATH {
0176         EFI_DEVICE_PATH                 Header;
0177         UINT16                          Pun;
0178         UINT16                          Lun; 
0179 } SCSI_DEVICE_PATH;
0180 
0181 #define MSG_FIBRECHANNEL_DP             0x03
0182 typedef struct _FIBRECHANNEL_DEVICE_PATH {
0183         EFI_DEVICE_PATH                 Header;
0184         UINT32                          Reserved;
0185         UINT64                          WWN;
0186         UINT64                          Lun;
0187 } FIBRECHANNEL_DEVICE_PATH;
0188 
0189 #define MSG_1394_DP                     0x04
0190 typedef struct _F1394_DEVICE_PATH {
0191         EFI_DEVICE_PATH                 Header;
0192         UINT32                          Reserved;
0193         UINT64                          Guid;
0194 } F1394_DEVICE_PATH;
0195 
0196 #define MSG_USB_DP                      0x05
0197 typedef struct _USB_DEVICE_PATH {
0198     EFI_DEVICE_PATH                     Header;
0199     UINT8                                         ParentPortNumber;
0200     UINT8                                         InterfaceNumber;
0201 } USB_DEVICE_PATH;
0202 
0203 #define MSG_USB_CLASS_DP                0x0F
0204 typedef struct _USB_CLASS_DEVICE_PATH {
0205         EFI_DEVICE_PATH                 Header;
0206         UINT16                          VendorId;
0207         UINT16                          ProductId;
0208         UINT8                           DeviceClass;
0209         UINT8                           DeviceSubClass;
0210         UINT8                           DeviceProtocol;
0211 } USB_CLASS_DEVICE_PATH;
0212 
0213 #define MSG_I2O_DP                      0x06
0214 typedef struct _I2O_DEVICE_PATH {
0215         EFI_DEVICE_PATH                 Header;
0216         UINT32                          Tid;
0217 } I2O_DEVICE_PATH;
0218 
0219 #define MSG_MAC_ADDR_DP                 0x0b
0220 typedef struct _MAC_ADDR_DEVICE_PATH {
0221         EFI_DEVICE_PATH                 Header;
0222         EFI_MAC_ADDRESS                 MacAddress;
0223         UINT8                           IfType;
0224 } MAC_ADDR_DEVICE_PATH;
0225 
0226 #define MSG_IPv4_DP                     0x0c
0227 typedef struct _IPv4_DEVICE_PATH {
0228         EFI_DEVICE_PATH                 Header;
0229         EFI_IPv4_ADDRESS                LocalIpAddress;
0230         EFI_IPv4_ADDRESS                RemoteIpAddress;
0231         UINT16                          LocalPort;
0232         UINT16                          RemotePort;
0233         UINT16                          Protocol;
0234         BOOLEAN                         StaticIpAddress;
0235         EFI_IPv4_ADDRESS                GatewayIpAddress;
0236         EFI_IPv4_ADDRESS                SubnetMask;
0237 } IPv4_DEVICE_PATH;
0238 
0239 #define MSG_IPv6_DP                     0x0d
0240 typedef struct _IPv6_DEVICE_PATH {
0241         EFI_DEVICE_PATH                 Header;
0242         EFI_IPv6_ADDRESS                LocalIpAddress;
0243         EFI_IPv6_ADDRESS                RemoteIpAddress;
0244         UINT16                          LocalPort;
0245         UINT16                          RemotePort;
0246         UINT16                          Protocol;
0247         BOOLEAN                         StaticIpAddress;
0248 } IPv6_DEVICE_PATH;
0249 
0250 #define MSG_INFINIBAND_DP               0x09
0251 typedef struct _INFINIBAND_DEVICE_PATH {
0252   EFI_DEVICE_PATH                       Header;
0253   UINT32                                ResourceFlags;
0254   UINT8                                 PortGid[16];
0255   UINT64                                ServiceId;
0256   UINT64                                TargetPortId;
0257   UINT64                                DeviceId;
0258 } INFINIBAND_DEVICE_PATH;
0259 
0260 #define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE                0x01
0261 #define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT  0x02
0262 #define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL           0x04
0263 #define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL           0x08
0264 #define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL           0x10
0265 
0266 #define MSG_UART_DP                     0x0e
0267 typedef struct _UART_DEVICE_PATH {
0268         EFI_DEVICE_PATH                 Header;
0269         UINT32                          Reserved;
0270         UINT64                          BaudRate;
0271         UINT8                           DataBits;
0272         UINT8                           Parity;
0273         UINT8                           StopBits;
0274 } UART_DEVICE_PATH;
0275 
0276 #define MSG_VENDOR_DP                   0x0A
0277 /* Use VENDOR_DEVICE_PATH struct */
0278 
0279 #define DEVICE_PATH_MESSAGING_PC_ANSI \
0280     { 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0281 
0282 #define DEVICE_PATH_MESSAGING_VT_100 \
0283     { 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d} }
0284 
0285 #define DEVICE_PATH_MESSAGING_VT_100_PLUS \
0286     { 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43} }
0287     
0288 #define DEVICE_PATH_MESSAGING_VT_UTF8 \
0289     { 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88} }
0290 
0291 /* Device Logical Unit SubType. */
0292 #define MSG_DEVICE_LOGICAL_UNIT_DP  0x11
0293 typedef struct {
0294     EFI_DEVICE_PATH         Header;
0295     /* Logical Unit Number for the interface. */
0296     UINT8               Lun;
0297 } DEVICE_LOGICAL_UNIT_DEVICE_PATH;
0298 
0299 #define MSG_SATA_DP         0x12
0300 typedef struct _SATA_DEVICE_PATH {
0301     EFI_DEVICE_PATH         Header;
0302     UINT16              HBAPortNumber;
0303     UINT16              PortMultiplierPortNumber;
0304     UINT16              Lun;
0305 } SATA_DEVICE_PATH;
0306 
0307 
0308 /* DNS Device Path SubType */
0309 #define MSG_DNS_DP                0x1F
0310 typedef struct {
0311   EFI_DEVICE_PATH                 Header;
0312   /* Indicates the DNS server address is IPv4 or IPv6 address. */
0313   UINT8                           IsIPv6;
0314   /* Instance of the DNS server address. */
0315   /* XXX: actually EFI_IP_ADDRESS */
0316   EFI_IPv4_ADDRESS                DnsServerIp[];
0317 } DNS_DEVICE_PATH;
0318 
0319 /* Uniform Resource Identifiers (URI) Device Path SubType */
0320 #define MSG_URI_DP                0x18
0321 typedef struct {
0322   EFI_DEVICE_PATH                 Header;
0323   /* Instance of the URI pursuant to RFC 3986. */
0324   CHAR8                           Uri[];
0325 } URI_DEVICE_PATH;
0326 
0327 #define MEDIA_DEVICE_PATH               0x04
0328 
0329 #define MEDIA_HARDDRIVE_DP              0x01
0330 typedef struct _HARDDRIVE_DEVICE_PATH {
0331         EFI_DEVICE_PATH                 Header;
0332         UINT32                          PartitionNumber;
0333         UINT64                          PartitionStart;
0334         UINT64                          PartitionSize;
0335         UINT8                           Signature[16];
0336         UINT8                           MBRType;
0337         UINT8                           SignatureType;
0338 } HARDDRIVE_DEVICE_PATH;
0339 
0340 #define MBR_TYPE_PCAT                       0x01
0341 #define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02
0342 
0343 #define SIGNATURE_TYPE_MBR                  0x01
0344 #define SIGNATURE_TYPE_GUID                 0x02
0345 
0346 #define MEDIA_CDROM_DP                  0x02
0347 typedef struct _CDROM_DEVICE_PATH {
0348         EFI_DEVICE_PATH                 Header;
0349         UINT32                          BootEntry;
0350         UINT64                          PartitionStart;
0351         UINT64                          PartitionSize;
0352 } CDROM_DEVICE_PATH;
0353 
0354 #define MEDIA_VENDOR_DP                 0x03
0355 /* Use VENDOR_DEVICE_PATH struct */
0356 
0357 #define MEDIA_FILEPATH_DP               0x04
0358 typedef struct _FILEPATH_DEVICE_PATH {
0359         EFI_DEVICE_PATH                 Header;
0360         CHAR16                          PathName[1];
0361 } FILEPATH_DEVICE_PATH;
0362 
0363 #define SIZE_OF_FILEPATH_DEVICE_PATH EFI_FIELD_OFFSET(FILEPATH_DEVICE_PATH,PathName)
0364 
0365 #define MEDIA_PROTOCOL_DP               0x05
0366 typedef struct _MEDIA_PROTOCOL_DEVICE_PATH {
0367         EFI_DEVICE_PATH                 Header;
0368         EFI_GUID                        Protocol;
0369 } MEDIA_PROTOCOL_DEVICE_PATH;
0370 
0371 
0372 #define BBS_DEVICE_PATH                 0x05
0373 #define BBS_BBS_DP                      0x01
0374 typedef struct _BBS_BBS_DEVICE_PATH {
0375         EFI_DEVICE_PATH                 Header;
0376         UINT16                          DeviceType;
0377         UINT16                          StatusFlag;
0378         CHAR8                           String[1];
0379 } BBS_BBS_DEVICE_PATH;
0380 
0381 /* DeviceType definitions - from BBS specification */
0382 #define BBS_TYPE_FLOPPY                 0x01
0383 #define BBS_TYPE_HARDDRIVE              0x02
0384 #define BBS_TYPE_CDROM                  0x03
0385 #define BBS_TYPE_PCMCIA                 0x04
0386 #define BBS_TYPE_USB                    0x05
0387 #define BBS_TYPE_EMBEDDED_NETWORK       0x06
0388 #define BBS_TYPE_DEV                    0x80
0389 #define BBS_TYPE_UNKNOWN                0xFF
0390 
0391 typedef union {
0392     EFI_DEVICE_PATH                      DevPath;
0393     PCI_DEVICE_PATH                      Pci;
0394     PCCARD_DEVICE_PATH                   PcCard;
0395     MEMMAP_DEVICE_PATH                   MemMap;
0396     VENDOR_DEVICE_PATH                   Vendor;
0397     UNKNOWN_DEVICE_VENDOR_DEVICE_PATH    UnknownVendor;   
0398     CONTROLLER_DEVICE_PATH               Controller;
0399     ACPI_HID_DEVICE_PATH                 Acpi;
0400 
0401     ATAPI_DEVICE_PATH                    Atapi;
0402     SCSI_DEVICE_PATH                     Scsi;
0403     FIBRECHANNEL_DEVICE_PATH             FibreChannel;
0404 
0405     F1394_DEVICE_PATH                    F1394;
0406     USB_DEVICE_PATH                      Usb;
0407     USB_CLASS_DEVICE_PATH                UsbClass;
0408     I2O_DEVICE_PATH                      I2O;
0409     MAC_ADDR_DEVICE_PATH                 MacAddr;
0410     IPv4_DEVICE_PATH                     Ipv4;
0411     IPv6_DEVICE_PATH                     Ipv6;
0412     INFINIBAND_DEVICE_PATH               InfiniBand;
0413     UART_DEVICE_PATH                     Uart;
0414 
0415     HARDDRIVE_DEVICE_PATH                HardDrive;
0416     CDROM_DEVICE_PATH                    CD;
0417 
0418     FILEPATH_DEVICE_PATH                 FilePath;
0419     MEDIA_PROTOCOL_DEVICE_PATH           MediaProtocol;
0420 
0421     BBS_BBS_DEVICE_PATH                  Bbs;
0422 
0423 } EFI_DEV_PATH;
0424 
0425 typedef union {
0426     EFI_DEVICE_PATH                      *DevPath;
0427     PCI_DEVICE_PATH                      *Pci;
0428     PCCARD_DEVICE_PATH                   *PcCard;
0429     MEMMAP_DEVICE_PATH                   *MemMap;
0430     VENDOR_DEVICE_PATH                   *Vendor;
0431     UNKNOWN_DEVICE_VENDOR_DEVICE_PATH    *UnknownVendor;   
0432     CONTROLLER_DEVICE_PATH               *Controller;
0433     ACPI_HID_DEVICE_PATH                 *Acpi;
0434     ACPI_EXTENDED_HID_DEVICE_PATH        *ExtendedAcpi;
0435 
0436     ATAPI_DEVICE_PATH                    *Atapi;
0437     SCSI_DEVICE_PATH                     *Scsi;
0438     FIBRECHANNEL_DEVICE_PATH             *FibreChannel;
0439 
0440     F1394_DEVICE_PATH                    *F1394;
0441     USB_DEVICE_PATH                      *Usb;
0442     USB_CLASS_DEVICE_PATH                *UsbClass;
0443     I2O_DEVICE_PATH                      *I2O;
0444     MAC_ADDR_DEVICE_PATH                 *MacAddr;
0445     IPv4_DEVICE_PATH                     *Ipv4;
0446     IPv6_DEVICE_PATH                     *Ipv6;
0447     INFINIBAND_DEVICE_PATH               *InfiniBand;
0448     UART_DEVICE_PATH                     *Uart;
0449 
0450     HARDDRIVE_DEVICE_PATH                *HardDrive;
0451 
0452     FILEPATH_DEVICE_PATH                 *FilePath;
0453     MEDIA_PROTOCOL_DEVICE_PATH           *MediaProtocol;
0454 
0455     CDROM_DEVICE_PATH                    *CD;
0456     BBS_BBS_DEVICE_PATH                  *Bbs;
0457 
0458 } EFI_DEV_PATH_PTR;
0459 
0460 #define EFI_LOADED_IMAGE_DEVICE_PATH_PROTOCOL_GUID          \
0461     { 0xbc62157e, 0x3e33, 0x4fec, { 0x99, 0x20, 0x2d, 0x3b, 0x36, 0xd7, 0x50, 0xdf } }
0462 
0463 #define EFI_DEVICE_PATH_TO_TEXT_PROTOCOL_GUID               \
0464     { 0x8b843e20, 0x8132, 0x4852, { 0x90, 0xcc, 0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c } }
0465 
0466 #define EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL_GUID             \
0467     { 0x05c99a21, 0xc70f, 0x4ad2, { 0x8a, 0x5f, 0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e } }
0468 
0469 INTERFACE_DECL(_EFI_DEVICE_PATH_PROTOCOL);
0470 
0471 typedef
0472 CHAR16*
0473 (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_NODE) (
0474     IN struct _EFI_DEVICE_PATH *This,
0475     IN BOOLEAN                 DisplayOnly,
0476     IN BOOLEAN                 AllowShortCuts
0477     );
0478 
0479 typedef
0480 CHAR16*
0481 (EFIAPI *EFI_DEVICE_PATH_TO_TEXT_PATH) (
0482     IN struct _EFI_DEVICE_PATH *This,
0483     IN BOOLEAN                 DisplayOnly,
0484     IN BOOLEAN                 AllowShortCuts
0485     );
0486 
0487 typedef struct _EFI_DEVICE_PATH_TO_TEXT_PROTOCOL {
0488     EFI_DEVICE_PATH_TO_TEXT_NODE ConvertDeviceNodeToText;
0489     EFI_DEVICE_PATH_TO_TEXT_PATH ConvertDevicePathToText;
0490 } EFI_DEVICE_PATH_TO_TEXT_PROTOCOL;
0491 
0492 typedef
0493 struct _EFI_DEVICE_PATH*
0494 (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_NODE) (
0495     IN CONST CHAR16* TextDeviceNode
0496     );
0497 typedef
0498 struct _EFI_DEVICE_PATH*
0499 (EFIAPI *EFI_DEVICE_PATH_FROM_TEXT_PATH) (
0500     IN CONST CHAR16* TextDevicePath
0501     );
0502 
0503 
0504 typedef struct _EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL {
0505     EFI_DEVICE_PATH_FROM_TEXT_NODE ConvertTextToDeviceNode;
0506     EFI_DEVICE_PATH_FROM_TEXT_PATH ConvertTextToDevicePath;
0507 } EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL;
0508 
0509 #pragma pack()
0510 
0511 #endif