Add basic volume support to XTLDR protocol
All checks were successful
Builds / ExectOS (amd64) (push) Successful in 27s
Builds / ExectOS (i686) (push) Successful in 27s

This commit is contained in:
Rafal Kupiec 2023-12-07 16:04:09 +01:00
parent 3025338e71
commit a261c68808
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 9 additions and 0 deletions

View File

@ -31,6 +31,7 @@
/* Loader protocol routine pointers */ /* Loader protocol routine pointers */
typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_ALLOCATE_PAGES)(IN UINT64 Size, OUT PEFI_PHYSICAL_ADDRESS Memory);
typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory); typedef EFI_STATUS (*PBL_ALLOCATE_POOL)(IN UINT_PTR Size, OUT PVOID *Memory);
typedef EFI_STATUS (*PBL_CLOSE_VOLUME)(IN PEFI_HANDLE VolumeHandle);
typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)(); typedef VOID (*PBL_CONSOLE_CLEAR_SCREEN)();
typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_DISABLE_CURSOR)();
typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)(); typedef VOID (*PBL_CONSOLE_ENABLE_CURSOR)();
@ -39,6 +40,7 @@ typedef VOID (*PBL_DEBUG_PRINT)(IN PUINT16 Format, IN ...);
typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)(IN UINT_PTR MapKey); typedef EFI_STATUS (*PBL_EXIT_BOOT_SERVICES)(IN UINT_PTR MapKey);
typedef EFI_STATUS (*PBL_FREE_PAGES)(IN UINT64 Size, IN EFI_PHYSICAL_ADDRESS Memory); typedef EFI_STATUS (*PBL_FREE_PAGES)(IN UINT64 Size, IN EFI_PHYSICAL_ADDRESS Memory);
typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory); typedef EFI_STATUS (*PBL_FREE_POOL)(IN PVOID Memory);
typedef EFI_STATUS (*PBL_OPEN_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle);
typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid); typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds); typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds);
@ -91,6 +93,11 @@ typedef struct _XTBL_LOADER_PROTOCOL
PBL_EXIT_BOOT_SERVICES ExitBootServices; PBL_EXIT_BOOT_SERVICES ExitBootServices;
PBL_SLEEP_EXECUTION SleepExecution; PBL_SLEEP_EXECUTION SleepExecution;
} Util; } Util;
struct
{
PBL_CLOSE_VOLUME Close;
PBL_OPEN_VOLUME Open;
} Volume;
} XTBL_LOADER_PROTOCOL, *PXTBL_LOADER_PROTOCOL; } XTBL_LOADER_PROTOCOL, *PXTBL_LOADER_PROTOCOL;
#endif /* __XTDK_BMTYPES_H */ #endif /* __XTDK_BMTYPES_H */

View File

@ -102,6 +102,8 @@ BlpRegisterXtLoaderProtocol()
LdrProtocol.Protocol.Open = BlOpenXtProtocol; LdrProtocol.Protocol.Open = BlOpenXtProtocol;
LdrProtocol.Util.ExitBootServices = BlExitBootServices; LdrProtocol.Util.ExitBootServices = BlExitBootServices;
LdrProtocol.Util.SleepExecution = BlSleepExecution; LdrProtocol.Util.SleepExecution = BlSleepExecution;
LdrProtocol.Volume.Close = BlCloseVolume;
LdrProtocol.Volume.Open = BlOpenVolume;
/* Register XTLDR loader protocol */ /* Register XTLDR loader protocol */
BlDebugPrint(L"Registering XT loader protocol\n"); BlDebugPrint(L"Registering XT loader protocol\n");