efidevp.h 18 KB

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