1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
| #include <uchar.h> #include <stdint.h>
typedef uint16_t UINT16; typedef uint32_t UINT32; typedef uint64_t UINT64; typedef uint64_t UINTN; typedef char16_t CHAR16; typedef void VOID;
typedef UINTN EFI_STATUS; typedef VOID* EFI_HANDLE;
#define IN #define OUT #define OPTIONAL #define CONST const
#define EFIAPI __attribute__((ms_abi))
#define EFI_SUCCESS 0
typedef struct EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
typedef struct{ UINT16 ScanCode; CHAR16 UnicodeChar; } EFI_INPUT_KEY;
typedef EFI_STATUS (EFIAPI *EFI_INPUT_READ_KEY) ( IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, OUT EFI_INPUT_KEY *Key );
typedef struct EFI_SIMPLE_TEXT_INPUT_PROTOCOL { void* Reset; EFI_INPUT_READ_KEY ReadKeyStroke; void* WaitForKey; } EFI_SIMPLE_TEXT_INPUT_PROTOCOL;
typedef struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
#define EFI_BLACK 0x00 #define EFI_BLUE 0x01 #define EFI_GREEN 0x02 #define EFI_CYAN 0x03 #define EFI_RED 0x04 #define EFI_YELLOW 0x0E #define EFI_WHITE 0x0F
#define EFI_TEXT_ATTR(Foreground,Background) \ ((Foreground) | ((Background) << 4))
typedef EFI_STATUS (EFIAPI *EFI_TEXT_STRING) ( IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN CHAR16 *String );
typedef EFI_STATUS (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) ( IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, IN UINTN Attribute );
typedef EFI_STATUS (EFIAPI *EFI_TEXT_CLEAR_SCREEN) ( IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This );
typedef struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL { void * Reset; EFI_TEXT_STRING OutputString; void * TestStringl; void * QueryMode; void * SetMode; EFI_TEXT_SET_ATTRIBUTE SetAttribute; EFI_TEXT_CLEAR_SCREEN ClearScreen; void * SetCursorPosition; void * EnableCursor; void * Mode; } EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
typedef enum { EfiResetColde, EfiResetWarm, EfiResetShutdown, EfiResetPlatformSpecific } EFI_RESET_TYPE;
typedef VOID (EFIAPI *EFI_RESET_SYSTEM) ( IN EFI_RESET_TYPE ResetType, IN EFI_STATUS ResetStatus, IN UINTN DataSize, IN VOID *ResetData OPTIONAL );
typedef struct { UINT64 Signature; UINT32 Revision; UINT32 HeaderSize; UINT32 CRC32; UINT32 Reserved; } EFI_TABLE_HEADER;
typedef struct { EFI_TABLE_HEADER Hdr; void* GetTime; void* SetTime; void* GetWakeupTime; void* SetWakeupTime;
void* SetVirtualAddressMap; void* ConvertPointer;
void* GetVariable; void* GetNextVariableName; void* SetVariable;
void* GetNextHighMonotonicCount; EFI_RESET_SYSTEM ResetSystem;
void* UpdateCapsule; void* QueryCapsuleCapabilities;
void* QueryVariableInfo; } EFI_RUNTIME_SERVICES;
typedef struct { EFI_TABLE_HEADER Hdr;
void* FirmwareVendor; UINT32 FirmwareRevision; void* ConsoleInHandle; EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn; void* ConsoleOutHandle; EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; void* StandardErrorHandle; void* StdErr; EFI_RUNTIME_SERVICES *RuntimeServices; void* BootServices; UINTN NumberOfTableEntries; void* ConfigurationTable; } EFI_SYSTEM_TABLE;
|