Advertisement
Guest User

small.h

a guest
Feb 16th, 2015
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 29.51 KB | None | 0 0
  1. typedef unsigned long long UINT64;
  2.  
  3.  
  4.  
  5. typedef long long INT64;
  6.  
  7.  
  8.  
  9. typedef unsigned int UINT32;
  10.  
  11.  
  12.  
  13. typedef int INT32;
  14.  
  15.  
  16.  
  17. typedef unsigned short UINT16;
  18.  
  19.  
  20.  
  21. typedef unsigned short CHAR16;
  22.  
  23.  
  24.  
  25. typedef short INT16;
  26.  
  27.  
  28.  
  29. typedef unsigned char BOOLEAN;
  30.  
  31.  
  32.  
  33. typedef unsigned char UINT8;
  34.  
  35.  
  36.  
  37. typedef char CHAR8;
  38.  
  39.  
  40.  
  41. typedef signed char INT8;
  42.  
  43.  
  44.  
  45.  
  46.  
  47. //This may be 64 bit in later phases, but in the PEI phase it is confirmed to be 32 bits
  48.  
  49. //typedef UINT64 UINTN;
  50.  
  51. typedef UINT32 UINTN;
  52.  
  53.  
  54.  
  55. typedef INT64 INTN;
  56.  
  57.  
  58.  
  59. extern UINT8 _VerifySizeofBOOLEAN[(sizeof(BOOLEAN) == (1)) / (sizeof(BOOLEAN) == (1))];
  60.  
  61. extern UINT8 _VerifySizeofINT8[(sizeof(INT8) == (1)) / (sizeof(INT8) == (1))];
  62.  
  63. extern UINT8 _VerifySizeofUINT8[(sizeof(UINT8) == (1)) / (sizeof(UINT8) == (1))];
  64.  
  65. extern UINT8 _VerifySizeofINT16[(sizeof(INT16) == (2)) / (sizeof(INT16) == (2))];
  66.  
  67. extern UINT8 _VerifySizeofUINT16[(sizeof(UINT16) == (2)) / (sizeof(UINT16) == (2))];
  68.  
  69. extern UINT8 _VerifySizeofINT32[(sizeof(INT32) == (4)) / (sizeof(INT32) == (4))];
  70.  
  71. extern UINT8 _VerifySizeofUINT32[(sizeof(UINT32) == (4)) / (sizeof(UINT32) == (4))];
  72.  
  73. extern UINT8 _VerifySizeofINT64[(sizeof(INT64) == (8)) / (sizeof(INT64) == (8))];
  74.  
  75. extern UINT8 _VerifySizeofUINT64[(sizeof(UINT64) == (8)) / (sizeof(UINT64) == (8))];
  76.  
  77. extern UINT8 _VerifySizeofCHAR8[(sizeof(CHAR8) == (1)) / (sizeof(CHAR8) == (1))];
  78.  
  79. extern UINT8 _VerifySizeofCHAR16[(sizeof(CHAR16) == (2)) / (sizeof(CHAR16) == (2))];
  80.  
  81. typedef struct {
  82.  
  83. UINT32 Data1;
  84.  
  85. UINT16 Data2;
  86.  
  87. UINT16 Data3;
  88.  
  89. UINT8 Data4[8];
  90.  
  91. } GUID;
  92.  
  93.  
  94.  
  95. typedef UINT64 PHYSICAL_ADDRESS;
  96.  
  97.  
  98.  
  99. typedef struct _LIST_ENTRY LIST_ENTRY;
  100.  
  101.  
  102.  
  103. struct _LIST_ENTRY {
  104.  
  105. LIST_ENTRY *ForwardLink;
  106.  
  107. LIST_ENTRY *BackLink;
  108.  
  109. };
  110.  
  111. //typedef va_list VA_LIST;
  112.  
  113. typedef UINTN *BASE_LIST;
  114.  
  115. typedef UINTN RETURN_STATUS;
  116.  
  117. typedef GUID EFI_GUID;
  118.  
  119.  
  120.  
  121. typedef RETURN_STATUS EFI_STATUS;
  122.  
  123.  
  124.  
  125. typedef void VOID;
  126.  
  127.  
  128.  
  129. typedef void *EFI_HANDLE;
  130.  
  131.  
  132.  
  133. typedef void *EFI_EVENT;
  134.  
  135.  
  136.  
  137. typedef UINTN EFI_TPL;
  138.  
  139.  
  140.  
  141. typedef UINT64 EFI_LBA;
  142.  
  143.  
  144.  
  145. typedef UINT64 EFI_PHYSICAL_ADDRESS;
  146.  
  147.  
  148.  
  149. typedef UINT64 EFI_VIRTUAL_ADDRESS;
  150.  
  151. typedef struct {
  152.  
  153. UINT16 Year;
  154.  
  155. UINT8 Month;
  156.  
  157. UINT8 Day;
  158.  
  159. UINT8 Hour;
  160.  
  161. UINT8 Minute;
  162.  
  163. UINT8 Second;
  164.  
  165. UINT8 Pad1;
  166.  
  167. UINT32 Nanosecond;
  168.  
  169. INT16 TimeZone;
  170.  
  171. UINT8 Daylight;
  172.  
  173. UINT8 Pad2;
  174.  
  175. } EFI_TIME;
  176.  
  177.  
  178.  
  179. typedef struct {
  180.  
  181. UINT8 Addr[4];
  182.  
  183. } EFI_IPv4_ADDRESS;
  184.  
  185.  
  186.  
  187. typedef struct {
  188.  
  189. UINT8 Addr[16];
  190.  
  191. } EFI_IPv6_ADDRESS;
  192.  
  193.  
  194.  
  195. typedef struct {
  196.  
  197. UINT8 Addr[32];
  198.  
  199. } EFI_MAC_ADDRESS;
  200.  
  201.  
  202.  
  203. typedef union {
  204.  
  205. UINT32 Addr[4];
  206.  
  207. EFI_IPv4_ADDRESS v4;
  208.  
  209. EFI_IPv6_ADDRESS v6;
  210.  
  211. } EFI_IP_ADDRESS;
  212.  
  213.  
  214.  
  215. typedef struct {
  216.  
  217.  
  218.  
  219. UINT32 dwLength;
  220.  
  221.  
  222.  
  223. UINT16 wRevision;
  224.  
  225.  
  226.  
  227. UINT16 wCertificateType;
  228.  
  229.  
  230.  
  231. } WIN_CERTIFICATE;
  232.  
  233. typedef struct {
  234.  
  235. EFI_GUID HashType;
  236.  
  237. UINT8 PublicKey[256];
  238.  
  239. UINT8 Signature[256];
  240.  
  241. } EFI_CERT_BLOCK_RSA_2048_SHA256;
  242.  
  243.  
  244.  
  245. typedef struct {
  246.  
  247.  
  248.  
  249. WIN_CERTIFICATE Hdr;
  250.  
  251.  
  252.  
  253. EFI_GUID CertType;
  254.  
  255.  
  256.  
  257. UINT8 CertData[1];
  258.  
  259. } WIN_CERTIFICATE_UEFI_GUID;
  260.  
  261. typedef struct {
  262.  
  263.  
  264.  
  265. WIN_CERTIFICATE Hdr;
  266.  
  267.  
  268.  
  269. EFI_GUID HashAlgorithm;
  270.  
  271. } WIN_CERTIFICATE_EFI_PKCS1_15;
  272.  
  273.  
  274.  
  275. extern EFI_GUID gEfiCertTypeRsa2048Sha256Guid;
  276.  
  277.  
  278.  
  279. typedef enum {
  280.  
  281.  
  282.  
  283. EfiReservedMemoryType,
  284.  
  285.  
  286.  
  287. EfiLoaderCode,
  288.  
  289.  
  290.  
  291. EfiLoaderData,
  292.  
  293.  
  294.  
  295. EfiBootServicesCode,
  296.  
  297.  
  298.  
  299. EfiBootServicesData,
  300.  
  301.  
  302.  
  303. EfiRuntimeServicesCode,
  304.  
  305.  
  306.  
  307. EfiRuntimeServicesData,
  308.  
  309.  
  310.  
  311. EfiConventionalMemory,
  312.  
  313.  
  314.  
  315. EfiUnusableMemory,
  316.  
  317.  
  318.  
  319. EfiACPIReclaimMemory,
  320.  
  321.  
  322.  
  323. EfiACPIMemoryNVS,
  324.  
  325.  
  326.  
  327. EfiMemoryMappedIO,
  328.  
  329.  
  330.  
  331. EfiMemoryMappedIOPortSpace,
  332.  
  333.  
  334.  
  335. EfiPalCode,
  336.  
  337. EfiMaxMemoryType
  338.  
  339. } EFI_MEMORY_TYPE;
  340.  
  341.  
  342.  
  343. typedef struct {
  344.  
  345.  
  346.  
  347. UINT64 Signature;
  348.  
  349.  
  350.  
  351. UINT32 Revision;
  352.  
  353.  
  354.  
  355. UINT32 HeaderSize;
  356.  
  357.  
  358.  
  359. UINT32 CRC32;
  360.  
  361.  
  362.  
  363. UINT32 Reserved;
  364.  
  365. } EFI_TABLE_HEADER;
  366.  
  367.  
  368.  
  369. typedef struct {
  370.  
  371.  
  372.  
  373. UINT64 MonotonicCount;
  374.  
  375. WIN_CERTIFICATE_UEFI_GUID AuthInfo;
  376.  
  377. } EFI_VARIABLE_AUTHENTICATION;
  378.  
  379. typedef struct {
  380.  
  381.  
  382.  
  383. EFI_TIME TimeStamp;
  384.  
  385.  
  386.  
  387. WIN_CERTIFICATE_UEFI_GUID AuthInfo;
  388.  
  389. } EFI_VARIABLE_AUTHENTICATION_2;
  390.  
  391.  
  392.  
  393. extern EFI_GUID gEfiPcAnsiGuid;
  394.  
  395. extern EFI_GUID gEfiVT100Guid;
  396.  
  397. extern EFI_GUID gEfiVT100PlusGuid;
  398.  
  399. extern EFI_GUID gEfiVTUTF8Guid;
  400.  
  401. extern EFI_GUID gEfiUartDevicePathGuid;
  402.  
  403. extern EFI_GUID gEfiSasDevicePathGuid;
  404.  
  405. #pragma pack(1)
  406.  
  407. typedef struct {
  408.  
  409. UINT8 Type;
  410.  
  411.  
  412.  
  413. UINT8 SubType;
  414.  
  415.  
  416.  
  417. UINT8 Length[2];
  418.  
  419.  
  420.  
  421. } EFI_DEVICE_PATH_PROTOCOL;
  422.  
  423.  
  424.  
  425. typedef EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH;
  426.  
  427. typedef struct {
  428.  
  429. EFI_DEVICE_PATH_PROTOCOL Header;
  430.  
  431.  
  432.  
  433. UINT8 Function;
  434.  
  435.  
  436.  
  437. UINT8 Device;
  438.  
  439. } PCI_DEVICE_PATH;
  440.  
  441. typedef struct {
  442.  
  443. EFI_DEVICE_PATH_PROTOCOL Header;
  444.  
  445.  
  446.  
  447. UINT8 FunctionNumber;
  448.  
  449. } PCCARD_DEVICE_PATH;
  450.  
  451. typedef struct {
  452.  
  453. EFI_DEVICE_PATH_PROTOCOL Header;
  454.  
  455.  
  456.  
  457. UINT32 MemoryType;
  458.  
  459.  
  460.  
  461. EFI_PHYSICAL_ADDRESS StartingAddress;
  462.  
  463.  
  464.  
  465. EFI_PHYSICAL_ADDRESS EndingAddress;
  466.  
  467. } MEMMAP_DEVICE_PATH;
  468.  
  469. typedef struct {
  470.  
  471. EFI_DEVICE_PATH_PROTOCOL Header;
  472.  
  473.  
  474.  
  475. EFI_GUID Guid;
  476.  
  477.  
  478.  
  479. } VENDOR_DEVICE_PATH;
  480.  
  481. typedef struct {
  482.  
  483. EFI_DEVICE_PATH_PROTOCOL Header;
  484.  
  485.  
  486.  
  487. UINT32 ControllerNumber;
  488.  
  489. } CONTROLLER_DEVICE_PATH;
  490.  
  491. typedef struct {
  492.  
  493. EFI_DEVICE_PATH_PROTOCOL Header;
  494.  
  495.  
  496.  
  497. UINT32 HID;
  498.  
  499.  
  500.  
  501. UINT32 UID;
  502.  
  503. } ACPI_HID_DEVICE_PATH;
  504.  
  505.  
  506.  
  507. typedef struct {
  508.  
  509. EFI_DEVICE_PATH_PROTOCOL Header;
  510.  
  511.  
  512.  
  513. UINT32 HID;
  514.  
  515.  
  516.  
  517. UINT32 UID;
  518.  
  519.  
  520.  
  521. UINT32 CID;
  522.  
  523.  
  524.  
  525. } ACPI_EXTENDED_HID_DEVICE_PATH;
  526.  
  527. typedef struct {
  528.  
  529. EFI_DEVICE_PATH_PROTOCOL Header;
  530.  
  531.  
  532.  
  533. UINT32 ADR;
  534.  
  535.  
  536.  
  537. } ACPI_ADR_DEVICE_PATH;
  538.  
  539. typedef struct {
  540.  
  541. EFI_DEVICE_PATH_PROTOCOL Header;
  542.  
  543.  
  544.  
  545. UINT8 PrimarySecondary;
  546.  
  547.  
  548.  
  549. UINT8 SlaveMaster;
  550.  
  551.  
  552.  
  553. UINT16 Lun;
  554.  
  555. } ATAPI_DEVICE_PATH;
  556.  
  557.  
  558.  
  559. typedef struct {
  560.  
  561. EFI_DEVICE_PATH_PROTOCOL Header;
  562.  
  563.  
  564.  
  565. UINT16 Pun;
  566.  
  567.  
  568.  
  569. UINT16 Lun;
  570.  
  571. } SCSI_DEVICE_PATH;
  572.  
  573.  
  574.  
  575. typedef struct {
  576.  
  577. EFI_DEVICE_PATH_PROTOCOL Header;
  578.  
  579.  
  580.  
  581. UINT32 Reserved;
  582.  
  583.  
  584.  
  585. UINT64 WWN;
  586.  
  587.  
  588.  
  589. UINT64 Lun;
  590.  
  591. } FIBRECHANNEL_DEVICE_PATH;
  592.  
  593.  
  594.  
  595. typedef struct {
  596.  
  597. EFI_DEVICE_PATH_PROTOCOL Header;
  598.  
  599.  
  600.  
  601. UINT32 Reserved;
  602.  
  603.  
  604.  
  605. UINT8 WWN[8];
  606.  
  607.  
  608.  
  609. UINT8 Lun[8];
  610.  
  611. } FIBRECHANNELEX_DEVICE_PATH;
  612.  
  613.  
  614.  
  615. typedef struct {
  616.  
  617. EFI_DEVICE_PATH_PROTOCOL Header;
  618.  
  619.  
  620.  
  621. UINT32 Reserved;
  622.  
  623.  
  624.  
  625. UINT64 Guid;
  626.  
  627. } F1394_DEVICE_PATH;
  628.  
  629.  
  630.  
  631. typedef struct {
  632.  
  633. EFI_DEVICE_PATH_PROTOCOL Header;
  634.  
  635.  
  636.  
  637. UINT8 ParentPortNumber;
  638.  
  639.  
  640.  
  641. UINT8 InterfaceNumber;
  642.  
  643. } USB_DEVICE_PATH;
  644.  
  645.  
  646.  
  647. typedef struct {
  648.  
  649. EFI_DEVICE_PATH_PROTOCOL Header;
  650.  
  651.  
  652.  
  653. UINT16 VendorId;
  654.  
  655.  
  656.  
  657. UINT16 ProductId;
  658.  
  659.  
  660.  
  661. UINT8 DeviceClass;
  662.  
  663.  
  664.  
  665. UINT8 DeviceSubClass;
  666.  
  667.  
  668.  
  669. UINT8 DeviceProtocol;
  670.  
  671. } USB_CLASS_DEVICE_PATH;
  672.  
  673. typedef struct {
  674.  
  675. EFI_DEVICE_PATH_PROTOCOL Header;
  676.  
  677.  
  678.  
  679. UINT16 InterfaceNumber;
  680.  
  681.  
  682.  
  683. UINT16 VendorId;
  684.  
  685.  
  686.  
  687. UINT16 ProductId;
  688.  
  689.  
  690.  
  691. } USB_WWID_DEVICE_PATH;
  692.  
  693.  
  694.  
  695. typedef struct {
  696.  
  697. EFI_DEVICE_PATH_PROTOCOL Header;
  698.  
  699.  
  700.  
  701. UINT8 Lun;
  702.  
  703. } DEVICE_LOGICAL_UNIT_DEVICE_PATH;
  704.  
  705.  
  706.  
  707. typedef struct {
  708.  
  709. EFI_DEVICE_PATH_PROTOCOL Header;
  710.  
  711.  
  712.  
  713. UINT16 HBAPortNumber;
  714.  
  715.  
  716.  
  717. UINT16 PortMultiplierPortNumber;
  718.  
  719.  
  720.  
  721. UINT16 Lun;
  722.  
  723. } SATA_DEVICE_PATH;
  724.  
  725. typedef struct {
  726.  
  727. EFI_DEVICE_PATH_PROTOCOL Header;
  728.  
  729.  
  730.  
  731. UINT32 Tid;
  732.  
  733. } I2O_DEVICE_PATH;
  734.  
  735.  
  736.  
  737. typedef struct {
  738.  
  739. EFI_DEVICE_PATH_PROTOCOL Header;
  740.  
  741.  
  742.  
  743. EFI_MAC_ADDRESS MacAddress;
  744.  
  745.  
  746.  
  747. UINT8 IfType;
  748.  
  749. } MAC_ADDR_DEVICE_PATH;
  750.  
  751.  
  752.  
  753. typedef struct {
  754.  
  755. EFI_DEVICE_PATH_PROTOCOL Header;
  756.  
  757.  
  758.  
  759. EFI_IPv4_ADDRESS LocalIpAddress;
  760.  
  761.  
  762.  
  763. EFI_IPv4_ADDRESS RemoteIpAddress;
  764.  
  765.  
  766.  
  767. UINT16 LocalPort;
  768.  
  769.  
  770.  
  771. UINT16 RemotePort;
  772.  
  773.  
  774.  
  775. UINT16 Protocol;
  776.  
  777.  
  778.  
  779. BOOLEAN StaticIpAddress;
  780.  
  781.  
  782.  
  783. EFI_IPv4_ADDRESS GatewayIpAddress;
  784.  
  785.  
  786.  
  787. EFI_IPv4_ADDRESS SubnetMask;
  788.  
  789. } IPv4_DEVICE_PATH;
  790.  
  791.  
  792.  
  793. typedef struct {
  794.  
  795. EFI_DEVICE_PATH_PROTOCOL Header;
  796.  
  797.  
  798.  
  799. EFI_IPv6_ADDRESS LocalIpAddress;
  800.  
  801.  
  802.  
  803. EFI_IPv6_ADDRESS RemoteIpAddress;
  804.  
  805.  
  806.  
  807. UINT16 LocalPort;
  808.  
  809.  
  810.  
  811. UINT16 RemotePort;
  812.  
  813.  
  814.  
  815. UINT16 Protocol;
  816.  
  817.  
  818.  
  819. UINT8 IpAddressOrigin;
  820.  
  821.  
  822.  
  823. UINT8 PrefixLength;
  824.  
  825.  
  826.  
  827. EFI_IPv6_ADDRESS GatewayIpAddress;
  828.  
  829. } IPv6_DEVICE_PATH;
  830.  
  831.  
  832.  
  833. typedef struct {
  834.  
  835. EFI_DEVICE_PATH_PROTOCOL Header;
  836.  
  837. UINT32 ResourceFlags;
  838.  
  839.  
  840.  
  841. UINT8 PortGid[16];
  842.  
  843.  
  844.  
  845. UINT64 ServiceId;
  846.  
  847.  
  848.  
  849. UINT64 TargetPortId;
  850.  
  851.  
  852.  
  853. UINT64 DeviceId;
  854.  
  855. } INFINIBAND_DEVICE_PATH;
  856.  
  857. typedef struct {
  858.  
  859. EFI_DEVICE_PATH_PROTOCOL Header;
  860.  
  861.  
  862.  
  863. UINT32 Reserved;
  864.  
  865.  
  866.  
  867. UINT64 BaudRate;
  868.  
  869.  
  870.  
  871. UINT8 DataBits;
  872.  
  873. UINT8 Parity;
  874.  
  875.  
  876.  
  877. UINT8 StopBits;
  878.  
  879. } UART_DEVICE_PATH;
  880.  
  881.  
  882.  
  883. typedef VENDOR_DEVICE_PATH VENDOR_DEFINED_DEVICE_PATH;
  884.  
  885. typedef struct {
  886.  
  887. EFI_DEVICE_PATH_PROTOCOL Header;
  888.  
  889.  
  890.  
  891. EFI_GUID Guid;
  892.  
  893.  
  894.  
  895. UINT32 FlowControlMap;
  896.  
  897. } UART_FLOW_CONTROL_DEVICE_PATH;
  898.  
  899. typedef struct {
  900.  
  901. EFI_DEVICE_PATH_PROTOCOL Header;
  902.  
  903.  
  904.  
  905. EFI_GUID Guid;
  906.  
  907.  
  908.  
  909. UINT32 Reserved;
  910.  
  911.  
  912.  
  913. UINT64 SasAddress;
  914.  
  915.  
  916.  
  917. UINT64 Lun;
  918.  
  919.  
  920.  
  921. UINT16 DeviceTopology;
  922.  
  923.  
  924.  
  925. UINT16 RelativeTargetPort;
  926.  
  927. } SAS_DEVICE_PATH;
  928.  
  929.  
  930.  
  931. typedef struct {
  932.  
  933. EFI_DEVICE_PATH_PROTOCOL Header;
  934.  
  935.  
  936.  
  937. UINT8 SasAddress[8];
  938.  
  939.  
  940.  
  941. UINT8 Lun[8];
  942.  
  943.  
  944.  
  945. UINT16 DeviceTopology;
  946.  
  947.  
  948.  
  949. UINT16 RelativeTargetPort;
  950.  
  951. } SASEX_DEVICE_PATH;
  952.  
  953.  
  954.  
  955. typedef struct {
  956.  
  957. EFI_DEVICE_PATH_PROTOCOL Header;
  958.  
  959.  
  960.  
  961. UINT16 NetworkProtocol;
  962.  
  963.  
  964.  
  965. UINT16 LoginOption;
  966.  
  967.  
  968.  
  969. UINT64 Lun;
  970.  
  971.  
  972.  
  973. UINT16 TargetPortalGroupTag;
  974.  
  975.  
  976.  
  977. } ISCSI_DEVICE_PATH;
  978.  
  979. typedef struct {
  980.  
  981. EFI_DEVICE_PATH_PROTOCOL Header;
  982.  
  983.  
  984.  
  985. UINT16 VlanId;
  986.  
  987. } VLAN_DEVICE_PATH;
  988.  
  989. typedef struct {
  990.  
  991. EFI_DEVICE_PATH_PROTOCOL Header;
  992.  
  993.  
  994.  
  995. UINT32 PartitionNumber;
  996.  
  997.  
  998.  
  999. UINT64 PartitionStart;
  1000.  
  1001.  
  1002.  
  1003. UINT64 PartitionSize;
  1004.  
  1005.  
  1006.  
  1007. UINT8 Signature[16];
  1008.  
  1009.  
  1010.  
  1011. UINT8 MBRType;
  1012.  
  1013.  
  1014.  
  1015. UINT8 SignatureType;
  1016.  
  1017. } HARDDRIVE_DEVICE_PATH;
  1018.  
  1019. typedef struct {
  1020.  
  1021. EFI_DEVICE_PATH_PROTOCOL Header;
  1022.  
  1023.  
  1024.  
  1025. UINT32 BootEntry;
  1026.  
  1027.  
  1028.  
  1029. UINT64 PartitionStart;
  1030.  
  1031.  
  1032.  
  1033. UINT64 PartitionSize;
  1034.  
  1035. } CDROM_DEVICE_PATH;
  1036.  
  1037. typedef struct {
  1038.  
  1039. EFI_DEVICE_PATH_PROTOCOL Header;
  1040.  
  1041.  
  1042.  
  1043. CHAR16 PathName[1];
  1044.  
  1045. } FILEPATH_DEVICE_PATH;
  1046.  
  1047. typedef struct {
  1048.  
  1049. EFI_DEVICE_PATH_PROTOCOL Header;
  1050.  
  1051.  
  1052.  
  1053. EFI_GUID Protocol;
  1054.  
  1055. } MEDIA_PROTOCOL_DEVICE_PATH;
  1056.  
  1057. typedef struct {
  1058.  
  1059. EFI_DEVICE_PATH_PROTOCOL Header;
  1060.  
  1061.  
  1062.  
  1063. EFI_GUID FvFileName;
  1064.  
  1065. } MEDIA_FW_VOL_FILEPATH_DEVICE_PATH;
  1066.  
  1067. typedef struct {
  1068.  
  1069. EFI_DEVICE_PATH_PROTOCOL Header;
  1070.  
  1071.  
  1072.  
  1073. EFI_GUID FvName;
  1074.  
  1075. } MEDIA_FW_VOL_DEVICE_PATH;
  1076.  
  1077. typedef struct {
  1078.  
  1079. EFI_DEVICE_PATH_PROTOCOL Header;
  1080.  
  1081. UINT32 Reserved;
  1082.  
  1083. UINT64 StartingOffset;
  1084.  
  1085. UINT64 EndingOffset;
  1086.  
  1087. } MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH;
  1088.  
  1089. typedef struct {
  1090.  
  1091. EFI_DEVICE_PATH_PROTOCOL Header;
  1092.  
  1093.  
  1094.  
  1095. UINT16 DeviceType;
  1096.  
  1097.  
  1098.  
  1099. UINT16 StatusFlag;
  1100.  
  1101.  
  1102.  
  1103. CHAR8 String[1];
  1104.  
  1105. } BBS_BBS_DEVICE_PATH;
  1106.  
  1107. typedef union {
  1108.  
  1109. EFI_DEVICE_PATH_PROTOCOL DevPath;
  1110.  
  1111. PCI_DEVICE_PATH Pci;
  1112.  
  1113. PCCARD_DEVICE_PATH PcCard;
  1114.  
  1115. MEMMAP_DEVICE_PATH MemMap;
  1116.  
  1117. VENDOR_DEVICE_PATH Vendor;
  1118.  
  1119.  
  1120.  
  1121. CONTROLLER_DEVICE_PATH Controller;
  1122.  
  1123. ACPI_HID_DEVICE_PATH Acpi;
  1124.  
  1125. ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi;
  1126.  
  1127. ACPI_ADR_DEVICE_PATH AcpiAdr;
  1128.  
  1129.  
  1130.  
  1131. ATAPI_DEVICE_PATH Atapi;
  1132.  
  1133. SCSI_DEVICE_PATH Scsi;
  1134.  
  1135. ISCSI_DEVICE_PATH Iscsi;
  1136.  
  1137. FIBRECHANNEL_DEVICE_PATH FibreChannel;
  1138.  
  1139. FIBRECHANNELEX_DEVICE_PATH FibreChannelEx;
  1140.  
  1141.  
  1142.  
  1143. F1394_DEVICE_PATH F1394;
  1144.  
  1145. USB_DEVICE_PATH Usb;
  1146.  
  1147. SATA_DEVICE_PATH Sata;
  1148.  
  1149. USB_CLASS_DEVICE_PATH UsbClass;
  1150.  
  1151. USB_WWID_DEVICE_PATH UsbWwid;
  1152.  
  1153. DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit;
  1154.  
  1155. I2O_DEVICE_PATH I2O;
  1156.  
  1157. MAC_ADDR_DEVICE_PATH MacAddr;
  1158.  
  1159. IPv4_DEVICE_PATH Ipv4;
  1160.  
  1161. IPv6_DEVICE_PATH Ipv6;
  1162.  
  1163. VLAN_DEVICE_PATH Vlan;
  1164.  
  1165. INFINIBAND_DEVICE_PATH InfiniBand;
  1166.  
  1167. UART_DEVICE_PATH Uart;
  1168.  
  1169. UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl;
  1170.  
  1171. SAS_DEVICE_PATH Sas;
  1172.  
  1173. SASEX_DEVICE_PATH SasEx;
  1174.  
  1175. HARDDRIVE_DEVICE_PATH HardDrive;
  1176.  
  1177. CDROM_DEVICE_PATH CD;
  1178.  
  1179.  
  1180.  
  1181. FILEPATH_DEVICE_PATH FilePath;
  1182.  
  1183. MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol;
  1184.  
  1185.  
  1186.  
  1187. MEDIA_FW_VOL_DEVICE_PATH FirmwareVolume;
  1188.  
  1189. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FirmwareFile;
  1190.  
  1191. MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH Offset;
  1192.  
  1193.  
  1194.  
  1195. BBS_BBS_DEVICE_PATH Bbs;
  1196.  
  1197. } EFI_DEV_PATH;
  1198.  
  1199.  
  1200.  
  1201. typedef union {
  1202.  
  1203. EFI_DEVICE_PATH_PROTOCOL *DevPath;
  1204.  
  1205. PCI_DEVICE_PATH *Pci;
  1206.  
  1207. PCCARD_DEVICE_PATH *PcCard;
  1208.  
  1209. MEMMAP_DEVICE_PATH *MemMap;
  1210.  
  1211. VENDOR_DEVICE_PATH *Vendor;
  1212.  
  1213.  
  1214.  
  1215. CONTROLLER_DEVICE_PATH *Controller;
  1216.  
  1217. ACPI_HID_DEVICE_PATH *Acpi;
  1218.  
  1219. ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi;
  1220.  
  1221. ACPI_ADR_DEVICE_PATH *AcpiAdr;
  1222.  
  1223.  
  1224.  
  1225. ATAPI_DEVICE_PATH *Atapi;
  1226.  
  1227. SCSI_DEVICE_PATH *Scsi;
  1228.  
  1229. ISCSI_DEVICE_PATH *Iscsi;
  1230.  
  1231. FIBRECHANNEL_DEVICE_PATH *FibreChannel;
  1232.  
  1233. FIBRECHANNELEX_DEVICE_PATH *FibreChannelEx;
  1234.  
  1235.  
  1236.  
  1237. F1394_DEVICE_PATH *F1394;
  1238.  
  1239. USB_DEVICE_PATH *Usb;
  1240.  
  1241. SATA_DEVICE_PATH *Sata;
  1242.  
  1243. USB_CLASS_DEVICE_PATH *UsbClass;
  1244.  
  1245. USB_WWID_DEVICE_PATH *UsbWwid;
  1246.  
  1247. DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicUnit;
  1248.  
  1249. I2O_DEVICE_PATH *I2O;
  1250.  
  1251. MAC_ADDR_DEVICE_PATH *MacAddr;
  1252.  
  1253. IPv4_DEVICE_PATH *Ipv4;
  1254.  
  1255. IPv6_DEVICE_PATH *Ipv6;
  1256.  
  1257. VLAN_DEVICE_PATH *Vlan;
  1258.  
  1259. INFINIBAND_DEVICE_PATH *InfiniBand;
  1260.  
  1261. UART_DEVICE_PATH *Uart;
  1262.  
  1263. UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl;
  1264.  
  1265. SAS_DEVICE_PATH *Sas;
  1266.  
  1267. SASEX_DEVICE_PATH *SasEx;
  1268.  
  1269. HARDDRIVE_DEVICE_PATH *HardDrive;
  1270.  
  1271. CDROM_DEVICE_PATH *CD;
  1272.  
  1273.  
  1274.  
  1275. FILEPATH_DEVICE_PATH *FilePath;
  1276.  
  1277. MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol;
  1278.  
  1279.  
  1280.  
  1281. MEDIA_FW_VOL_DEVICE_PATH *FirmwareVolume;
  1282.  
  1283. MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FirmwareFile;
  1284.  
  1285. MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset;
  1286.  
  1287.  
  1288.  
  1289. BBS_BBS_DEVICE_PATH *Bbs;
  1290.  
  1291. UINT8 *Raw;
  1292.  
  1293. } EFI_DEV_PATH_PTR;
  1294.  
  1295.  
  1296.  
  1297. #pragma pack()
  1298.  
  1299.  
  1300.  
  1301. extern EFI_GUID gEfiDevicePathProtocolGuid;
  1302.  
  1303.  
  1304.  
  1305. typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
  1306.  
  1307. typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE;
  1308.  
  1309.  
  1310.  
  1311. typedef struct {
  1312.  
  1313. UINT16 ScanCode;
  1314.  
  1315. CHAR16 UnicodeChar;
  1316.  
  1317. } EFI_INPUT_KEY;
  1318.  
  1319. typedef
  1320.  
  1321. EFI_STATUS
  1322.  
  1323. ( *EFI_INPUT_RESET)(
  1324.  
  1325. EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
  1326.  
  1327. BOOLEAN ExtendedVerification
  1328.  
  1329. );
  1330.  
  1331. typedef
  1332.  
  1333. EFI_STATUS
  1334.  
  1335. ( *EFI_INPUT_READ_KEY)(
  1336.  
  1337. EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,
  1338.  
  1339. EFI_INPUT_KEY *Key
  1340.  
  1341. );
  1342.  
  1343.  
  1344.  
  1345. struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL {
  1346.  
  1347. EFI_INPUT_RESET Reset;
  1348.  
  1349. EFI_INPUT_READ_KEY ReadKeyStroke;
  1350.  
  1351.  
  1352.  
  1353. EFI_EVENT WaitForKey;
  1354.  
  1355. };
  1356.  
  1357.  
  1358.  
  1359. extern EFI_GUID gEfiSimpleTextInProtocolGuid;
  1360.  
  1361.  
  1362.  
  1363. typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
  1364.  
  1365. typedef
  1366.  
  1367. EFI_STATUS
  1368.  
  1369. ( *EFI_INPUT_RESET_EX)(
  1370.  
  1371. EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
  1372.  
  1373. BOOLEAN ExtendedVerification
  1374.  
  1375. );
  1376.  
  1377.  
  1378.  
  1379. typedef UINT8 EFI_KEY_TOGGLE_STATE;
  1380.  
  1381.  
  1382.  
  1383. typedef struct _EFI_KEY_STATE {
  1384.  
  1385.  
  1386.  
  1387. UINT32 KeyShiftState;
  1388.  
  1389.  
  1390.  
  1391. EFI_KEY_TOGGLE_STATE KeyToggleState;
  1392.  
  1393. } EFI_KEY_STATE;
  1394.  
  1395.  
  1396.  
  1397. typedef struct {
  1398.  
  1399.  
  1400.  
  1401. EFI_INPUT_KEY Key;
  1402.  
  1403.  
  1404.  
  1405. EFI_KEY_STATE KeyState;
  1406.  
  1407. } EFI_KEY_DATA;
  1408.  
  1409. typedef
  1410.  
  1411. EFI_STATUS
  1412.  
  1413. ( *EFI_INPUT_READ_KEY_EX)(
  1414.  
  1415. EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
  1416.  
  1417. EFI_KEY_DATA *KeyData
  1418.  
  1419. );
  1420.  
  1421. typedef
  1422.  
  1423. EFI_STATUS
  1424.  
  1425. ( *EFI_SET_STATE)(
  1426.  
  1427. EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
  1428.  
  1429. EFI_KEY_TOGGLE_STATE *KeyToggleState
  1430.  
  1431. );
  1432.  
  1433.  
  1434.  
  1435. typedef
  1436.  
  1437. EFI_STATUS
  1438.  
  1439. ( *EFI_KEY_NOTIFY_FUNCTION)(
  1440.  
  1441. EFI_KEY_DATA *KeyData
  1442.  
  1443. );
  1444.  
  1445. typedef
  1446.  
  1447. EFI_STATUS
  1448.  
  1449. ( *EFI_REGISTER_KEYSTROKE_NOTIFY)(
  1450.  
  1451. EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
  1452.  
  1453. EFI_KEY_DATA *KeyData,
  1454.  
  1455. EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,
  1456.  
  1457. EFI_HANDLE *NotifyHandle
  1458.  
  1459. );
  1460.  
  1461. typedef
  1462.  
  1463. EFI_STATUS
  1464.  
  1465. ( *EFI_UNREGISTER_KEYSTROKE_NOTIFY)(
  1466.  
  1467. EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
  1468.  
  1469. EFI_HANDLE NotificationHandle
  1470.  
  1471. );
  1472.  
  1473. struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL{
  1474.  
  1475. EFI_INPUT_RESET_EX Reset;
  1476.  
  1477. EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx;
  1478.  
  1479.  
  1480.  
  1481. EFI_EVENT WaitForKeyEx;
  1482.  
  1483. EFI_SET_STATE SetState;
  1484.  
  1485. EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;
  1486.  
  1487. EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
  1488.  
  1489. };
  1490.  
  1491.  
  1492.  
  1493. extern EFI_GUID gEfiSimpleTextInputExProtocolGuid;
  1494.  
  1495.  
  1496.  
  1497. typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
  1498.  
  1499.  
  1500.  
  1501. typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE;
  1502.  
  1503. typedef
  1504.  
  1505. EFI_STATUS
  1506.  
  1507. ( *EFI_TEXT_RESET)(
  1508.  
  1509. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1510.  
  1511. BOOLEAN ExtendedVerification
  1512.  
  1513. );
  1514.  
  1515. typedef
  1516.  
  1517. EFI_STATUS
  1518.  
  1519. ( *EFI_TEXT_STRING)(
  1520.  
  1521. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1522.  
  1523. CHAR16 *String
  1524.  
  1525. );
  1526.  
  1527. typedef
  1528.  
  1529. EFI_STATUS
  1530.  
  1531. ( *EFI_TEXT_TEST_STRING)(
  1532.  
  1533. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1534.  
  1535. CHAR16 *String
  1536.  
  1537. );
  1538.  
  1539. typedef
  1540.  
  1541. EFI_STATUS
  1542.  
  1543. ( *EFI_TEXT_QUERY_MODE)(
  1544.  
  1545. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1546.  
  1547. UINTN ModeNumber,
  1548.  
  1549. UINTN *Columns,
  1550.  
  1551. UINTN *Rows
  1552.  
  1553. );
  1554.  
  1555. typedef
  1556.  
  1557. EFI_STATUS
  1558.  
  1559. ( *EFI_TEXT_SET_MODE)(
  1560.  
  1561. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1562.  
  1563. UINTN ModeNumber
  1564.  
  1565. );
  1566.  
  1567. typedef
  1568.  
  1569. EFI_STATUS
  1570.  
  1571. ( *EFI_TEXT_SET_ATTRIBUTE)(
  1572.  
  1573. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1574.  
  1575. UINTN Attribute
  1576.  
  1577. );
  1578.  
  1579. typedef
  1580.  
  1581. EFI_STATUS
  1582.  
  1583. ( *EFI_TEXT_CLEAR_SCREEN)(
  1584.  
  1585. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This
  1586.  
  1587. );
  1588.  
  1589. typedef
  1590.  
  1591. EFI_STATUS
  1592.  
  1593. ( *EFI_TEXT_SET_CURSOR_POSITION)(
  1594.  
  1595. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1596.  
  1597. UINTN Column,
  1598.  
  1599. UINTN Row
  1600.  
  1601. );
  1602.  
  1603. typedef
  1604.  
  1605. EFI_STATUS
  1606.  
  1607. ( *EFI_TEXT_ENABLE_CURSOR)(
  1608.  
  1609. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
  1610.  
  1611. BOOLEAN Visible
  1612.  
  1613. );
  1614.  
  1615.  
  1616.  
  1617. typedef struct {
  1618.  
  1619.  
  1620.  
  1621. INT32 MaxMode;
  1622.  
  1623. INT32 Mode;
  1624.  
  1625.  
  1626.  
  1627. INT32 Attribute;
  1628.  
  1629.  
  1630.  
  1631. INT32 CursorColumn;
  1632.  
  1633.  
  1634.  
  1635. INT32 CursorRow;
  1636.  
  1637.  
  1638.  
  1639. BOOLEAN CursorVisible;
  1640.  
  1641. } EFI_SIMPLE_TEXT_OUTPUT_MODE;
  1642.  
  1643.  
  1644.  
  1645. struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
  1646.  
  1647. EFI_TEXT_RESET Reset;
  1648.  
  1649.  
  1650.  
  1651. EFI_TEXT_STRING OutputString;
  1652.  
  1653. EFI_TEXT_TEST_STRING TestString;
  1654.  
  1655.  
  1656.  
  1657. EFI_TEXT_QUERY_MODE QueryMode;
  1658.  
  1659. EFI_TEXT_SET_MODE SetMode;
  1660.  
  1661. EFI_TEXT_SET_ATTRIBUTE SetAttribute;
  1662.  
  1663.  
  1664.  
  1665. EFI_TEXT_CLEAR_SCREEN ClearScreen;
  1666.  
  1667. EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition;
  1668.  
  1669. EFI_TEXT_ENABLE_CURSOR EnableCursor;
  1670.  
  1671.  
  1672.  
  1673. EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode;
  1674.  
  1675. };
  1676.  
  1677.  
  1678.  
  1679. extern EFI_GUID gEfiSimpleTextOutProtocolGuid;
  1680.  
  1681.  
  1682.  
  1683. typedef enum {
  1684.  
  1685.  
  1686.  
  1687. AllocateAnyPages,
  1688.  
  1689.  
  1690.  
  1691. AllocateMaxAddress,
  1692.  
  1693.  
  1694.  
  1695. AllocateAddress,
  1696.  
  1697.  
  1698.  
  1699. MaxAllocateType
  1700.  
  1701. } EFI_ALLOCATE_TYPE;
  1702.  
  1703. typedef struct {
  1704.  
  1705.  
  1706.  
  1707. UINT32 Type;
  1708.  
  1709.  
  1710.  
  1711. EFI_PHYSICAL_ADDRESS PhysicalStart;
  1712.  
  1713.  
  1714.  
  1715. EFI_VIRTUAL_ADDRESS VirtualStart;
  1716.  
  1717.  
  1718.  
  1719. UINT64 NumberOfPages;
  1720.  
  1721.  
  1722.  
  1723. UINT64 Attribute;
  1724.  
  1725. } EFI_MEMORY_DESCRIPTOR;
  1726.  
  1727. typedef
  1728.  
  1729. EFI_STATUS
  1730.  
  1731. ( *EFI_ALLOCATE_PAGES)(
  1732.  
  1733. EFI_ALLOCATE_TYPE Type,
  1734.  
  1735. EFI_MEMORY_TYPE MemoryType,
  1736.  
  1737. UINTN Pages,
  1738.  
  1739. EFI_PHYSICAL_ADDRESS *Memory
  1740.  
  1741. );
  1742.  
  1743. typedef
  1744.  
  1745. EFI_STATUS
  1746.  
  1747. ( *EFI_FREE_PAGES)(
  1748.  
  1749. EFI_PHYSICAL_ADDRESS Memory,
  1750.  
  1751. UINTN Pages
  1752.  
  1753. );
  1754.  
  1755. typedef
  1756.  
  1757. EFI_STATUS
  1758.  
  1759. ( *EFI_GET_MEMORY_MAP)(
  1760.  
  1761. UINTN *MemoryMapSize,
  1762.  
  1763. EFI_MEMORY_DESCRIPTOR *MemoryMap,
  1764.  
  1765. UINTN *MapKey,
  1766.  
  1767. UINTN *DescriptorSize,
  1768.  
  1769. UINT32 *DescriptorVersion
  1770.  
  1771. );
  1772.  
  1773. typedef
  1774.  
  1775. EFI_STATUS
  1776.  
  1777. ( *EFI_ALLOCATE_POOL)(
  1778.  
  1779. EFI_MEMORY_TYPE PoolType,
  1780.  
  1781. UINTN Size,
  1782.  
  1783. void **Buffer
  1784.  
  1785. );
  1786.  
  1787. typedef
  1788.  
  1789. EFI_STATUS
  1790.  
  1791. ( *EFI_FREE_POOL)(
  1792.  
  1793. void *Buffer
  1794.  
  1795. );
  1796.  
  1797. typedef
  1798.  
  1799. EFI_STATUS
  1800.  
  1801. ( *EFI_SET_VIRTUAL_ADDRESS_MAP)(
  1802.  
  1803. UINTN MemoryMapSize,
  1804.  
  1805. UINTN DescriptorSize,
  1806.  
  1807. UINT32 DescriptorVersion,
  1808.  
  1809. EFI_MEMORY_DESCRIPTOR *VirtualMap
  1810.  
  1811. );
  1812.  
  1813. typedef
  1814.  
  1815. EFI_STATUS
  1816.  
  1817. ( *EFI_CONNECT_CONTROLLER)(
  1818.  
  1819. EFI_HANDLE ControllerHandle,
  1820.  
  1821. EFI_HANDLE *DriverImageHandle,
  1822.  
  1823. EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath,
  1824.  
  1825. BOOLEAN Recursive
  1826.  
  1827. );
  1828.  
  1829. typedef
  1830.  
  1831. EFI_STATUS
  1832.  
  1833. ( *EFI_DISCONNECT_CONTROLLER)(
  1834.  
  1835. EFI_HANDLE ControllerHandle,
  1836.  
  1837. EFI_HANDLE DriverImageHandle,
  1838.  
  1839. EFI_HANDLE ChildHandle
  1840.  
  1841. );
  1842.  
  1843. typedef
  1844.  
  1845. EFI_STATUS
  1846.  
  1847. ( *EFI_CONVERT_POINTER)(
  1848.  
  1849. UINTN DebugDisposition,
  1850.  
  1851. void **Address
  1852.  
  1853. );
  1854.  
  1855. typedef
  1856.  
  1857. void
  1858.  
  1859. ( *EFI_EVENT_NOTIFY)(
  1860.  
  1861. EFI_EVENT Event,
  1862.  
  1863. void *Context
  1864.  
  1865. );
  1866.  
  1867. typedef
  1868.  
  1869. EFI_STATUS
  1870.  
  1871. ( *EFI_CREATE_EVENT)(
  1872.  
  1873. UINT32 Type,
  1874.  
  1875. EFI_TPL NotifyTpl,
  1876.  
  1877. EFI_EVENT_NOTIFY NotifyFunction,
  1878.  
  1879. void *NotifyContext,
  1880.  
  1881. EFI_EVENT *Event
  1882.  
  1883. );
  1884.  
  1885. typedef
  1886.  
  1887. EFI_STATUS
  1888.  
  1889. ( *EFI_CREATE_EVENT_EX)(
  1890.  
  1891. UINT32 Type,
  1892.  
  1893. EFI_TPL NotifyTpl,
  1894.  
  1895. EFI_EVENT_NOTIFY NotifyFunction ,
  1896.  
  1897. void *NotifyContext ,
  1898.  
  1899. EFI_GUID *EventGroup ,
  1900.  
  1901. EFI_EVENT *Event
  1902.  
  1903. );
  1904.  
  1905.  
  1906.  
  1907. typedef enum {
  1908.  
  1909.  
  1910.  
  1911. TimerCancel,
  1912.  
  1913.  
  1914.  
  1915. TimerPeriodic,
  1916.  
  1917.  
  1918.  
  1919. TimerRelative
  1920.  
  1921. } EFI_TIMER_DELAY;
  1922.  
  1923. typedef
  1924.  
  1925. EFI_STATUS
  1926.  
  1927. ( *EFI_SET_TIMER)(
  1928.  
  1929. EFI_EVENT Event,
  1930.  
  1931. EFI_TIMER_DELAY Type,
  1932.  
  1933. UINT64 TriggerTime
  1934.  
  1935. );
  1936.  
  1937. typedef
  1938.  
  1939. EFI_STATUS
  1940.  
  1941. ( *EFI_SIGNAL_EVENT)(
  1942.  
  1943. EFI_EVENT Event
  1944.  
  1945. );
  1946.  
  1947. typedef
  1948.  
  1949. EFI_STATUS
  1950.  
  1951. ( *EFI_WAIT_FOR_EVENT)(
  1952.  
  1953. UINTN NumberOfEvents,
  1954.  
  1955. EFI_EVENT *Event,
  1956.  
  1957. UINTN *Index
  1958.  
  1959. );
  1960.  
  1961. typedef
  1962.  
  1963. EFI_STATUS
  1964.  
  1965. ( *EFI_CLOSE_EVENT)(
  1966.  
  1967. EFI_EVENT Event
  1968.  
  1969. );
  1970.  
  1971. typedef
  1972.  
  1973. EFI_STATUS
  1974.  
  1975. ( *EFI_CHECK_EVENT)(
  1976.  
  1977. EFI_EVENT Event
  1978.  
  1979. );
  1980.  
  1981. typedef
  1982.  
  1983. EFI_TPL
  1984.  
  1985. ( *EFI_RAISE_TPL)(
  1986.  
  1987. EFI_TPL NewTpl
  1988.  
  1989. );
  1990.  
  1991.  
  1992.  
  1993. typedef
  1994.  
  1995. void
  1996.  
  1997. ( *EFI_RESTORE_TPL)(
  1998.  
  1999. EFI_TPL OldTpl
  2000.  
  2001. );
  2002.  
  2003. typedef
  2004.  
  2005. EFI_STATUS
  2006.  
  2007. ( *EFI_GET_VARIABLE)(
  2008.  
  2009. CHAR16 *VariableName,
  2010.  
  2011. EFI_GUID *VendorGuid,
  2012.  
  2013. UINT32 *Attributes,
  2014.  
  2015. UINTN *DataSize,
  2016.  
  2017. void *Data
  2018.  
  2019. );
  2020.  
  2021. typedef
  2022.  
  2023. EFI_STATUS
  2024.  
  2025. ( *EFI_GET_NEXT_VARIABLE_NAME)(
  2026.  
  2027. UINTN *VariableNameSize,
  2028.  
  2029. CHAR16 *VariableName,
  2030.  
  2031. EFI_GUID *VendorGuid
  2032.  
  2033. );
  2034.  
  2035. typedef
  2036.  
  2037. EFI_STATUS
  2038.  
  2039. ( *EFI_SET_VARIABLE)(
  2040.  
  2041. CHAR16 *VariableName,
  2042.  
  2043. EFI_GUID *VendorGuid,
  2044.  
  2045. UINT32 Attributes,
  2046.  
  2047. UINTN DataSize,
  2048.  
  2049. void *Data
  2050.  
  2051. );
  2052.  
  2053.  
  2054.  
  2055. typedef struct {
  2056.  
  2057.  
  2058.  
  2059. UINT32 Resolution;
  2060.  
  2061.  
  2062.  
  2063. UINT32 Accuracy;
  2064.  
  2065.  
  2066.  
  2067. BOOLEAN SetsToZero;
  2068.  
  2069. } EFI_TIME_CAPABILITIES;
  2070.  
  2071. typedef
  2072.  
  2073. EFI_STATUS
  2074.  
  2075. ( *EFI_GET_TIME)(
  2076.  
  2077. EFI_TIME *Time,
  2078.  
  2079. EFI_TIME_CAPABILITIES *Capabilities
  2080.  
  2081. );
  2082.  
  2083. typedef
  2084.  
  2085. EFI_STATUS
  2086.  
  2087. ( *EFI_SET_TIME)(
  2088.  
  2089. EFI_TIME *Time
  2090.  
  2091. );
  2092.  
  2093. typedef
  2094.  
  2095. EFI_STATUS
  2096.  
  2097. ( *EFI_GET_WAKEUP_TIME)(
  2098.  
  2099. BOOLEAN *Enabled,
  2100.  
  2101. BOOLEAN *Pending,
  2102.  
  2103. EFI_TIME *Time
  2104.  
  2105. );
  2106.  
  2107. typedef
  2108.  
  2109. EFI_STATUS
  2110.  
  2111. ( *EFI_SET_WAKEUP_TIME)(
  2112.  
  2113. BOOLEAN Enable,
  2114.  
  2115. EFI_TIME *Time
  2116.  
  2117. );
  2118.  
  2119. typedef
  2120.  
  2121. EFI_STATUS
  2122.  
  2123. ( *EFI_IMAGE_LOAD)(
  2124.  
  2125. BOOLEAN BootPolicy,
  2126.  
  2127. EFI_HANDLE ParentImageHandle,
  2128.  
  2129. EFI_DEVICE_PATH_PROTOCOL *DevicePath,
  2130.  
  2131. void *SourceBuffer ,
  2132.  
  2133. UINTN SourceSize,
  2134.  
  2135. EFI_HANDLE *ImageHandle
  2136.  
  2137. );
  2138.  
  2139. typedef
  2140.  
  2141. EFI_STATUS
  2142.  
  2143. ( *EFI_IMAGE_START)(
  2144.  
  2145. EFI_HANDLE ImageHandle,
  2146.  
  2147. UINTN *ExitDataSize,
  2148.  
  2149. CHAR16 **ExitData
  2150.  
  2151. );
  2152.  
  2153. typedef
  2154.  
  2155. EFI_STATUS
  2156.  
  2157. ( *EFI_EXIT)(
  2158.  
  2159. EFI_HANDLE ImageHandle,
  2160.  
  2161. EFI_STATUS ExitStatus,
  2162.  
  2163. UINTN ExitDataSize,
  2164.  
  2165. CHAR16 *ExitData
  2166.  
  2167. );
  2168.  
  2169. typedef
  2170.  
  2171. EFI_STATUS
  2172.  
  2173. ( *EFI_IMAGE_UNLOAD)(
  2174.  
  2175. EFI_HANDLE ImageHandle
  2176.  
  2177. );
  2178.  
  2179. typedef
  2180.  
  2181. EFI_STATUS
  2182.  
  2183. ( *EFI_EXIT_BOOT_SERVICES)(
  2184.  
  2185. EFI_HANDLE ImageHandle,
  2186.  
  2187. UINTN MapKey
  2188.  
  2189. );
  2190.  
  2191. typedef
  2192.  
  2193. EFI_STATUS
  2194.  
  2195. ( *EFI_STALL)(
  2196.  
  2197. UINTN Microseconds
  2198.  
  2199. );
  2200.  
  2201. typedef
  2202.  
  2203. EFI_STATUS
  2204.  
  2205. ( *EFI_SET_WATCHDOG_TIMER)(
  2206.  
  2207. UINTN Timeout,
  2208.  
  2209. UINT64 WatchdogCode,
  2210.  
  2211. UINTN DataSize,
  2212.  
  2213. CHAR16 *WatchdogData
  2214.  
  2215. );
  2216.  
  2217.  
  2218.  
  2219. typedef enum {
  2220.  
  2221.  
  2222.  
  2223. EfiResetCold,
  2224.  
  2225.  
  2226.  
  2227. EfiResetWarm,
  2228.  
  2229.  
  2230.  
  2231. EfiResetShutdown
  2232.  
  2233. } EFI_RESET_TYPE;
  2234.  
  2235. typedef
  2236.  
  2237. void
  2238.  
  2239. ( *EFI_RESET_SYSTEM)(
  2240.  
  2241. EFI_RESET_TYPE ResetType,
  2242.  
  2243. EFI_STATUS ResetStatus,
  2244.  
  2245. UINTN DataSize,
  2246.  
  2247. void *ResetData
  2248.  
  2249. );
  2250.  
  2251. typedef
  2252.  
  2253. EFI_STATUS
  2254.  
  2255. ( *EFI_GET_NEXT_MONOTONIC_COUNT)(
  2256.  
  2257. UINT64 *Count
  2258.  
  2259. );
  2260.  
  2261. typedef
  2262.  
  2263. EFI_STATUS
  2264.  
  2265. ( *EFI_GET_NEXT_HIGH_MONO_COUNT)(
  2266.  
  2267. UINT32 *HighCount
  2268.  
  2269. );
  2270.  
  2271. typedef
  2272.  
  2273. EFI_STATUS
  2274.  
  2275. ( *EFI_CALCULATE_CRC32)(
  2276.  
  2277. void *Data,
  2278.  
  2279. UINTN DataSize,
  2280.  
  2281. UINT32 *Crc32
  2282.  
  2283. );
  2284.  
  2285. typedef
  2286.  
  2287. void
  2288.  
  2289. ( *EFI_COPY_MEM)(
  2290.  
  2291. void *Destination,
  2292.  
  2293. void *Source,
  2294.  
  2295. UINTN Length
  2296.  
  2297. );
  2298.  
  2299. typedef
  2300.  
  2301. void
  2302.  
  2303. ( *EFI_SET_MEM)(
  2304.  
  2305. void *Buffer,
  2306.  
  2307. UINTN Size,
  2308.  
  2309. UINT8 Value
  2310.  
  2311. );
  2312.  
  2313.  
  2314.  
  2315. typedef enum {
  2316.  
  2317.  
  2318.  
  2319. EFI_NATIVE_INTERFACE
  2320.  
  2321. } EFI_INTERFACE_TYPE;
  2322.  
  2323. typedef
  2324.  
  2325. EFI_STATUS
  2326.  
  2327. ( *EFI_INSTALL_PROTOCOL_INTERFACE)(
  2328.  
  2329. EFI_HANDLE *Handle,
  2330.  
  2331. EFI_GUID *Protocol,
  2332.  
  2333. EFI_INTERFACE_TYPE InterfaceType,
  2334.  
  2335. void *Interface
  2336.  
  2337. );
  2338.  
  2339. typedef
  2340.  
  2341. EFI_STATUS
  2342.  
  2343. ( *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
  2344.  
  2345. EFI_HANDLE *Handle,
  2346.  
  2347. ...
  2348.  
  2349. );
  2350.  
  2351. typedef
  2352.  
  2353. EFI_STATUS
  2354.  
  2355. ( *EFI_REINSTALL_PROTOCOL_INTERFACE)(
  2356.  
  2357. EFI_HANDLE Handle,
  2358.  
  2359. EFI_GUID *Protocol,
  2360.  
  2361. void *OldInterface,
  2362.  
  2363. void *NewInterface
  2364.  
  2365. );
  2366.  
  2367. typedef
  2368.  
  2369. EFI_STATUS
  2370.  
  2371. ( *EFI_UNINSTALL_PROTOCOL_INTERFACE)(
  2372.  
  2373. EFI_HANDLE Handle,
  2374.  
  2375. EFI_GUID *Protocol,
  2376.  
  2377. void *Interface
  2378.  
  2379. );
  2380.  
  2381. typedef
  2382.  
  2383. EFI_STATUS
  2384.  
  2385. ( *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)(
  2386.  
  2387. EFI_HANDLE Handle,
  2388.  
  2389. ...
  2390.  
  2391. );
  2392.  
  2393. typedef
  2394.  
  2395. EFI_STATUS
  2396.  
  2397. ( *EFI_HANDLE_PROTOCOL)(
  2398.  
  2399. EFI_HANDLE Handle,
  2400.  
  2401. EFI_GUID *Protocol,
  2402.  
  2403. void **Interface
  2404.  
  2405. );
  2406.  
  2407. typedef
  2408.  
  2409. EFI_STATUS
  2410.  
  2411. ( *EFI_OPEN_PROTOCOL)(
  2412.  
  2413. EFI_HANDLE Handle,
  2414.  
  2415. EFI_GUID *Protocol,
  2416.  
  2417. void **Interface,
  2418.  
  2419. EFI_HANDLE AgentHandle,
  2420.  
  2421. EFI_HANDLE ControllerHandle,
  2422.  
  2423. UINT32 Attributes
  2424.  
  2425. );
  2426.  
  2427. typedef
  2428.  
  2429. EFI_STATUS
  2430.  
  2431. ( *EFI_CLOSE_PROTOCOL)(
  2432.  
  2433. EFI_HANDLE Handle,
  2434.  
  2435. EFI_GUID *Protocol,
  2436.  
  2437. EFI_HANDLE AgentHandle,
  2438.  
  2439. EFI_HANDLE ControllerHandle
  2440.  
  2441. );
  2442.  
  2443.  
  2444.  
  2445. typedef struct {
  2446.  
  2447. EFI_HANDLE AgentHandle;
  2448.  
  2449. EFI_HANDLE ControllerHandle;
  2450.  
  2451. UINT32 Attributes;
  2452.  
  2453. UINT32 OpenCount;
  2454.  
  2455. } EFI_OPEN_PROTOCOL_INFORMATION_ENTRY;
  2456.  
  2457. typedef
  2458.  
  2459. EFI_STATUS
  2460.  
  2461. ( *EFI_OPEN_PROTOCOL_INFORMATION)(
  2462.  
  2463. EFI_HANDLE Handle,
  2464.  
  2465. EFI_GUID *Protocol,
  2466.  
  2467. EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,
  2468.  
  2469. UINTN *EntryCount
  2470.  
  2471. );
  2472.  
  2473. typedef
  2474.  
  2475. EFI_STATUS
  2476.  
  2477. ( *EFI_PROTOCOLS_PER_HANDLE)(
  2478.  
  2479. EFI_HANDLE Handle,
  2480.  
  2481. EFI_GUID ***ProtocolBuffer,
  2482.  
  2483. UINTN *ProtocolBufferCount
  2484.  
  2485. );
  2486.  
  2487. typedef
  2488.  
  2489. EFI_STATUS
  2490.  
  2491. ( *EFI_REGISTER_PROTOCOL_NOTIFY)(
  2492.  
  2493. EFI_GUID *Protocol,
  2494.  
  2495. EFI_EVENT Event,
  2496.  
  2497. void **Registration
  2498.  
  2499. );
  2500.  
  2501.  
  2502.  
  2503. typedef enum {
  2504.  
  2505.  
  2506.  
  2507. AllHandles,
  2508.  
  2509.  
  2510.  
  2511. ByRegisterNotify,
  2512.  
  2513.  
  2514.  
  2515. ByProtocol
  2516.  
  2517. } EFI_LOCATE_SEARCH_TYPE;
  2518.  
  2519. typedef
  2520.  
  2521. EFI_STATUS
  2522.  
  2523. ( *EFI_LOCATE_HANDLE)(
  2524.  
  2525. EFI_LOCATE_SEARCH_TYPE SearchType,
  2526.  
  2527. EFI_GUID *Protocol,
  2528.  
  2529. void *SearchKey,
  2530.  
  2531. UINTN *BufferSize,
  2532.  
  2533. EFI_HANDLE *Buffer
  2534.  
  2535. );
  2536.  
  2537. typedef
  2538.  
  2539. EFI_STATUS
  2540.  
  2541. ( *EFI_LOCATE_DEVICE_PATH)(
  2542.  
  2543. EFI_GUID *Protocol,
  2544.  
  2545. EFI_DEVICE_PATH_PROTOCOL **DevicePath,
  2546.  
  2547. EFI_HANDLE *Device
  2548.  
  2549. );
  2550.  
  2551. typedef
  2552.  
  2553. EFI_STATUS
  2554.  
  2555. ( *EFI_INSTALL_CONFIGURATION_TABLE)(
  2556.  
  2557. EFI_GUID *Guid,
  2558.  
  2559. void *Table
  2560.  
  2561. );
  2562.  
  2563. typedef
  2564.  
  2565. EFI_STATUS
  2566.  
  2567. ( *EFI_LOCATE_HANDLE_BUFFER)(
  2568.  
  2569. EFI_LOCATE_SEARCH_TYPE SearchType,
  2570.  
  2571. EFI_GUID *Protocol,
  2572.  
  2573. void *SearchKey,
  2574.  
  2575. UINTN *NoHandles,
  2576.  
  2577. EFI_HANDLE **Buffer
  2578.  
  2579. );
  2580.  
  2581. typedef
  2582.  
  2583. EFI_STATUS
  2584.  
  2585. ( *EFI_LOCATE_PROTOCOL)(
  2586.  
  2587. EFI_GUID *Protocol,
  2588.  
  2589. void *Registration,
  2590.  
  2591. void **Interface
  2592.  
  2593. );
  2594.  
  2595.  
  2596.  
  2597. typedef struct {
  2598.  
  2599.  
  2600.  
  2601. UINT64 Length;
  2602.  
  2603. union {
  2604.  
  2605.  
  2606.  
  2607. EFI_PHYSICAL_ADDRESS DataBlock;
  2608.  
  2609.  
  2610.  
  2611. EFI_PHYSICAL_ADDRESS ContinuationPointer;
  2612.  
  2613. } Union;
  2614.  
  2615. } EFI_CAPSULE_BLOCK_DESCRIPTOR;
  2616.  
  2617.  
  2618.  
  2619. typedef struct {
  2620.  
  2621.  
  2622.  
  2623. EFI_GUID CapsuleGuid;
  2624.  
  2625.  
  2626.  
  2627. UINT32 HeaderSize;
  2628.  
  2629.  
  2630.  
  2631. UINT32 Flags;
  2632.  
  2633.  
  2634.  
  2635. UINT32 CapsuleImageSize;
  2636.  
  2637. } EFI_CAPSULE_HEADER;
  2638.  
  2639.  
  2640.  
  2641. typedef struct {
  2642.  
  2643.  
  2644.  
  2645. UINT32 CapsuleArrayNumber;
  2646.  
  2647.  
  2648.  
  2649. void* CapsulePtr[1];
  2650.  
  2651. } EFI_CAPSULE_TABLE;
  2652.  
  2653. typedef
  2654.  
  2655. EFI_STATUS
  2656.  
  2657. ( *EFI_UPDATE_CAPSULE)(
  2658.  
  2659. EFI_CAPSULE_HEADER **CapsuleHeaderArray,
  2660.  
  2661. UINTN CapsuleCount,
  2662.  
  2663. EFI_PHYSICAL_ADDRESS ScatterGatherList
  2664.  
  2665. );
  2666.  
  2667. typedef
  2668.  
  2669. EFI_STATUS
  2670.  
  2671. ( *EFI_QUERY_CAPSULE_CAPABILITIES)(
  2672.  
  2673. EFI_CAPSULE_HEADER **CapsuleHeaderArray,
  2674.  
  2675. UINTN CapsuleCount,
  2676.  
  2677. UINT64 *MaximumCapsuleSize,
  2678.  
  2679. EFI_RESET_TYPE *ResetType
  2680.  
  2681. );
  2682.  
  2683. typedef
  2684.  
  2685. EFI_STATUS
  2686.  
  2687. ( *EFI_QUERY_VARIABLE_INFO)(
  2688.  
  2689. UINT32 Attributes,
  2690.  
  2691. UINT64 *MaximumVariableStorageSize,
  2692.  
  2693. UINT64 *RemainingVariableStorageSize,
  2694.  
  2695. UINT64 *MaximumVariableSize
  2696.  
  2697. );
  2698.  
  2699. typedef struct {
  2700.  
  2701.  
  2702.  
  2703. EFI_TABLE_HEADER Hdr;
  2704.  
  2705.  
  2706.  
  2707. EFI_GET_TIME GetTime;
  2708.  
  2709. EFI_SET_TIME SetTime;
  2710.  
  2711. EFI_GET_WAKEUP_TIME GetWakeupTime;
  2712.  
  2713. EFI_SET_WAKEUP_TIME SetWakeupTime;
  2714.  
  2715.  
  2716.  
  2717. EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap;
  2718.  
  2719. EFI_CONVERT_POINTER ConvertPointer;
  2720.  
  2721.  
  2722.  
  2723. EFI_GET_VARIABLE GetVariable;
  2724.  
  2725. EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName;
  2726.  
  2727. EFI_SET_VARIABLE SetVariable;
  2728.  
  2729.  
  2730.  
  2731. EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount;
  2732.  
  2733. EFI_RESET_SYSTEM ResetSystem;
  2734.  
  2735.  
  2736.  
  2737. EFI_UPDATE_CAPSULE UpdateCapsule;
  2738.  
  2739. EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities;
  2740.  
  2741.  
  2742.  
  2743. EFI_QUERY_VARIABLE_INFO QueryVariableInfo;
  2744.  
  2745. } EFI_RUNTIME_SERVICES;
  2746.  
  2747. typedef struct {
  2748.  
  2749.  
  2750.  
  2751. EFI_TABLE_HEADER Hdr;
  2752.  
  2753.  
  2754.  
  2755. EFI_RAISE_TPL RaiseTPL;
  2756.  
  2757. EFI_RESTORE_TPL RestoreTPL;
  2758.  
  2759.  
  2760.  
  2761. EFI_ALLOCATE_PAGES AllocatePages;
  2762.  
  2763. EFI_FREE_PAGES FreePages;
  2764.  
  2765. EFI_GET_MEMORY_MAP GetMemoryMap;
  2766.  
  2767. EFI_ALLOCATE_POOL AllocatePool;
  2768.  
  2769. EFI_FREE_POOL FreePool;
  2770.  
  2771.  
  2772.  
  2773. EFI_CREATE_EVENT CreateEvent;
  2774.  
  2775. EFI_SET_TIMER SetTimer;
  2776.  
  2777. EFI_WAIT_FOR_EVENT WaitForEvent;
  2778.  
  2779. EFI_SIGNAL_EVENT SignalEvent;
  2780.  
  2781. EFI_CLOSE_EVENT CloseEvent;
  2782.  
  2783. EFI_CHECK_EVENT CheckEvent;
  2784.  
  2785.  
  2786.  
  2787. EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface;
  2788.  
  2789. EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface;
  2790.  
  2791. EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface;
  2792.  
  2793. EFI_HANDLE_PROTOCOL HandleProtocol;
  2794.  
  2795. void *Reserved;
  2796.  
  2797. EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify;
  2798.  
  2799. EFI_LOCATE_HANDLE LocateHandle;
  2800.  
  2801. EFI_LOCATE_DEVICE_PATH LocateDevicePath;
  2802.  
  2803. EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable;
  2804.  
  2805.  
  2806.  
  2807. EFI_IMAGE_LOAD LoadImage;
  2808.  
  2809. EFI_IMAGE_START StartImage;
  2810.  
  2811. EFI_EXIT Exit;
  2812.  
  2813. EFI_IMAGE_UNLOAD UnloadImage;
  2814.  
  2815. EFI_EXIT_BOOT_SERVICES ExitBootServices;
  2816.  
  2817.  
  2818.  
  2819. EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount;
  2820.  
  2821. EFI_STALL Stall;
  2822.  
  2823. EFI_SET_WATCHDOG_TIMER SetWatchdogTimer;
  2824.  
  2825.  
  2826.  
  2827. EFI_CONNECT_CONTROLLER ConnectController;
  2828.  
  2829. EFI_DISCONNECT_CONTROLLER DisconnectController;
  2830.  
  2831.  
  2832.  
  2833. EFI_OPEN_PROTOCOL OpenProtocol;
  2834.  
  2835. EFI_CLOSE_PROTOCOL CloseProtocol;
  2836.  
  2837. EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation;
  2838.  
  2839.  
  2840.  
  2841. EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle;
  2842.  
  2843. EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer;
  2844.  
  2845. EFI_LOCATE_PROTOCOL LocateProtocol;
  2846.  
  2847. EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces;
  2848.  
  2849. EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces;
  2850.  
  2851.  
  2852.  
  2853. EFI_CALCULATE_CRC32 CalculateCrc32;
  2854.  
  2855.  
  2856.  
  2857. EFI_COPY_MEM CopyMem;
  2858.  
  2859. EFI_SET_MEM SetMem;
  2860.  
  2861. EFI_CREATE_EVENT_EX CreateEventEx;
  2862.  
  2863. } EFI_BOOT_SERVICES;
  2864.  
  2865.  
  2866.  
  2867. typedef struct {
  2868.  
  2869.  
  2870.  
  2871. EFI_GUID VendorGuid;
  2872.  
  2873.  
  2874.  
  2875. void *VendorTable;
  2876.  
  2877. } EFI_CONFIGURATION_TABLE;
  2878.  
  2879.  
  2880.  
  2881. typedef struct {
  2882.  
  2883.  
  2884.  
  2885. EFI_TABLE_HEADER Hdr;
  2886.  
  2887.  
  2888.  
  2889. CHAR16 *FirmwareVendor;
  2890.  
  2891.  
  2892.  
  2893. UINT32 FirmwareRevision;
  2894.  
  2895.  
  2896.  
  2897. EFI_HANDLE ConsoleInHandle;
  2898.  
  2899.  
  2900.  
  2901. EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn;
  2902.  
  2903.  
  2904.  
  2905. EFI_HANDLE ConsoleOutHandle;
  2906.  
  2907.  
  2908.  
  2909. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;
  2910.  
  2911.  
  2912.  
  2913. EFI_HANDLE StandardErrorHandle;
  2914.  
  2915.  
  2916.  
  2917. EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr;
  2918.  
  2919.  
  2920.  
  2921. EFI_RUNTIME_SERVICES *RuntimeServices;
  2922.  
  2923.  
  2924.  
  2925. EFI_BOOT_SERVICES *BootServices;
  2926.  
  2927.  
  2928.  
  2929. UINTN NumberOfTableEntries;
  2930.  
  2931.  
  2932.  
  2933. EFI_CONFIGURATION_TABLE *ConfigurationTable;
  2934.  
  2935. } EFI_SYSTEM_TABLE;
  2936.  
  2937. typedef
  2938.  
  2939. EFI_STATUS
  2940.  
  2941. ( *EFI_IMAGE_ENTRY_POINT)(
  2942.  
  2943. EFI_HANDLE ImageHandle,
  2944.  
  2945. EFI_SYSTEM_TABLE *SystemTable
  2946.  
  2947. );
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement