/** @file Provides a way for 3rd party applications to register themselves for launch by the Boot Manager based on hot key Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _HOTKEY_H_ #define _HOTKEY_H_ #include "Bds.h" #include "String.h" #define SET_BOOT_OPTION_SUPPORT_KEY_COUNT(a, c) { \ (a) = ((a) & ~EFI_BOOT_OPTION_SUPPORT_COUNT) | (((c) << LowBitSet32 (EFI_BOOT_OPTION_SUPPORT_COUNT)) & EFI_BOOT_OPTION_SUPPORT_COUNT); \ } #define BDS_HOTKEY_OPTION_SIGNATURE SIGNATURE_32 ('B', 'd', 'K', 'O') typedef struct { UINTN Signature; LIST_ENTRY Link; VOID *NotifyHandle; UINT16 BootOptionNumber; UINT8 CodeCount; UINT8 WaitingKey; EFI_KEY_DATA KeyData[3]; } BDS_HOTKEY_OPTION; #define BDS_HOTKEY_OPTION_FROM_LINK(a) CR (a, BDS_HOTKEY_OPTION, Link, BDS_HOTKEY_OPTION_SIGNATURE) /** Process all the "Key####" variables, associate Hotkeys with corresponding Boot Options. @param VOID @retval EFI_SUCCESS Hotkey services successfully initialized. **/ EFI_STATUS InitializeHotkeyService ( VOID ); /** Try to boot the boot option triggered by hotkey. @retval EFI_SUCCESS There is HotkeyBootOption & it is processed @retval EFI_NOT_FOUND There is no HotkeyBootOption **/ EFI_STATUS HotkeyBoot ( VOID ); #endif