| /** @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.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #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 |