Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Note: Obviously this code doesn't compile as is, I just copy pasted the relevant files into a single pastebin
- // ========== ENTRY POINT ==========
- #include "uefi/uefi.h"
- EFI_HANDLE IH;
- EFI_SYSTEM_TABLE* ST;
- EFIAPI EFI_STATUS efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* SystemTable) {
- // Save arguments
- IH = ImageHandle;
- ST = SystemTable;
- // Print message
- ST->ConOut->OutputString(ST->ConsoleOutHandle, u"Hello World!\n");
- return EFI_SUCCESS;
- }
- // ========== SYSTEM TABLE DEFINITION ==========
- #pragma pack(push, 1)
- struct _EFI_TABLE_HEADER {
- uint64_t Signature;
- uint32_t Revision;
- uint32_t HeaderSize;
- uint32_t CRC32;
- uint32_t Reserved;
- };
- typedef struct _EFI_TABLE_HEADER EFI_TABLE_HEADER;
- struct _EFI_SYSTEM_TABLE {
- EFI_TABLE_HEADER Hdr;
- CHAR16* FirmwareVendor;
- uint32_t FirmwareRevision;
- EFI_HANDLE ConsoleInHandle;
- void* ConIn;
- EFI_HANDLE ConsoleOutHandle;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL* ConOut;
- EFI_HANDLE StandardErrorHandle;
- EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL* StdErr;
- void* RuntimeServices;
- void* BootServices;
- uint64_t NumberOfTableEntries;
- void* ConfigurationTable;
- };
- typedef struct _EFI_SYSTEM_TABLE EFI_SYSTEM_TABLE;
- #pragma pack(pop)
- // ========== SIMPLE TEXT OUTPUT PROTO DEFINITION ==========
- #pragma pack(push, 1)
- struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
- EFIAPI EFI_STATUS (*Reset)(struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL* This, BOOLEAN ExtendedVerification);
- EFIAPI EFI_STATUS (*OutputString)(struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL* This, CHAR16* String);
- };
- typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
- #pragma pack(pop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement