Advertisement
Guest User

Untitled

a guest
Feb 6th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.01 KB | None | 0 0
  1. // Note: Obviously this code doesn't compile as is, I just copy pasted the relevant files into a single pastebin
  2.  
  3. // ========== ENTRY POINT ==========
  4. #include "uefi/uefi.h"
  5.  
  6. EFI_HANDLE IH;
  7. EFI_SYSTEM_TABLE* ST;
  8.  
  9. EFIAPI EFI_STATUS efi_main(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE* SystemTable) {
  10.     // Save arguments
  11.     IH = ImageHandle;
  12.     ST = SystemTable;
  13.  
  14.     // Print message
  15.     ST->ConOut->OutputString(ST->ConsoleOutHandle, u"Hello World!\n");
  16.  
  17.     return EFI_SUCCESS;
  18. }
  19.  
  20.  
  21. // ========== SYSTEM TABLE DEFINITION ==========
  22. #pragma pack(push, 1)
  23. struct _EFI_TABLE_HEADER {
  24.     uint64_t Signature;
  25.     uint32_t Revision;
  26.     uint32_t HeaderSize;
  27.     uint32_t CRC32;
  28.     uint32_t Reserved;
  29. };
  30. typedef struct _EFI_TABLE_HEADER EFI_TABLE_HEADER;
  31.  
  32. struct _EFI_SYSTEM_TABLE {
  33.     EFI_TABLE_HEADER                    Hdr;
  34.     CHAR16*                             FirmwareVendor;
  35.     uint32_t                            FirmwareRevision;
  36.     EFI_HANDLE                          ConsoleInHandle;
  37.     void*                               ConIn;
  38.     EFI_HANDLE                          ConsoleOutHandle;
  39.     EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*    ConOut;
  40.     EFI_HANDLE                          StandardErrorHandle;
  41.     EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL*    StdErr;
  42.     void*                               RuntimeServices;
  43.     void*                               BootServices;
  44.     uint64_t                            NumberOfTableEntries;
  45.     void*                               ConfigurationTable;
  46. };
  47. typedef struct _EFI_SYSTEM_TABLE EFI_SYSTEM_TABLE;
  48. #pragma pack(pop)
  49.  
  50.  
  51. // ========== SIMPLE TEXT OUTPUT PROTO DEFINITION ==========
  52. #pragma pack(push, 1)
  53. struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
  54.     EFIAPI EFI_STATUS (*Reset)(struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL* This, BOOLEAN ExtendedVerification);
  55.     EFIAPI EFI_STATUS (*OutputString)(struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL* This, CHAR16* String);
  56. };
  57. typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL;
  58. #pragma pack(pop)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement