Implement BlRebootSystem() and BlShutdownSystem() routines
This commit is contained in:
parent
489734d5c9
commit
521006d939
@ -98,6 +98,7 @@ typedef EFI_STATUS (*PBL_LOCATE_PROTOCOL_HANDLES)(OUT PEFI_HANDLE *Handles, OUT
|
|||||||
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_VOLUME)(IN PEFI_DEVICE_PATH_PROTOCOL DevicePath, OUT PEFI_HANDLE DiskHandle, OUT PEFI_FILE_HANDLE *FsHandle);
|
||||||
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL)(OUT PEFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL)(OUT PEFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
||||||
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL_HANDLE)(IN EFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
typedef EFI_STATUS (*PBL_OPEN_PROTOCOL_HANDLE)(IN EFI_HANDLE Handle, OUT PVOID *ProtocolHandler, IN PEFI_GUID ProtocolGuid);
|
||||||
|
typedef EFI_STATUS (*PBL_POWER_SYSTEM)();
|
||||||
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_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 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_REGISTER_XT_BOOT_MENU)(PVOID BootMenuRoutine);
|
||||||
@ -291,6 +292,8 @@ typedef struct _XTBL_LOADER_PROTOCOL
|
|||||||
{
|
{
|
||||||
PBL_EXIT_BOOT_SERVICES ExitBootServices;
|
PBL_EXIT_BOOT_SERVICES ExitBootServices;
|
||||||
PBL_GET_SECURE_BOOT_STATUS GetSecureBootStatus;
|
PBL_GET_SECURE_BOOT_STATUS GetSecureBootStatus;
|
||||||
|
PBL_POWER_SYSTEM RebootSystem;
|
||||||
|
PBL_POWER_SYSTEM ShutdownSystem;
|
||||||
PBL_SLEEP_EXECUTION SleepExecution;
|
PBL_SLEEP_EXECUTION SleepExecution;
|
||||||
PBL_WAIT_FOR_EFI_EVENT WaitForEfiEvent;
|
PBL_WAIT_FOR_EFI_EVENT WaitForEfiEvent;
|
||||||
} Util;
|
} Util;
|
||||||
|
@ -99,6 +99,36 @@ BlGetSecureBootStatus()
|
|||||||
return SecureBootStatus;
|
return SecureBootStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reboots the machine.
|
||||||
|
*
|
||||||
|
* @return This routine returns a status code.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTCDECL
|
||||||
|
EFI_STATUS
|
||||||
|
BlRebootSystem()
|
||||||
|
{
|
||||||
|
/* Reboot machine */
|
||||||
|
return EfiSystemTable->RuntimeServices->ResetSystem(EfiResetCold, STATUS_EFI_SUCCESS, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shuts down the machine.
|
||||||
|
*
|
||||||
|
* @return This routine returns a status code.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTCDECL
|
||||||
|
EFI_STATUS
|
||||||
|
BlShutdownSystem()
|
||||||
|
{
|
||||||
|
/* Shutdown machine */
|
||||||
|
return EfiSystemTable->RuntimeServices->ResetSystem(EfiResetShutdown, STATUS_EFI_SUCCESS, 0, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Puts the system to sleep for the specified number of milliseconds.
|
* Puts the system to sleep for the specified number of milliseconds.
|
||||||
*
|
*
|
||||||
|
@ -646,6 +646,8 @@ BlpInstallXtLoaderProtocol()
|
|||||||
BlpLdrProtocol.Tui.UpdateProgressBar = BlUpdateProgressBar;
|
BlpLdrProtocol.Tui.UpdateProgressBar = BlUpdateProgressBar;
|
||||||
BlpLdrProtocol.Util.ExitBootServices = BlExitBootServices;
|
BlpLdrProtocol.Util.ExitBootServices = BlExitBootServices;
|
||||||
BlpLdrProtocol.Util.GetSecureBootStatus = BlGetSecureBootStatus;
|
BlpLdrProtocol.Util.GetSecureBootStatus = BlGetSecureBootStatus;
|
||||||
|
BlpLdrProtocol.Util.RebootSystem = BlRebootSystem;
|
||||||
|
BlpLdrProtocol.Util.ShutdownSystem = BlShutdownSystem;
|
||||||
BlpLdrProtocol.Util.SleepExecution = BlSleepExecution;
|
BlpLdrProtocol.Util.SleepExecution = BlSleepExecution;
|
||||||
BlpLdrProtocol.Util.WaitForEfiEvent = BlWaitForEfiEvent;
|
BlpLdrProtocol.Util.WaitForEfiEvent = BlWaitForEfiEvent;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user