mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-11-04 02:40:26 +00:00 
			
		
		
		
	git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8046 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  Provides a way for 3rd party applications to register themselves for launch by the
 | 
						|
  Boot Manager based on hot key
 | 
						|
 | 
						|
Copyright (c) 2007 - 2008, Intel Corporation. <BR>
 | 
						|
All rights reserved. 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 GET_BOOT_OPTION_SUPPORT_KEY_COUNT(a) (((a) & EFI_BOOT_OPTION_SUPPORT_COUNT) >> 8)
 | 
						|
#define SET_BOOT_OPTION_SUPPORT_KEY_COUNT(a, c) {  \
 | 
						|
      (a) = ((a) & ~EFI_BOOT_OPTION_SUPPORT_COUNT) | (((c) << 8) & EFI_BOOT_OPTION_SUPPORT_COUNT); \
 | 
						|
      }
 | 
						|
 | 
						|
#define BDS_HOTKEY_OPTION_SIGNATURE SIGNATURE_32 ('B', 'd', 'K', 'O')
 | 
						|
 | 
						|
 | 
						|
typedef struct {
 | 
						|
  UINTN                     Signature;
 | 
						|
  LIST_ENTRY                Link;
 | 
						|
 | 
						|
  EFI_HANDLE                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)
 | 
						|
 | 
						|
#define VAR_KEY_ORDER       L"KeyOrder"
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Create Key#### for the given hotkey.
 | 
						|
 | 
						|
 | 
						|
  @param KeyOption       - The Hot Key Option to be added.
 | 
						|
  @param KeyOptionNumber - The key option number for Key#### (optional).
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS            Register hotkey successfully.
 | 
						|
  @retval  EFI_INVALID_PARAMETER  The hotkey option is invalid.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
RegisterHotkey (
 | 
						|
  IN EFI_KEY_OPTION     *KeyOption,
 | 
						|
  OUT UINT16            *KeyOptionNumber
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Delete Key#### for the given Key Option number.
 | 
						|
 | 
						|
 | 
						|
  @param KeyOptionNumber - Key option number for Key####
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS            Unregister hotkey successfully.
 | 
						|
  @retval  EFI_NOT_FOUND          No Key#### is found for the given Key Option number.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
UnregisterHotkey (
 | 
						|
  IN UINT16             KeyOptionNumber
 | 
						|
  );
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
  Process all the "Key####" variables, associate Hotkeys with corresponding Boot Options.
 | 
						|
 | 
						|
 | 
						|
  @param VOID
 | 
						|
 | 
						|
  @retval  EFI_SUCCESS    Hotkey services successfully initialized.
 | 
						|
 | 
						|
**/
 | 
						|
EFI_STATUS
 | 
						|
InitializeHotkeyService (
 | 
						|
  VOID
 | 
						|
  );
 | 
						|
 | 
						|
#endif
 |