From 296d62f96e5976529372a2f26885cc5d28fc180a Mon Sep 17 00:00:00 2001 From: Jozef Nagy Date: Sat, 20 Jan 2024 23:35:46 +0100 Subject: [PATCH] Fix Boot Services table --- efi.h | 88 +++++++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/efi.h b/efi.h index 3f0a0c3..e6a3205 100644 --- a/efi.h +++ b/efi.h @@ -273,12 +273,22 @@ EFI_STATUS // EFI Runtime Services -typedef -VOID +typedef +EFI_STATUS +(EFIAPI *EFI_GET_VARIABLE)( + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid, + OUT UINT32 *Attributes OPTIONAL, + IN OUT UINTN *DataSize, + OUT VOID *Data OPTIONAL +); + +typedef +EFI_STATUS (EFIAPI *EFI_RESET_SYSTEM)( - IN EFI_RESET_TYPE ResetType, - IN EFI_STATUS ResetStatus, - IN UINTN DataSize, + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, IN VOID *ResetData OPTIONAL ); @@ -684,7 +694,7 @@ typedef struct EFI_RUNTIME_SERVICES { void *ConvertPointer; // Variable Services - void *GetVariable; + EFI_GET_VARIABLE GetVariable; void *GetNextVariableName; void *SetVariable; @@ -703,49 +713,73 @@ typedef struct EFI_RUNTIME_SERVICES { // EFI Boot Services typedef struct EFI_BOOT_SERVICES { - EFI_CREATE_EVENT CreateEvent; - EFI_CREATE_EVENT_EX CreateEventEx; - EFI_CLOSE_EVENT CloseEvent; - EFI_SIGNAL_EVENT SignalEvent; - EFI_WAIT_FOR_EVENT WaitForEvent; - EFI_CHECK_EVENT CheckEvent; - EFI_SET_TIMER SetTimer; + EFI_TABLE_HEADER Hdr; + + // Task Priority Services EFI_RAISE_TPL RaiseTPL; EFI_RESTORE_TPL RestoreTPL; + + // Memory Services EFI_ALLOCATE_PAGES AllocatePages; EFI_FREE_PAGES FreePages; EFI_GET_MEMORY_MAP GetMemoryMap; EFI_ALLOCATE_POOL AllocatePool; EFI_FREE_POOL FreePool; + + // Event & Timer Services + EFI_CREATE_EVENT CreateEvent; + EFI_SET_TIMER SetTimer; + EFI_WAIT_FOR_EVENT WaitForEvent; + EFI_SIGNAL_EVENT SignalEvent; + EFI_CLOSE_EVENT CloseEvent; + EFI_CHECK_EVENT CheckEvent; + + // Protocol Handler Services EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; - EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; + EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; + EFI_HANDLE_PROTOCOL HandleProtocol; + void *Reserved; EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; EFI_LOCATE_HANDLE LocateHandle; - EFI_HANDLE_PROTOCOL HandleProtocol; EFI_LOCATE_DEVICE_PATH LocateDevicePath; + EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; + + // Image Services + EFI_IMAGE_LOAD LoadImage; + EFI_IMAGE_START StartImage; + EFI_EXIT Exit; + EFI_IMAGE_UNLOAD UnloadImage; + EFI_EXIT_BOOT_SERVICES ExitBootServices; + + // Miscellaneous Services + EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; + EFI_STALL Stall; + EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; + + // DriverSupport Services + EFI_CONNECT_CONTROLLER ConnectController; + EFI_DISCONNECT_CONTROLLER DisconnectController; + + // Open and Close Protocol Services EFI_OPEN_PROTOCOL OpenProtocol; EFI_CLOSE_PROTOCOL CloseProtocol; EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; - EFI_CONNECT_CONTROLLER ConnectController; - EFI_DISCONNECT_CONTROLLER DisconnectController; + + // Library Services EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; EFI_LOCATE_PROTOCOL LocateProtocol; EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; - EFI_IMAGE_LOAD LoadImage; - EFI_IMAGE_START StartImage; - EFI_IMAGE_UNLOAD UnloadImage; - EFI_EXIT Exit; - EFI_EXIT_BOOT_SERVICES ExitBootServices; - EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; - EFI_STALL Stall; + + // 32-bit CRC Services + EFI_CALCULATE_CRC32 CalculateCrc32; + + // Miscellaneous Services EFI_COPY_MEM CopyMem; EFI_SET_MEM SetMem; - EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; - EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; - EFI_CALCULATE_CRC32 CalculateCrc32; + EFI_CREATE_EVENT_EX CreateEventEx; } EFI_BOOT_SERVICES; // EFI System Table