Implement PeGetFileSize(), PeGetImageSize() and PeUnloadImage() routines

This commit is contained in:
2024-03-01 23:12:12 +01:00
parent 17c50ea912
commit a57ae020fa
3 changed files with 131 additions and 3 deletions

View File

@@ -110,12 +110,15 @@ typedef EFI_STATUS (*PBL_ACPI_GET_SMBIOS3_TABLE)(OUT PVOID *SmBiosTable);
typedef EFI_STATUS (*PBL_ACPI_GET_XSDP_TABLE)(OUT PVOID *AcpiTable);
typedef EFI_STATUS (*PBL_BOOTPROTO_BOOT_SYSTEM)(IN PXTBL_BOOT_PARAMETERS Parameters);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_ENTRY_POINT)(IN PVOID ImagePointer, OUT PVOID *EntryPoint);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_FILE_SIZE)(IN PVOID ImagePointer, OUT PULONGLONG FileSize);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_IMAGE_SIZE)(IN PVOID ImagePointer, OUT PUINT ImageSize);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_MACHINE_TYPE)(IN PVOID ImagePointer, OUT PUSHORT MachineType);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_SECTION)(IN PVOID ImagePointer, IN PCHAR SectionName, OUT PULONG *RawData);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_SUBSYSTEM)(IN PVOID ImagePointer, OUT PUSHORT SubSystem);
typedef EFI_STATUS (*PBL_EXECIMAGE_GET_VERSION)(IN PVOID ImagePointer, OUT PUSHORT Version);
typedef EFI_STATUS (*PBL_EXECIMAGE_LOAD_IMAGE)(IN PEFI_FILE_HANDLE FileHandle, IN LOADER_MEMORY_TYPE MemoryType, IN PVOID VirtualAddress, OUT PVOID *ImagePointer);
typedef EFI_STATUS (*PBL_EXECIMAGE_RELOCATE_IMAGE)(IN PVOID ImagePointer, IN EFI_VIRTUAL_ADDRESS Address);
typedef EFI_STATUS (*PBL_EXECIMAGE_UNLOAD_IMAGE)(IN PVOID ImagePointer);
typedef EFI_STATUS (*PBL_EXECIMAGE_VERIFY_IMAGE)(IN PVOID ImagePointer);
typedef EFI_STATUS (*PBL_FRAMEBUFFER_GET_DISPLAY_DRIVER)(OUT PEFI_GRAPHICS_PROTOCOL Protocol);
typedef EFI_STATUS (*PBL_FRAMEBUFFER_GET_DISPLAY_INFORMATION)(OUT PXTBL_FRAMEBUFFER_INFORMATION FbInfo);
@@ -290,12 +293,15 @@ typedef struct _XTBL_BOOT_PROTOCOL
typedef struct _XTBL_EXECUTABLE_IMAGE_PROTOCOL
{
PBL_EXECIMAGE_GET_ENTRY_POINT GetEntryPoint;
PBL_EXECIMAGE_GET_FILE_SIZE GetFileSize;
PBL_EXECIMAGE_GET_IMAGE_SIZE GetImageSize;
PBL_EXECIMAGE_GET_MACHINE_TYPE GetMachineType;
PBL_EXECIMAGE_GET_SECTION GetSection;
PBL_EXECIMAGE_GET_SUBSYSTEM GetSubSystem;
PBL_EXECIMAGE_GET_VERSION GetVersion;
PBL_EXECIMAGE_LOAD_IMAGE LoadImage;
PBL_EXECIMAGE_RELOCATE_IMAGE RelocateImage;
PBL_EXECIMAGE_UNLOAD_IMAGE UnloadImage;
PBL_EXECIMAGE_VERIFY_IMAGE VerifyImage;
} XTBL_EXECUTABLE_IMAGE_PROTOCOL, *PXTBL_EXECUTABLE_IMAGE_PROTOCOL;