diff --git a/sdk/xtdk/bltypes.h b/sdk/xtdk/bltypes.h index 25a5127..6d448a5 100644 --- a/sdk/xtdk/bltypes.h +++ b/sdk/xtdk/bltypes.h @@ -78,6 +78,7 @@ typedef VOID (*PBL_CONSOLE_RESET_INPUT_BUFFER)(); typedef VOID (*PBL_CONSOLE_SET_ATTRIBUTES)(IN ULONGLONG Attributes); typedef VOID (*PBL_CONSOLE_SET_CURSOR_POSITION)(IN ULONGLONG PosX, IN ULONGLONG PosY); typedef VOID (*PBL_CONSOLE_WRITE)(IN PUSHORT String); +typedef VOID (*PBL_COPY_MEMORY)(OUT PVOID Destination, IN PCVOID Source, IN SIZE_T Length); typedef VOID (*PBL_DEBUG_PRINT)(IN PUINT16 Format, IN ...); typedef EFI_STATUS (*PBL_EXECIMAGE_GET_ENTRY_POINT)(IN PVOID ImagePointer, OUT PVOID *EntryPoint); typedef EFI_STATUS (*PBL_EXECIMAGE_GET_MACHINE_TYPE)(IN PVOID ImagePointer, OUT PUSHORT MachineType); @@ -98,6 +99,7 @@ typedef EFI_STATUS (*PBL_OPEN_XT_PROTOCOL)(OUT PEFI_HANDLE Handle, OUT PVOID *Pr typedef EFI_STATUS (*PBL_READ_FILE)(IN PEFI_FILE_HANDLE DirHandle, IN CONST PWCHAR FileName, OUT PVOID *FileData, OUT PSIZE_T FileSize); typedef EFI_STATUS (*PBL_REGISTER_BOOT_PROTOCOL)(IN PWCHAR SystemType, IN PEFI_GUID BootProtocolGuid); typedef VOID (*PBL_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine); +typedef VOID (*PBL_SET_MEMORY)(OUT PVOID Destination, IN UCHAR Byte, IN SIZE_T Length); typedef VOID (*PBL_SLEEP_EXECUTION)(IN ULONG_PTR Milliseconds); typedef VOID (*PBL_TUI_DISPLAY_ERROR_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); typedef VOID (*PBL_TUI_DISPLAY_INFO_DIALOG)(IN PWCHAR Caption, IN PWCHAR Message); @@ -106,6 +108,7 @@ typedef XTBL_DIALOG_HANDLE (*PBL_TUI_DISPLAY_PROGRESS_DIALOG)(IN PWCHAR Caption, typedef VOID (*PBL_TUI_UPDATE_PROGRESS_BAR)(IN PXTBL_DIALOG_HANDLE Handle, IN PWCHAR Message, IN UCHAR Percentage); typedef EFI_STATUS (*PBL_WAIT_FOR_EFI_EVENT)(IN UINT_PTR NumberOfEvents, IN PEFI_EVENT Event, OUT PUINT_PTR Index); typedef VOID (*PBL_XT_BOOT_MENU)(); +typedef VOID (*PBL_ZERO_MEMORY)(OUT PVOID Destination, IN SIZE_T Length); /* Boot parameters structure */ typedef struct _XTBL_BOOT_PARAMETERS @@ -258,9 +261,12 @@ typedef struct _XTBL_LOADER_PROTOCOL { PBL_ALLOCATE_PAGES AllocatePages; PBL_ALLOCATE_POOL AllocatePool; + PBL_COPY_MEMORY CopyMemory; PBL_FREE_PAGES FreePages; PBL_FREE_POOL FreePool; PBL_GET_MEMORY_MAP GetMemoryMap; + PBL_SET_MEMORY SetMemory; + PBL_ZERO_MEMORY ZeroMemory; } Memory; struct { diff --git a/xtldr/protocol.c b/xtldr/protocol.c index 10622d9..03ac30d 100644 --- a/xtldr/protocol.c +++ b/xtldr/protocol.c @@ -578,9 +578,12 @@ BlpInstallXtLoaderProtocol() BlpLdrProtocol.Disk.ReadFile = BlReadFile; BlpLdrProtocol.Memory.AllocatePages = BlMemoryAllocatePages; BlpLdrProtocol.Memory.AllocatePool = BlMemoryAllocatePool; + BlpLdrProtocol.Memory.CopyMemory = RtlCopyMemory; BlpLdrProtocol.Memory.FreePages = BlMemoryFreePages; BlpLdrProtocol.Memory.FreePool = BlMemoryFreePool; BlpLdrProtocol.Memory.GetMemoryMap = BlGetMemoryMap; + BlpLdrProtocol.Memory.SetMemory = RtlSetMemory; + BlpLdrProtocol.Memory.ZeroMemory = RtlZeroMemory; BlpLdrProtocol.Protocol.Close = BlCloseProtocol; BlpLdrProtocol.Protocol.GetModulesList = BlGetModulesList; BlpLdrProtocol.Protocol.Open = BlOpenProtocol;