git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4599 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1695 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1695 lines
		
	
	
		
			74 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						||
 | 
						||
Copyright (c) 2007, Intel Corporation
 | 
						||
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.
 | 
						||
 | 
						||
Module Name:
 | 
						||
 | 
						||
    HiiDatabase.h
 | 
						||
 | 
						||
Abstract:
 | 
						||
 | 
						||
    Private structures definitions in HiiDatabase.
 | 
						||
 | 
						||
Revision History
 | 
						||
 | 
						||
 | 
						||
**/
 | 
						||
 | 
						||
#ifndef __HII_DATABASE_PRIVATE_H__
 | 
						||
#define __HII_DATABASE_PRIVATE_H__
 | 
						||
 | 
						||
#include <PiDxe.h>
 | 
						||
 | 
						||
#include <Protocol/ConsoleControl.h>
 | 
						||
#include <Protocol/DevicePath.h>
 | 
						||
#include <Protocol/HiiFont.h>
 | 
						||
#include <Protocol/HiiImage.h>
 | 
						||
#include <Protocol/HiiString.h>
 | 
						||
#include <Protocol/HiiDatabase.h>
 | 
						||
#include <Protocol/HiiConfigRouting.h>
 | 
						||
#include <Protocol/HiiConfigAccess.h>
 | 
						||
#include <Protocol/SimpleTextOut.h>
 | 
						||
 | 
						||
#include <Guid/HiiKeyBoardLayout.h>
 | 
						||
 | 
						||
 | 
						||
#include <Library/DebugLib.h>
 | 
						||
#include <Library/BaseMemoryLib.h>
 | 
						||
#include <Library/UefiDriverEntryPoint.h>
 | 
						||
#include <Library/UefiBootServicesTableLib.h>
 | 
						||
#include <Library/BaseLib.h>
 | 
						||
#include <Library/DevicePathLib.h>
 | 
						||
#include <Library/MemoryAllocationLib.h>
 | 
						||
 | 
						||
#define HII_DATABASE_NOTIFY_GUID \
 | 
						||
  { \
 | 
						||
    0xc1c76, 0xd79e, 0x42fe, 0x86, 0xb, 0x8b, 0xe8, 0x7b, 0x3e, 0x7a, 0x78 \
 | 
						||
  }
 | 
						||
 | 
						||
#define MAX_STRING_LENGTH                  1024
 | 
						||
#define MAX_FONT_NAME_LEN                  256
 | 
						||
#define NARROW_BASELINE                    15
 | 
						||
#define WIDE_BASELINE                      14
 | 
						||
#define SYS_FONT_INFO_MASK                 0x37
 | 
						||
#define REPLACE_UNKNOWN_GLYPH              0xFFFD
 | 
						||
#define PROPORTIONAL_GLYPH                 0x80
 | 
						||
#define NARROW_GLYPH                       0x40
 | 
						||
 | 
						||
#define BITMAP_LEN_1_BIT(Width, Height)  (((Width) + 7) / 8 * (Height))
 | 
						||
#define BITMAP_LEN_4_BIT(Width, Height)  (((Width) + 1) / 2 * (Height))
 | 
						||
#define BITMAP_LEN_8_BIT(Width, Height)  ((Width) * (Height))
 | 
						||
#define BITMAP_LEN_24_BIT(Width, Height) ((Width) * (Height) * 3)
 | 
						||
 | 
						||
//
 | 
						||
// Storage types
 | 
						||
//
 | 
						||
#define EFI_HII_VARSTORE_BUFFER            0
 | 
						||
#define EFI_HII_VARSTORE_NAME_VALUE        1
 | 
						||
#define EFI_HII_VARSTORE_EFI_VARIABLE      2
 | 
						||
 | 
						||
#define HII_FORMSET_STORAGE_SIGNATURE           EFI_SIGNATURE_32 ('H', 'S', 'T', 'G')
 | 
						||
typedef struct {
 | 
						||
  UINTN               Signature;
 | 
						||
  LIST_ENTRY          Entry;
 | 
						||
 | 
						||
  EFI_HII_HANDLE      HiiHandle;
 | 
						||
  EFI_HANDLE          DriverHandle;
 | 
						||
 | 
						||
  UINT8               Type;   // EFI_HII_VARSTORE_BUFFER, EFI_HII_VARSTORE_NAME_VALUE, EFI_HII_VARSTORE_EFI_VARIABLE
 | 
						||
  EFI_GUID            Guid;
 | 
						||
  CHAR16              *Name;
 | 
						||
  UINT16              Size;
 | 
						||
} HII_FORMSET_STORAGE;
 | 
						||
 | 
						||
#define HII_FORMSET_STORAGE_FROM_LINK(a)  CR (a, HII_FORMSET_STORAGE, Link, HII_FORMSET_STORAGE_SIGNATURE)
 | 
						||
 | 
						||
 | 
						||
//
 | 
						||
// String Package definitions
 | 
						||
//
 | 
						||
#define HII_STRING_PACKAGE_SIGNATURE    EFI_SIGNATURE_32 ('h','i','s','p')
 | 
						||
typedef struct _HII_STRING_PACKAGE_INSTANCE {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  EFI_HII_STRING_PACKAGE_HDR            *StringPkgHdr;
 | 
						||
  UINT8                                 *StringBlock;
 | 
						||
  LIST_ENTRY                            StringEntry;
 | 
						||
  LIST_ENTRY                            FontInfoList;  // local font info list
 | 
						||
  UINT8                                 FontId;
 | 
						||
} HII_STRING_PACKAGE_INSTANCE;
 | 
						||
 | 
						||
//
 | 
						||
// Form Package definitions
 | 
						||
//
 | 
						||
#define HII_IFR_PACKAGE_SIGNATURE       EFI_SIGNATURE_32 ('h','f','r','p')
 | 
						||
typedef struct _HII_IFR_PACKAGE_INSTANCE {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  EFI_HII_PACKAGE_HEADER                FormPkgHdr;
 | 
						||
  UINT8                                 *IfrData;
 | 
						||
  LIST_ENTRY                            IfrEntry;
 | 
						||
} HII_IFR_PACKAGE_INSTANCE;
 | 
						||
 | 
						||
//
 | 
						||
// Simple Font Package definitions
 | 
						||
//
 | 
						||
#define HII_S_FONT_PACKAGE_SIGNATURE    EFI_SIGNATURE_32 ('h','s','f','p')
 | 
						||
typedef struct _HII_SIMPLE_FONT_PACKAGE_INSTANCE {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  EFI_HII_SIMPLE_FONT_PACKAGE_HDR       *SimpleFontPkgHdr;
 | 
						||
  LIST_ENTRY                            SimpleFontEntry;
 | 
						||
} HII_SIMPLE_FONT_PACKAGE_INSTANCE;
 | 
						||
 | 
						||
//
 | 
						||
// Font Package definitions
 | 
						||
//
 | 
						||
#define HII_FONT_PACKAGE_SIGNATURE      EFI_SIGNATURE_32 ('h','i','f','p')
 | 
						||
typedef struct _HII_FONT_PACKAGE_INSTANCE {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  EFI_HII_FONT_PACKAGE_HDR              *FontPkgHdr;
 | 
						||
  UINT8                                 *GlyphBlock;
 | 
						||
  LIST_ENTRY                            FontEntry;
 | 
						||
  LIST_ENTRY                            GlyphInfoList;
 | 
						||
} HII_FONT_PACKAGE_INSTANCE;
 | 
						||
 | 
						||
#define HII_GLYPH_INFO_SIGNATURE        EFI_SIGNATURE_32 ('h','g','i','s')
 | 
						||
typedef struct _HII_GLYPH_INFO {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  LIST_ENTRY                            Entry;
 | 
						||
  CHAR16                                CharId;
 | 
						||
  EFI_HII_GLYPH_INFO                    Cell;
 | 
						||
} HII_GLYPH_INFO;
 | 
						||
 | 
						||
#define HII_FONT_INFO_SIGNATURE         EFI_SIGNATURE_32 ('h','l','f','i')
 | 
						||
typedef struct _HII_FONT_INFO {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  LIST_ENTRY                            Entry;
 | 
						||
  LIST_ENTRY                            *GlobalEntry;
 | 
						||
  UINT8                                 FontId;
 | 
						||
} HII_FONT_INFO;
 | 
						||
 | 
						||
#define HII_GLOBAL_FONT_INFO_SIGNATURE  EFI_SIGNATURE_32 ('h','g','f','i')
 | 
						||
typedef struct _HII_GLOBAL_FONT_INFO {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  LIST_ENTRY                            Entry;
 | 
						||
  HII_FONT_PACKAGE_INSTANCE             *FontPackage;
 | 
						||
  UINTN                                 FontInfoSize;
 | 
						||
  EFI_FONT_INFO                         *FontInfo;
 | 
						||
} HII_GLOBAL_FONT_INFO;
 | 
						||
 | 
						||
//
 | 
						||
// Image Package definitions
 | 
						||
//
 | 
						||
 | 
						||
#define HII_PIXEL_MASK                  0x80
 | 
						||
 | 
						||
typedef struct _HII_IMAGE_PACKAGE_INSTANCE {
 | 
						||
  EFI_HII_IMAGE_PACKAGE_HDR             ImagePkgHdr;
 | 
						||
  UINT32                                ImageBlockSize;
 | 
						||
  UINT32                                PaletteInfoSize;
 | 
						||
  UINT8                                 *ImageBlock;
 | 
						||
  UINT8                                 *PaletteBlock;
 | 
						||
} HII_IMAGE_PACKAGE_INSTANCE;
 | 
						||
 | 
						||
//
 | 
						||
// Keyboard Layout Pacakge definitions
 | 
						||
//
 | 
						||
#define HII_KB_LAYOUT_PACKAGE_SIGNATURE EFI_SIGNATURE_32 ('h','k','l','p')
 | 
						||
typedef struct _HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  UINT8                                 *KeyboardPkg;
 | 
						||
  LIST_ENTRY                            KeyboardEntry;
 | 
						||
} HII_KEYBOARD_LAYOUT_PACKAGE_INSTANCE;
 | 
						||
 | 
						||
//
 | 
						||
// Guid Package definitions
 | 
						||
//
 | 
						||
#define HII_GUID_PACKAGE_SIGNATURE      EFI_SIGNATURE_32 ('h','i','g','p')
 | 
						||
typedef struct _HII_GUID_PACKAGE_INSTANCE {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  UINT8                                 *GuidPkg;
 | 
						||
  LIST_ENTRY                            GuidEntry;
 | 
						||
} HII_GUID_PACKAGE_INSTANCE;
 | 
						||
 | 
						||
//
 | 
						||
// A package list can contain only one or less than one device path package.
 | 
						||
// This rule also applies to image package since ImageId can not be duplicate.
 | 
						||
//
 | 
						||
typedef struct _HII_DATABASE_PACKAGE_LIST_INSTANCE {
 | 
						||
  EFI_HII_PACKAGE_LIST_HEADER           PackageListHdr;
 | 
						||
  LIST_ENTRY                            GuidPkgHdr;
 | 
						||
  LIST_ENTRY                            FormPkgHdr;
 | 
						||
  LIST_ENTRY                            KeyboardLayoutHdr;
 | 
						||
  LIST_ENTRY                            StringPkgHdr;
 | 
						||
  LIST_ENTRY                            FontPkgHdr;
 | 
						||
  HII_IMAGE_PACKAGE_INSTANCE            *ImagePkg;
 | 
						||
  LIST_ENTRY                            SimpleFontPkgHdr;
 | 
						||
  UINT8                                 *DevicePathPkg;
 | 
						||
} HII_DATABASE_PACKAGE_LIST_INSTANCE;
 | 
						||
 | 
						||
#define HII_HANDLE_SIGNATURE            EFI_SIGNATURE_32 ('h','i','h','l')
 | 
						||
 | 
						||
typedef struct {
 | 
						||
  UINTN               Signature;
 | 
						||
  LIST_ENTRY          Handle;
 | 
						||
  UINTN               Key;
 | 
						||
} HII_HANDLE;
 | 
						||
 | 
						||
#define HII_DATABASE_RECORD_SIGNATURE   EFI_SIGNATURE_32 ('h','i','d','r')
 | 
						||
 | 
						||
typedef struct _HII_DATABASE_RECORD {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  HII_DATABASE_PACKAGE_LIST_INSTANCE    *PackageList;
 | 
						||
  EFI_HANDLE                            DriverHandle;
 | 
						||
  EFI_HII_HANDLE                        Handle;
 | 
						||
  LIST_ENTRY                            DatabaseEntry;
 | 
						||
} HII_DATABASE_RECORD;
 | 
						||
 | 
						||
#define HII_DATABASE_NOTIFY_SIGNATURE   EFI_SIGNATURE_32 ('h','i','d','n')
 | 
						||
 | 
						||
typedef struct _HII_DATABASE_NOTIFY {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  EFI_HANDLE                            NotifyHandle;
 | 
						||
  UINT8                                 PackageType;
 | 
						||
  EFI_GUID                              *PackageGuid;
 | 
						||
  EFI_HII_DATABASE_NOTIFY               PackageNotifyFn;
 | 
						||
  EFI_HII_DATABASE_NOTIFY_TYPE          NotifyType;
 | 
						||
  LIST_ENTRY                            DatabaseNotifyEntry;
 | 
						||
} HII_DATABASE_NOTIFY;
 | 
						||
 | 
						||
#define HII_DATABASE_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'D', 'p')
 | 
						||
 | 
						||
typedef struct _HII_DATABASE_PRIVATE_DATA {
 | 
						||
  UINTN                                 Signature;
 | 
						||
  LIST_ENTRY                            DatabaseList;
 | 
						||
  LIST_ENTRY                            DatabaseNotifyList;
 | 
						||
  EFI_HII_FONT_PROTOCOL                 HiiFont;
 | 
						||
#ifndef DISABLE_UNUSED_HII_PROTOCOLS
 | 
						||
  EFI_HII_IMAGE_PROTOCOL                HiiImage;
 | 
						||
#endif
 | 
						||
  EFI_HII_STRING_PROTOCOL               HiiString;
 | 
						||
  EFI_HII_DATABASE_PROTOCOL             HiiDatabase;
 | 
						||
  EFI_HII_CONFIG_ROUTING_PROTOCOL       ConfigRouting;
 | 
						||
  LIST_ENTRY                            HiiHandleList;
 | 
						||
  INTN                                  HiiHandleCount;
 | 
						||
  LIST_ENTRY                            FontInfoList;  // global font info list
 | 
						||
  UINTN                                 Attribute;     // default system color
 | 
						||
  EFI_GUID                              CurrentLayoutGuid;
 | 
						||
  EFI_HII_KEYBOARD_LAYOUT               *CurrentLayout;
 | 
						||
} HII_DATABASE_PRIVATE_DATA;
 | 
						||
 | 
						||
#define HII_FONT_DATABASE_PRIVATE_DATA_FROM_THIS(a) \
 | 
						||
  CR (a, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA, \
 | 
						||
      HiiFont, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA_SIGNATURE \
 | 
						||
      )
 | 
						||
 | 
						||
#define HII_IMAGE_DATABASE_PRIVATE_DATA_FROM_THIS(a) \
 | 
						||
  CR (a, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA, \
 | 
						||
      HiiImage, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA_SIGNATURE \
 | 
						||
      )
 | 
						||
 | 
						||
#define HII_STRING_DATABASE_PRIVATE_DATA_FROM_THIS(a) \
 | 
						||
  CR (a, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA, \
 | 
						||
      HiiString, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA_SIGNATURE \
 | 
						||
      )
 | 
						||
 | 
						||
#define HII_DATABASE_DATABASE_PRIVATE_DATA_FROM_THIS(a) \
 | 
						||
  CR (a, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA, \
 | 
						||
      HiiDatabase, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA_SIGNATURE \
 | 
						||
      )
 | 
						||
 | 
						||
#define CONFIG_ROUTING_DATABASE_PRIVATE_DATA_FROM_THIS(a) \
 | 
						||
  CR (a, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA, \
 | 
						||
      ConfigRouting, \
 | 
						||
      HII_DATABASE_PRIVATE_DATA_SIGNATURE \
 | 
						||
      )
 | 
						||
 | 
						||
//
 | 
						||
// Internal function prototypes.
 | 
						||
//
 | 
						||
 | 
						||
/**
 | 
						||
  This function checks whether a handle is a valid EFI_HII_HANDLE
 | 
						||
 | 
						||
  @param  Handle                  Pointer to a EFI_HII_HANDLE
 | 
						||
 | 
						||
  @retval TRUE                    Valid
 | 
						||
  @retval FALSE                   Invalid
 | 
						||
 | 
						||
**/
 | 
						||
BOOLEAN
 | 
						||
IsHiiHandleValid (
 | 
						||
  EFI_HII_HANDLE Handle
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function checks whether EFI_FONT_INFO exists in current database. If
 | 
						||
  FontInfoMask is specified, check what options can be used to make a match.
 | 
						||
  Note that the masks relate to where the system default should be supplied
 | 
						||
  are ignored by this function.
 | 
						||
 | 
						||
  @param  Private                 Hii database private structure.
 | 
						||
  @param  FontInfo                Points to EFI_FONT_INFO structure.
 | 
						||
  @param  FontInfoMask            If not NULL, describes what options can be used
 | 
						||
                                  to make a match between the font requested and
 | 
						||
                                  the font available. The caller must guarantee
 | 
						||
                                  this mask is valid.
 | 
						||
  @param  FontHandle              On entry, Points to the font handle returned by a
 | 
						||
                                  previous  call to GetFontInfo() or NULL to start
 | 
						||
                                  with the first font.
 | 
						||
  @param  GlobalFontInfo          If not NULL, output the corresponding globa font
 | 
						||
                                  info.
 | 
						||
 | 
						||
  @retval TRUE                    Existed
 | 
						||
  @retval FALSE                   Not existed
 | 
						||
 | 
						||
**/
 | 
						||
BOOLEAN
 | 
						||
IsFontInfoExisted (
 | 
						||
  IN  HII_DATABASE_PRIVATE_DATA *Private,
 | 
						||
  IN  EFI_FONT_INFO             *FontInfo,
 | 
						||
  IN  EFI_FONT_INFO_MASK        *FontInfoMask,   OPTIONAL
 | 
						||
  IN  EFI_FONT_HANDLE           FontHandle,      OPTIONAL
 | 
						||
  OUT HII_GLOBAL_FONT_INFO      **GlobalFontInfo OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Retrieve system default font and color.
 | 
						||
 | 
						||
  @param  Private                 HII database driver private data.
 | 
						||
  @param  FontInfo                Points to system default font output-related
 | 
						||
                                  information. It's caller's responsibility to free
 | 
						||
                                  this buffer.
 | 
						||
  @param  FontInfoSize            If not NULL, output the size of buffer FontInfo.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             Cell information is added to the GlyphInfoList.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    The system is out of resources to accomplish the
 | 
						||
                                  task.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Any input parameter is invalid.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
GetSystemFont (
 | 
						||
  IN  HII_DATABASE_PRIVATE_DATA      *Private,
 | 
						||
  OUT EFI_FONT_DISPLAY_INFO          **FontInfo,
 | 
						||
  OUT UINTN                          *FontInfoSize OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Parse all string blocks to find a String block specified by StringId.
 | 
						||
  If StringId = (EFI_STRING_ID) (-1), find out all EFI_HII_SIBT_FONT blocks
 | 
						||
  within this string package and backup its information.
 | 
						||
  If StringId = 0, output the string id of last string block (EFI_HII_SIBT_END).
 | 
						||
 | 
						||
  @param  Private                 Hii database private structure.
 | 
						||
  @param  StringPackage           Hii string package instance.
 | 
						||
  @param  StringId                The string<6E><67>s id, which is unique within
 | 
						||
                                  PackageList.
 | 
						||
  @param  BlockType               Output the block type of found string block.
 | 
						||
  @param  StringBlockAddr         Output the block address of found string block.
 | 
						||
  @param  StringTextOffset        Offset, relative to the found block address, of
 | 
						||
                                  the  string text information.
 | 
						||
  @param  LastStringId            Output the last string id when StringId = 0.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The string text and font is retrieved
 | 
						||
                                  successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The specified text or font info can not be found
 | 
						||
                                  out.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    The system is out of resources to accomplish the
 | 
						||
                                  task.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
FindStringBlock (
 | 
						||
  IN HII_DATABASE_PRIVATE_DATA        *Private,
 | 
						||
  IN  HII_STRING_PACKAGE_INSTANCE     *StringPackage,
 | 
						||
  IN  EFI_STRING_ID                   StringId,
 | 
						||
  OUT UINT8                           *BlockType, OPTIONAL
 | 
						||
  OUT UINT8                           **StringBlockAddr, OPTIONAL
 | 
						||
  OUT UINTN                           *StringTextOffset, OPTIONAL
 | 
						||
  OUT EFI_STRING_ID                   *LastStringId OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Parse all glyph blocks to find a glyph block specified by CharValue.
 | 
						||
  If CharValue = (CHAR16) (-1), collect all default character cell information
 | 
						||
  within this font package and backup its information.
 | 
						||
 | 
						||
  @param  FontPackage             Hii string package instance.
 | 
						||
  @param  CharValue               Unicode character value, which identifies a glyph
 | 
						||
                                  block.
 | 
						||
  @param  GlyphBuffer             Output the corresponding bitmap data of the found
 | 
						||
                                  block. It is the caller's responsiblity to free
 | 
						||
                                  this buffer.
 | 
						||
  @param  Cell                    Output cell information of the encoded bitmap.
 | 
						||
  @param  GlyphBufferLen          If not NULL, output the length of GlyphBuffer.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The bitmap data is retrieved successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The specified CharValue does not exist in current
 | 
						||
                                  database.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    The system is out of resources to accomplish the
 | 
						||
                                  task.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
FindGlyphBlock (
 | 
						||
  IN  HII_FONT_PACKAGE_INSTANCE      *FontPackage,
 | 
						||
  IN  CHAR16                         CharValue,
 | 
						||
  OUT UINT8                          **GlyphBuffer, OPTIONAL
 | 
						||
  OUT EFI_HII_GLYPH_INFO             *Cell, OPTIONAL
 | 
						||
  OUT UINTN                          *GlyphBufferLen OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
//
 | 
						||
// EFI_HII_FONT_PROTOCOL protocol interfaces
 | 
						||
//
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Renders a string to a bitmap or to the display.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_FONT_PROTOCOL instance.
 | 
						||
  @param  Flags                   Describes how the string is to be drawn.
 | 
						||
  @param  String                  Points to the null-terminated string to be
 | 
						||
                                  displayed.
 | 
						||
  @param  StringInfo              Points to the string output information,
 | 
						||
                                  including the color and font.  If NULL, then the
 | 
						||
                                  string will be output in the default system font
 | 
						||
                                  and color.
 | 
						||
  @param  Blt                     If this points to a non-NULL on entry, this
 | 
						||
                                  points to the image, which is Width pixels   wide
 | 
						||
                                  and Height pixels high. The string will be drawn
 | 
						||
                                  onto this image and
 | 
						||
                                  EFI_HII_OUT_FLAG_CLIP is implied. If this points
 | 
						||
                                  to a NULL on entry, then a              buffer
 | 
						||
                                  will be allocated to hold the generated image and
 | 
						||
                                  the pointer updated on exit. It is the caller<65><72>s
 | 
						||
                                  responsibility to free this buffer.
 | 
						||
  @param  BltX,BLTY               Specifies the offset from the left and top edge
 | 
						||
                                  of the image of the first character cell in the
 | 
						||
                                  image.
 | 
						||
  @param  RowInfoArray            If this is non-NULL on entry, then on exit, this
 | 
						||
                                  will point to an allocated buffer    containing
 | 
						||
                                  row information and RowInfoArraySize will be
 | 
						||
                                  updated to contain the        number of elements.
 | 
						||
                                  This array describes the characters which were at
 | 
						||
                                  least partially drawn and the heights of the
 | 
						||
                                  rows. It is the caller<65><72>s responsibility to free
 | 
						||
                                  this buffer.
 | 
						||
  @param  RowInfoArraySize        If this is non-NULL on entry, then on exit it
 | 
						||
                                  contains the number of elements in RowInfoArray.
 | 
						||
  @param  ColumnInfoArray         If this is non-NULL, then on return it will be
 | 
						||
                                  filled with the horizontal offset for each
 | 
						||
                                  character in the string on the row where it is
 | 
						||
                                  displayed. Non-printing characters will     have
 | 
						||
                                  the offset ~0. The caller is responsible to
 | 
						||
                                  allocate a buffer large enough so that    there
 | 
						||
                                  is one entry for each character in the string,
 | 
						||
                                  not including the null-terminator. It is possible
 | 
						||
                                  when character display is normalized that some
 | 
						||
                                  character cells overlap.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The string was successfully rendered.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate an output buffer for
 | 
						||
                                  RowInfoArray or Blt.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The String was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiStringToImage (
 | 
						||
  IN  CONST EFI_HII_FONT_PROTOCOL    *This,
 | 
						||
  IN  EFI_HII_OUT_FLAGS              Flags,
 | 
						||
  IN  CONST EFI_STRING               String,
 | 
						||
  IN  CONST EFI_FONT_DISPLAY_INFO    *StringInfo       OPTIONAL,
 | 
						||
  IN  OUT EFI_IMAGE_OUTPUT           **Blt,
 | 
						||
  IN  UINTN                          BltX,
 | 
						||
  IN  UINTN                          BltY,
 | 
						||
  OUT EFI_HII_ROW_INFO               **RowInfoArray    OPTIONAL,
 | 
						||
  OUT UINTN                          *RowInfoArraySize OPTIONAL,
 | 
						||
  OUT UINTN                          *ColumnInfoArray  OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Render a string to a bitmap or the screen containing the contents of the specified string.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_FONT_PROTOCOL instance.
 | 
						||
  @param  Flags                   Describes how the string is to be drawn.
 | 
						||
  @param  PackageList             The package list in the HII database to search
 | 
						||
                                  for the specified string.
 | 
						||
  @param  StringId                The string<6E><67>s id, which is unique within
 | 
						||
                                  PackageList.
 | 
						||
  @param  Language                Points to the language for the retrieved string.
 | 
						||
                                  If NULL, then the current system language is
 | 
						||
                                  used.
 | 
						||
  @param  StringInfo              Points to the string output information,
 | 
						||
                                  including the color and font.  If NULL, then the
 | 
						||
                                  string will be output in the default system font
 | 
						||
                                  and color.
 | 
						||
  @param  Blt                     If this points to a non-NULL on entry, this
 | 
						||
                                  points to the image, which is Width pixels   wide
 | 
						||
                                  and Height pixels high. The string will be drawn
 | 
						||
                                  onto this image and
 | 
						||
                                  EFI_HII_OUT_FLAG_CLIP is implied. If this points
 | 
						||
                                  to a NULL on entry, then a              buffer
 | 
						||
                                  will be allocated to hold the generated image and
 | 
						||
                                  the pointer updated on exit. It is the caller<65><72>s
 | 
						||
                                  responsibility to free this buffer.
 | 
						||
  @param  BltX,BLTY               Specifies the offset from the left and top edge
 | 
						||
                                  of the image of the first character cell in the
 | 
						||
                                  image.
 | 
						||
  @param  RowInfoArray            If this is non-NULL on entry, then on exit, this
 | 
						||
                                  will point to an allocated buffer    containing
 | 
						||
                                  row information and RowInfoArraySize will be
 | 
						||
                                  updated to contain the        number of elements.
 | 
						||
                                  This array describes the characters which were at
 | 
						||
                                  least partially drawn and the heights of the
 | 
						||
                                  rows. It is the caller<65><72>s responsibility to free
 | 
						||
                                  this buffer.
 | 
						||
  @param  RowInfoArraySize        If this is non-NULL on entry, then on exit it
 | 
						||
                                  contains the number of elements in RowInfoArray.
 | 
						||
  @param  ColumnInfoArray         If this is non-NULL, then on return it will be
 | 
						||
                                  filled with the horizontal offset for each
 | 
						||
                                  character in the string on the row where it is
 | 
						||
                                  displayed. Non-printing characters will     have
 | 
						||
                                  the offset ~0. The caller is responsible to
 | 
						||
                                  allocate a buffer large enough so that    there
 | 
						||
                                  is one entry for each character in the string,
 | 
						||
                                  not including the null-terminator. It is possible
 | 
						||
                                  when character display is normalized that some
 | 
						||
                                  character cells overlap.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The string was successfully rendered.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate an output buffer for
 | 
						||
                                  RowInfoArray or Blt.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The String was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiStringIdToImage (
 | 
						||
  IN  CONST EFI_HII_FONT_PROTOCOL    *This,
 | 
						||
  IN  EFI_HII_OUT_FLAGS              Flags,
 | 
						||
  IN  EFI_HII_HANDLE                 PackageList,
 | 
						||
  IN  EFI_STRING_ID                  StringId,
 | 
						||
  IN  CONST CHAR8*                   Language,
 | 
						||
  IN  CONST EFI_FONT_DISPLAY_INFO    *StringInfo       OPTIONAL,
 | 
						||
  IN  OUT EFI_IMAGE_OUTPUT           **Blt,
 | 
						||
  IN  UINTN                          BltX,
 | 
						||
  IN  UINTN                          BltY,
 | 
						||
  OUT EFI_HII_ROW_INFO               **RowInfoArray    OPTIONAL,
 | 
						||
  OUT UINTN                          *RowInfoArraySize OPTIONAL,
 | 
						||
  OUT UINTN                          *ColumnInfoArray  OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Convert the glyph for a single character into a bitmap.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_FONT_PROTOCOL instance.
 | 
						||
  @param  Char                    Character to retrieve.
 | 
						||
  @param  StringInfo              Points to the string font and color information
 | 
						||
                                  or NULL if the string should use the default
 | 
						||
                                  system font and color.
 | 
						||
  @param  Blt                     Thus must point to a NULL on entry. A buffer will
 | 
						||
                                  be allocated to hold the output and the pointer
 | 
						||
                                  updated on exit. It is the caller<65><72>s
 | 
						||
                                  responsibility to free this buffer.
 | 
						||
  @param  Baseline                Number of pixels from the bottom of the bitmap to
 | 
						||
                                  the baseline.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             Glyph bitmap created.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate the output buffer Blt.
 | 
						||
  @retval EFI_WARN_UNKNOWN_GLYPH  The glyph was unknown and was replaced with the
 | 
						||
                                  glyph for Unicode character 0xFFFD.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Blt is NULL or *Blt is not NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetGlyph (
 | 
						||
  IN  CONST EFI_HII_FONT_PROTOCOL    *This,
 | 
						||
  IN  CHAR16                         Char,
 | 
						||
  IN  CONST EFI_FONT_DISPLAY_INFO    *StringInfo,
 | 
						||
  OUT EFI_IMAGE_OUTPUT               **Blt,
 | 
						||
  OUT UINTN                          *Baseline OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function iterates through fonts which match the specified font, using
 | 
						||
  the specified criteria. If String is non-NULL, then all of the characters in
 | 
						||
  the string must exist in order for a candidate font to be returned.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_FONT_PROTOCOL instance.
 | 
						||
  @param  FontHandle              On entry, points to the font handle returned by a
 | 
						||
                                   previous call to GetFontInfo() or NULL to start
 | 
						||
                                  with the  first font. On return, points to the
 | 
						||
                                  returned font handle or points to NULL if there
 | 
						||
                                  are no more matching fonts.
 | 
						||
  @param  StringInfoIn            Upon entry, points to the font to return
 | 
						||
                                  information about.
 | 
						||
  @param  StringInfoOut           Upon return, contains the matching font<6E><74>s
 | 
						||
                                  information.  If NULL, then no information is
 | 
						||
                                  returned. It's caller's responsibility to free
 | 
						||
                                  this buffer.
 | 
						||
  @param  String                  Points to the string which will be tested to
 | 
						||
                                  determine  if all characters are available. If
 | 
						||
                                  NULL, then any font  is acceptable.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             Matching font returned successfully.
 | 
						||
  @retval EFI_NOT_FOUND           No matching font was found.
 | 
						||
  @retval EFI_INVALID_PARAMETER   StringInfoIn is NULL.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    There were insufficient resources to complete the
 | 
						||
                                  request.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetFontInfo (
 | 
						||
  IN  CONST EFI_HII_FONT_PROTOCOL    *This,
 | 
						||
  IN  OUT   EFI_FONT_HANDLE          *FontHandle,
 | 
						||
  IN  CONST EFI_FONT_DISPLAY_INFO    *StringInfoIn,
 | 
						||
  OUT       EFI_FONT_DISPLAY_INFO    **StringInfoOut,
 | 
						||
  IN  CONST EFI_STRING               String OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
//
 | 
						||
// EFI_HII_IMAGE_PROTOCOL interfaces
 | 
						||
//
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function adds the image Image to the group of images owned by PackageList, and returns
 | 
						||
  a new image identifier (ImageId).
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
 | 
						||
  @param  PackageList             Handle of the package list where this image will
 | 
						||
                                  be added.
 | 
						||
  @param  ImageId                 On return, contains the new image id, which is
 | 
						||
                                  unique within PackageList.
 | 
						||
  @param  Image                   Points to the image.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The new image was added successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The specified PackageList could not be found in
 | 
						||
                                  database.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Could not add the image due to lack of resources.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Image is NULL or ImageId is NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiNewImage (
 | 
						||
  IN  CONST EFI_HII_IMAGE_PROTOCOL   *This,
 | 
						||
  IN  EFI_HII_HANDLE                 PackageList,
 | 
						||
  OUT EFI_IMAGE_ID                   *ImageId,
 | 
						||
  IN  CONST EFI_IMAGE_INPUT          *Image
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function retrieves the image specified by ImageId which is associated with
 | 
						||
  the specified PackageList and copies it into the buffer specified by Image.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
 | 
						||
  @param  PackageList             Handle of the package list where this image will
 | 
						||
                                  be searched.
 | 
						||
  @param  ImageId                 The image<67><65>s id,, which is unique within
 | 
						||
                                  PackageList.
 | 
						||
  @param  Image                   Points to the image.
 | 
						||
  @param  ImageSize               On entry, points to the size of the buffer
 | 
						||
                                  pointed to by Image, in bytes. On return, points
 | 
						||
                                  to the length of the image, in bytes.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The new image was returned successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The image specified by ImageId is not available.
 | 
						||
  @retval EFI_BUFFER_TOO_SMALL    The buffer specified by ImageSize is too small to
 | 
						||
                                  hold the image.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The Image or ImageSize was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetImage (
 | 
						||
  IN  CONST EFI_HII_IMAGE_PROTOCOL   *This,
 | 
						||
  IN  EFI_HII_HANDLE                 PackageList,
 | 
						||
  IN  EFI_IMAGE_ID                   ImageId,
 | 
						||
  OUT EFI_IMAGE_INPUT                *Image,
 | 
						||
  OUT UINTN                          *ImageSize
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function updates the image specified by ImageId in the specified PackageListHandle to
 | 
						||
  the image specified by Image.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
 | 
						||
  @param  PackageList             The package list containing the images.
 | 
						||
  @param  ImageId                 The image<67><65>s id,, which is unique within
 | 
						||
                                  PackageList.
 | 
						||
  @param  Image                   Points to the image.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The new image was updated successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The image specified by ImageId is not in the
 | 
						||
                                  database.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The Image was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiSetImage (
 | 
						||
  IN CONST EFI_HII_IMAGE_PROTOCOL    *This,
 | 
						||
  IN EFI_HII_HANDLE                  PackageList,
 | 
						||
  IN EFI_IMAGE_ID                    ImageId,
 | 
						||
  IN CONST EFI_IMAGE_INPUT           *Image
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function renders an image to a bitmap or the screen using the specified
 | 
						||
  color and options. It draws the image on an existing bitmap, allocates a new
 | 
						||
  bitmap or uses the screen. The images can be clipped.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
 | 
						||
  @param  Flags                   Describes how the image is to be drawn.
 | 
						||
  @param  Image                   Points to the image to be displayed.
 | 
						||
  @param  Blt                     If this points to a non-NULL on entry, this
 | 
						||
                                  points to the image, which is Width pixels wide
 | 
						||
                                  and Height pixels high.  The image will be drawn
 | 
						||
                                  onto this image and  EFI_HII_DRAW_FLAG_CLIP is
 | 
						||
                                  implied. If this points to a  NULL on entry, then
 | 
						||
                                  a buffer will be allocated to hold  the generated
 | 
						||
                                  image and the pointer updated on exit. It is the
 | 
						||
                                  caller<65><72>s responsibility to free this buffer.
 | 
						||
  @param  BltY                    Specifies the offset from the left and top edge
 | 
						||
                                  of the  output image of the first pixel in the
 | 
						||
                                  image.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The image was successfully drawn.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate an output buffer for Blt.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The Image or Blt was NULL.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Any combination of Flags is invalid.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiDrawImage (
 | 
						||
  IN CONST EFI_HII_IMAGE_PROTOCOL    *This,
 | 
						||
  IN EFI_HII_DRAW_FLAGS              Flags,
 | 
						||
  IN CONST EFI_IMAGE_INPUT           *Image,
 | 
						||
  IN OUT EFI_IMAGE_OUTPUT            **Blt,
 | 
						||
  IN UINTN                           BltX,
 | 
						||
  IN UINTN                           BltY
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function renders an image to a bitmap or the screen using the specified
 | 
						||
  color and options. It draws the image on an existing bitmap, allocates a new
 | 
						||
  bitmap or uses the screen. The images can be clipped.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
 | 
						||
  @param  Flags                   Describes how the image is to be drawn.
 | 
						||
  @param  PackageList             The package list in the HII database to search
 | 
						||
                                  for the  specified image.
 | 
						||
  @param  ImageId                 The image's id, which is unique within
 | 
						||
                                  PackageList.
 | 
						||
  @param  Blt                     If this points to a non-NULL on entry, this
 | 
						||
                                  points to the image, which is Width pixels wide
 | 
						||
                                  and Height pixels high. The image will be drawn
 | 
						||
                                  onto this image and
 | 
						||
                                  EFI_HII_DRAW_FLAG_CLIP is implied. If this points
 | 
						||
                                  to a  NULL on entry, then a buffer will be
 | 
						||
                                  allocated to hold  the generated image and the
 | 
						||
                                  pointer updated on exit. It is the caller<65><72>s
 | 
						||
                                  responsibility to free this buffer.
 | 
						||
  @param  BltY                    Specifies the offset from the left and top edge
 | 
						||
                                  of the  output image of the first pixel in the
 | 
						||
                                  image.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The image was successfully drawn.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate an output buffer for Blt.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The Image was NULL.
 | 
						||
  @retval EFI_NOT_FOUND           The specified packagelist could not be found in
 | 
						||
                                  current database.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiDrawImageId (
 | 
						||
  IN CONST EFI_HII_IMAGE_PROTOCOL    *This,
 | 
						||
  IN EFI_HII_DRAW_FLAGS              Flags,
 | 
						||
  IN EFI_HII_HANDLE                  PackageList,
 | 
						||
  IN EFI_IMAGE_ID                    ImageId,
 | 
						||
  IN OUT EFI_IMAGE_OUTPUT            **Blt,
 | 
						||
  IN UINTN                           BltX,
 | 
						||
  IN UINTN                           BltY
 | 
						||
  )
 | 
						||
 | 
						||
;
 | 
						||
 | 
						||
//
 | 
						||
// EFI_HII_STRING_PROTOCOL
 | 
						||
//
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function adds the string String to the group of strings owned by PackageList, with the
 | 
						||
  specified font information StringFontInfo and returns a new string id.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_STRING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageList             Handle of the package list where this string will
 | 
						||
                                  be added.
 | 
						||
  @param  StringId                On return, contains the new strings id, which is
 | 
						||
                                  unique within PackageList.
 | 
						||
  @param  Language                Points to the language for the new string.
 | 
						||
  @param  LanguageName            Points to the printable language name to
 | 
						||
                                  associate with the passed in  Language field.If
 | 
						||
                                  LanguageName is not NULL and the string package
 | 
						||
                                  header's LanguageName  associated with a given
 | 
						||
                                  Language is not zero, the LanguageName being
 | 
						||
                                  passed  in will be ignored.
 | 
						||
  @param  String                  Points to the new null-terminated string.
 | 
						||
  @param  StringFontInfo          Points to the new string<6E><67>s font information or
 | 
						||
                                  NULL if the string should have the default system
 | 
						||
                                  font, size and style.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The new string was added successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The specified PackageList could not be found in
 | 
						||
                                  database.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Could not add the string due to lack of
 | 
						||
                                  resources.
 | 
						||
  @retval EFI_INVALID_PARAMETER   String is NULL or StringId is NULL or Language is
 | 
						||
                                  NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiNewString (
 | 
						||
  IN  CONST EFI_HII_STRING_PROTOCOL   *This,
 | 
						||
  IN  EFI_HII_HANDLE                  PackageList,
 | 
						||
  OUT EFI_STRING_ID                   *StringId,
 | 
						||
  IN  CONST CHAR8                     *Language,
 | 
						||
  IN  CONST CHAR16                    *LanguageName, OPTIONAL
 | 
						||
  IN  CONST EFI_STRING                String,
 | 
						||
  IN  CONST EFI_FONT_INFO             *StringFontInfo OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function retrieves the string specified by StringId which is associated
 | 
						||
  with the specified PackageList in the language Language and copies it into
 | 
						||
  the buffer specified by String.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_STRING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Language                Points to the language for the retrieved string.
 | 
						||
  @param  PackageList             The package list in the HII database to search
 | 
						||
                                  for the  specified string.
 | 
						||
  @param  StringId                The string's id, which is unique within
 | 
						||
                                  PackageList.
 | 
						||
  @param  String                  Points to the new null-terminated string.
 | 
						||
  @param  StringSize              On entry, points to the size of the buffer
 | 
						||
                                  pointed to by  String, in bytes. On return,
 | 
						||
                                  points to the length of the string, in bytes.
 | 
						||
  @param  StringFontInfo          If not NULL, points to the string<6E><67>s font
 | 
						||
                                  information.  It's caller's responsibility to
 | 
						||
                                  free this buffer.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The string was returned successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The string specified by StringId is not
 | 
						||
                                  available.
 | 
						||
  @retval EFI_NOT_FOUND           The string specified by StringId is available but
 | 
						||
                                  not in the specified language.
 | 
						||
  @retval EFI_BUFFER_TOO_SMALL    The buffer specified by StringSize is too small
 | 
						||
                                  to  hold the string.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The String or Language or StringSize was NULL.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    There were insufficient resources to complete the
 | 
						||
                                   request.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetString (
 | 
						||
  IN  CONST EFI_HII_STRING_PROTOCOL   *This,
 | 
						||
  IN  CONST CHAR8                     *Language,
 | 
						||
  IN  EFI_HII_HANDLE                  PackageList,
 | 
						||
  IN  EFI_STRING_ID                   StringId,
 | 
						||
  OUT EFI_STRING                      String,
 | 
						||
  IN  OUT UINTN                       *StringSize,
 | 
						||
  OUT EFI_FONT_INFO                   **StringFontInfo OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function updates the string specified by StringId in the specified PackageList to the text
 | 
						||
  specified by String and, optionally, the font information specified by StringFontInfo.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_STRING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageList             The package list containing the strings.
 | 
						||
  @param  StringId                The string<6E><67>s id, which is unique within
 | 
						||
                                  PackageList.
 | 
						||
  @param  Language                Points to the language for the updated string.
 | 
						||
  @param  String                  Points to the new null-terminated string.
 | 
						||
  @param  StringFontInfo          Points to the string<6E><67>s font information or NULL
 | 
						||
                                  if the string font information is not changed.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The string was updated successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The string specified by StringId is not in the
 | 
						||
                                  database.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The String or Language was NULL.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    The system is out of resources to accomplish the
 | 
						||
                                  task.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiSetString (
 | 
						||
  IN CONST EFI_HII_STRING_PROTOCOL    *This,
 | 
						||
  IN EFI_HII_HANDLE                   PackageList,
 | 
						||
  IN EFI_STRING_ID                    StringId,
 | 
						||
  IN CONST CHAR8                      *Language,
 | 
						||
  IN CONST EFI_STRING                 String,
 | 
						||
  IN CONST EFI_FONT_INFO              *StringFontInfo OPTIONAL
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function returns the list of supported languages, in the format specified
 | 
						||
  in Appendix M of UEFI 2.1 spec.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_STRING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageList             The package list to examine.
 | 
						||
  @param  Languages               Points to the buffer to hold the returned string.
 | 
						||
  @param  LanguagesSize           On entry, points to the size of the buffer
 | 
						||
                                  pointed to by  Languages, in bytes. On  return,
 | 
						||
                                  points to the length of Languages, in bytes.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The languages were returned successfully.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The Languages or LanguagesSize was NULL.
 | 
						||
  @retval EFI_BUFFER_TOO_SMALL    The LanguagesSize is too small to hold the list
 | 
						||
                                  of  supported languages. LanguageSize is updated
 | 
						||
                                  to contain the required size.
 | 
						||
  @retval EFI_NOT_FOUND           Could not find string package in specified
 | 
						||
                                  packagelist.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetLanguages (
 | 
						||
  IN CONST EFI_HII_STRING_PROTOCOL    *This,
 | 
						||
  IN EFI_HII_HANDLE                   PackageList,
 | 
						||
  IN OUT CHAR8                        *Languages,
 | 
						||
  IN OUT UINTN                        *LanguagesSize
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Each string package has associated with it a single primary language and zero
 | 
						||
  or more secondary languages. This routine returns the secondary languages
 | 
						||
  associated with a package list.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_STRING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageList             The package list to examine.
 | 
						||
  @param  FirstLanguage           Points to the primary language.
 | 
						||
  @param  SecondaryLanguages      Points to the buffer to hold the returned list of
 | 
						||
                                   secondary languages for the specified
 | 
						||
                                  FirstLanguage. If there are no secondary
 | 
						||
                                  languages, the function  returns successfully,
 | 
						||
                                  but this is set to NULL.
 | 
						||
  @param  SecondaryLanguageSize   On entry, points to the size of the buffer
 | 
						||
                                  pointed to  by SecondLanguages, in bytes. On
 | 
						||
                                  return, points to the length of SecondLanguages
 | 
						||
                                  in bytes.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             Secondary languages were correctly returned.
 | 
						||
  @retval EFI_INVALID_PARAMETER   FirstLanguage or SecondLanguages or
 | 
						||
                                  SecondLanguagesSize was NULL.
 | 
						||
  @retval EFI_BUFFER_TOO_SMALL    The buffer specified by SecondLanguagesSize is
 | 
						||
                                  too small to hold the returned information.
 | 
						||
                                  SecondLanguageSize is updated to hold the size of
 | 
						||
                                  the buffer required.
 | 
						||
  @retval EFI_NOT_FOUND           The language specified by FirstLanguage is not
 | 
						||
                                  present in the specified package list.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetSecondaryLanguages (
 | 
						||
  IN CONST EFI_HII_STRING_PROTOCOL   *This,
 | 
						||
  IN EFI_HII_HANDLE                  PackageList,
 | 
						||
  IN CONST CHAR8                     *FirstLanguage,
 | 
						||
  IN OUT CHAR8                       *SecondLanguages,
 | 
						||
  IN OUT UINTN                       *SecondLanguagesSize
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
//
 | 
						||
// EFI_HII_DATABASE_PROTOCOL protocol interfaces
 | 
						||
//
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function adds the packages in the package list to the database and returns a handle. If there is a
 | 
						||
  EFI_DEVICE_PATH_PROTOCOL associated with the DriverHandle, then this function will
 | 
						||
  create a package of type EFI_PACKAGE_TYPE_DEVICE_PATH and add it to the package list.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageList             A pointer to an EFI_HII_PACKAGE_LIST_HEADER
 | 
						||
                                  structure.
 | 
						||
  @param  DriverHandle            Associate the package list with this EFI handle.
 | 
						||
  @param  Handle                  A pointer to the EFI_HII_HANDLE instance.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The package list associated with the Handle was
 | 
						||
                                  added to the HII database.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate necessary resources for the
 | 
						||
                                  new database contents.
 | 
						||
  @retval EFI_INVALID_PARAMETER   PackageList is NULL or Handle is NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiNewPackageList (
 | 
						||
  IN CONST EFI_HII_DATABASE_PROTOCOL    *This,
 | 
						||
  IN CONST EFI_HII_PACKAGE_LIST_HEADER  *PackageList,
 | 
						||
  IN CONST EFI_HANDLE                   DriverHandle,
 | 
						||
  OUT EFI_HII_HANDLE                    *Handle
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function removes the package list that is associated with a handle Handle
 | 
						||
  from the HII database. Before removing the package, any registered functions
 | 
						||
  with the notification type REMOVE_PACK and the same package type will be called.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Handle                  The handle that was registered to the data that
 | 
						||
                                  is requested  for removal.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The data associated with the Handle was removed
 | 
						||
                                  from  the HII database.
 | 
						||
  @retval EFI_NOT_FOUND           The specified PackageList could not be found in
 | 
						||
                                  database.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The Handle was not valid.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiRemovePackageList (
 | 
						||
  IN CONST EFI_HII_DATABASE_PROTOCOL    *This,
 | 
						||
  IN EFI_HII_HANDLE                     Handle
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function updates the existing package list (which has the specified Handle)
 | 
						||
  in the HII databases, using the new package list specified by PackageList.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Handle                  The handle that was registered to the data that
 | 
						||
                                  is  requested to be updated.
 | 
						||
  @param  PackageList             A pointer to an EFI_HII_PACKAGE_LIST_HEADER
 | 
						||
                                  package.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The HII database was successfully updated.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate enough memory for the updated
 | 
						||
                                  database.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Handle or PackageList was NULL.
 | 
						||
  @retval EFI_NOT_FOUND           The Handle was not valid or could not be found in
 | 
						||
                                  database.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiUpdatePackageList (
 | 
						||
  IN CONST EFI_HII_DATABASE_PROTOCOL    *This,
 | 
						||
  IN EFI_HII_HANDLE                     Handle,
 | 
						||
  IN CONST EFI_HII_PACKAGE_LIST_HEADER  *PackageList
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function returns a list of the package handles of the specified type
 | 
						||
  that are currently active in the database. The pseudo-type
 | 
						||
  EFI_HII_PACKAGE_TYPE_ALL will cause all package handles to be listed.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageType             Specifies the package type of the packages to
 | 
						||
                                  list or EFI_HII_PACKAGE_TYPE_ALL for all packages
 | 
						||
                                  to be listed.
 | 
						||
  @param  PackageGuid             If PackageType is EFI_HII_PACKAGE_TYPE_GUID, then
 | 
						||
                                  this  is the pointer to the GUID which must match
 | 
						||
                                  the Guid field of EFI_HII_GUID_PACKAGE_GUID_HDR.
 | 
						||
                                  Otherwise,  it must be NULL.
 | 
						||
  @param  HandleBufferLength      On input, a pointer to the length of the handle
 | 
						||
                                  buffer.  On output, the length of the handle
 | 
						||
                                  buffer that is required for the handles found.
 | 
						||
  @param  Handle                  An array of EFI_HII_HANDLE instances returned.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The matching handles are outputed successfully.
 | 
						||
  @retval EFI_BUFFER_TO_SMALL     The HandleBufferLength parameter indicates that
 | 
						||
                                  Handle is too small to support the number of
 | 
						||
                                  handles. HandleBufferLength is updated with a
 | 
						||
                                  value that will  enable the data to fit.
 | 
						||
  @retval EFI_NOT_FOUND           No matching handle could not be found in
 | 
						||
                                  database.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Handle or HandleBufferLength was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiListPackageLists (
 | 
						||
  IN  CONST EFI_HII_DATABASE_PROTOCOL   *This,
 | 
						||
  IN  UINT8                             PackageType,
 | 
						||
  IN  CONST EFI_GUID                    *PackageGuid,
 | 
						||
  IN  OUT UINTN                         *HandleBufferLength,
 | 
						||
  OUT EFI_HII_HANDLE                    *Handle
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function will export one or all package lists in the database to a buffer.
 | 
						||
  For each package list exported, this function will call functions registered
 | 
						||
  with EXPORT_PACK and then copy the package list to the buffer.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Handle                  An EFI_HII_HANDLE that corresponds to the desired
 | 
						||
                                  package list in the HII database to export or
 | 
						||
                                  NULL to indicate  all package lists should be
 | 
						||
                                  exported.
 | 
						||
  @param  BufferSize              On input, a pointer to the length of the buffer.
 | 
						||
                                  On output, the length of the buffer that is
 | 
						||
                                  required for the exported data.
 | 
						||
  @param  Buffer                  A pointer to a buffer that will contain the
 | 
						||
                                  results of  the export function.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             Package exported.
 | 
						||
  @retval EFI_BUFFER_TO_SMALL     The HandleBufferLength parameter indicates that
 | 
						||
                                  Handle is too small to support the number of
 | 
						||
                                  handles.      HandleBufferLength is updated with
 | 
						||
                                  a value that will enable the data to fit.
 | 
						||
  @retval EFI_NOT_FOUND           The specifiecd Handle could not be found in the
 | 
						||
                                  current database.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Handle or Buffer or BufferSize was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiExportPackageLists (
 | 
						||
  IN  CONST EFI_HII_DATABASE_PROTOCOL   *This,
 | 
						||
  IN  EFI_HII_HANDLE                    Handle,
 | 
						||
  IN  OUT UINTN                         *BufferSize,
 | 
						||
  OUT EFI_HII_PACKAGE_LIST_HEADER       *Buffer
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function registers a function which will be called when specified actions related to packages of
 | 
						||
  the specified type occur in the HII database. By registering a function, other HII-related drivers are
 | 
						||
  notified when specific package types are added, removed or updated in the HII database.
 | 
						||
  Each driver or application which registers a notification should use
 | 
						||
  EFI_HII_DATABASE_PROTOCOL.UnregisterPackageNotify() before exiting.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageType             Specifies the package type of the packages to
 | 
						||
                                  list or EFI_HII_PACKAGE_TYPE_ALL for all packages
 | 
						||
                                  to be listed.
 | 
						||
  @param  PackageGuid             If PackageType is EFI_HII_PACKAGE_TYPE_GUID, then
 | 
						||
                                  this is the pointer to the GUID which must match
 | 
						||
                                  the Guid field of
 | 
						||
                                  EFI_HII_GUID_PACKAGE_GUID_HDR. Otherwise, it must
 | 
						||
                                  be NULL.
 | 
						||
  @param  PackageNotifyFn         Points to the function to be called when the
 | 
						||
                                  event specified by
 | 
						||
                                  NotificationType occurs.
 | 
						||
  @param  NotifyType              Describes the types of notification which this
 | 
						||
                                  function will be receiving.
 | 
						||
  @param  NotifyHandle            Points to the unique handle assigned to the
 | 
						||
                                  registered notification. Can be used in
 | 
						||
                                  EFI_HII_DATABASE_PROTOCOL.UnregisterPackageNotify()
 | 
						||
                                  to stop notifications.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             Notification registered successfully.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Unable to allocate necessary data structures
 | 
						||
  @retval EFI_INVALID_PARAMETER   NotifyHandle is NULL.
 | 
						||
  @retval EFI_INVALID_PARAMETER   PackageGuid is not NULL when PackageType is not
 | 
						||
                                  EFI_HII_PACKAGE_TYPE_GUID.
 | 
						||
  @retval EFI_INVALID_PARAMETER   PackageGuid is NULL when PackageType is
 | 
						||
                                  EFI_HII_PACKAGE_TYPE_GUID.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiRegisterPackageNotify (
 | 
						||
  IN  CONST EFI_HII_DATABASE_PROTOCOL   *This,
 | 
						||
  IN  UINT8                             PackageType,
 | 
						||
  IN  CONST EFI_GUID                    *PackageGuid,
 | 
						||
  IN  CONST EFI_HII_DATABASE_NOTIFY     PackageNotifyFn,
 | 
						||
  IN  EFI_HII_DATABASE_NOTIFY_TYPE      NotifyType,
 | 
						||
  OUT EFI_HANDLE                        *NotifyHandle
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Removes the specified HII database package-related notification.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  NotifyHandle            The handle of the notification function being
 | 
						||
                                  unregistered.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             Notification is unregistered successfully.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The Handle is invalid.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiUnregisterPackageNotify (
 | 
						||
  IN CONST EFI_HII_DATABASE_PROTOCOL    *This,
 | 
						||
  IN EFI_HANDLE                         NotificationHandle
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This routine retrieves an array of GUID values for each keyboard layout that
 | 
						||
  was previously registered in the system.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  KeyGuidBufferLength     On input, a pointer to the length of the keyboard
 | 
						||
                                  GUID  buffer. On output, the length of the handle
 | 
						||
                                  buffer  that is required for the handles found.
 | 
						||
  @param  KeyGuidBuffer           An array of keyboard layout GUID instances
 | 
						||
                                  returned.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             KeyGuidBuffer was updated successfully.
 | 
						||
  @retval EFI_BUFFER_TOO_SMALL    The KeyGuidBufferLength parameter indicates
 | 
						||
                                  that KeyGuidBuffer is too small to support the
 | 
						||
                                  number of GUIDs. KeyGuidBufferLength is
 | 
						||
                                  updated with a value that will enable the data to
 | 
						||
                                  fit.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The KeyGuidBuffer or KeyGuidBufferLength was
 | 
						||
                                  NULL.
 | 
						||
  @retval EFI_NOT_FOUND           There was no keyboard layout.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiFindKeyboardLayouts (
 | 
						||
  IN  CONST EFI_HII_DATABASE_PROTOCOL   *This,
 | 
						||
  IN  OUT UINT16                        *KeyGuidBufferLength,
 | 
						||
  OUT EFI_GUID                          *KeyGuidBuffer
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This routine retrieves the requested keyboard layout. The layout is a physical description of the keys
 | 
						||
  on a keyboard and the character(s) that are associated with a particular set of key strokes.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  KeyGuid                 A pointer to the unique ID associated with a
 | 
						||
                                  given keyboard layout. If KeyGuid is NULL then
 | 
						||
                                  the current layout will be retrieved.
 | 
						||
  @param  KeyboardLayoutLength    On input, a pointer to the length of the
 | 
						||
                                  KeyboardLayout buffer.  On output, the length of
 | 
						||
                                  the data placed into KeyboardLayout.
 | 
						||
  @param  KeyboardLayout          A pointer to a buffer containing the retrieved
 | 
						||
                                  keyboard layout.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The keyboard layout was retrieved successfully.
 | 
						||
  @retval EFI_NOT_FOUND           The requested keyboard layout was not found.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The KeyboardLayout or KeyboardLayoutLength was
 | 
						||
                                  NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetKeyboardLayout (
 | 
						||
  IN  CONST EFI_HII_DATABASE_PROTOCOL   *This,
 | 
						||
  IN  CONST EFI_GUID                          *KeyGuid,
 | 
						||
  IN OUT UINT16                         *KeyboardLayoutLength,
 | 
						||
  OUT EFI_HII_KEYBOARD_LAYOUT           *KeyboardLayout
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This routine sets the default keyboard layout to the one referenced by KeyGuid. When this routine
 | 
						||
  is called, an event will be signaled of the EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID
 | 
						||
  group type. This is so that agents which are sensitive to the current keyboard layout being changed
 | 
						||
  can be notified of this change.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  KeyGuid                 A pointer to the unique ID associated with a
 | 
						||
                                  given keyboard layout.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The current keyboard layout was successfully set.
 | 
						||
  @retval EFI_NOT_FOUND           The referenced keyboard layout was not found, so
 | 
						||
                                  action was taken.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The KeyGuid was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiSetKeyboardLayout (
 | 
						||
  IN CONST EFI_HII_DATABASE_PROTOCOL          *This,
 | 
						||
  IN CONST EFI_GUID                           *KeyGuid
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  Return the EFI handle associated with a package list.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_DATABASE_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  PackageListHandle       An EFI_HII_HANDLE that corresponds to the desired
 | 
						||
                                  package list in the HIIdatabase.
 | 
						||
  @param  DriverHandle            On return, contains the EFI_HANDLE which was
 | 
						||
                                  registered with the package list in
 | 
						||
                                  NewPackageList().
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The DriverHandle was returned successfully.
 | 
						||
  @retval EFI_INVALID_PARAMETER   The PackageListHandle was not valid or
 | 
						||
                                  DriverHandle was NULL.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetPackageListHandle (
 | 
						||
  IN  CONST EFI_HII_DATABASE_PROTOCOL         *This,
 | 
						||
  IN  EFI_HII_HANDLE                    PackageListHandle,
 | 
						||
  OUT EFI_HANDLE                        *DriverHandle
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
//
 | 
						||
// EFI_HII_CONFIG_ROUTING_PROTOCOL interfaces
 | 
						||
//
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function allows a caller to extract the current configuration
 | 
						||
  for one or more named elements from one or more drivers.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Request                 A null-terminated Unicode string in
 | 
						||
                                  <MultiConfigRequest> format.
 | 
						||
  @param  Progress                On return, points to a character in the Request
 | 
						||
                                  string. Points to the string's null terminator if
 | 
						||
                                  request was successful. Points to the most recent
 | 
						||
                                  & before the first failing name / value pair (or
 | 
						||
                                  the beginning of the string if the failure is in
 | 
						||
                                  the first name / value pair) if the request was
 | 
						||
                                  not successful.
 | 
						||
  @param  Results                 Null-terminated Unicode string in
 | 
						||
                                  <MultiConfigAltResp> format which has all values
 | 
						||
                                  filled in for the names in the Request string.
 | 
						||
                                  String to be allocated by the called function.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The Results string is filled with the values
 | 
						||
                                  corresponding to all requested names.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the parts of the
 | 
						||
                                  results that must be stored awaiting possible
 | 
						||
                                  future        protocols.
 | 
						||
  @retval EFI_NOT_FOUND           Routing data doesn<73><6E>t match any known driver.
 | 
						||
                                     Progress set to the <20><>G<EFBFBD><47> in <20><>GUID<49><44> of the
 | 
						||
                                  routing  header that doesn<73><6E>t match. Note: There
 | 
						||
                                  is no         requirement that all routing data
 | 
						||
                                  be validated before any configuration extraction.
 | 
						||
  @retval EFI_INVALID_PARAMETER   For example, passing in a NULL for the Request
 | 
						||
                                  parameter would result in this type of error. The
 | 
						||
                                  Progress parameter is set to NULL.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Illegal syntax. Progress set to most recent &
 | 
						||
                                  before the error or the beginning of the string.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Unknown name. Progress points to the & before the
 | 
						||
                                  name in question.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiConfigRoutingExtractConfig (
 | 
						||
  IN  CONST EFI_HII_CONFIG_ROUTING_PROTOCOL  *This,
 | 
						||
  IN  CONST EFI_STRING                       Request,
 | 
						||
  OUT EFI_STRING                             *Progress,
 | 
						||
  OUT EFI_STRING                             *Results
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function allows the caller to request the current configuration for the
 | 
						||
  entirety of the current HII database and returns the data in a null-terminated Unicode string.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Results                 Null-terminated Unicode string in
 | 
						||
                                  <MultiConfigAltResp> format which has all values
 | 
						||
                                  filled in for the names in the Request string.
 | 
						||
                                  String to be allocated by the  called function.
 | 
						||
                                  De-allocation is up to the caller.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The Results string is filled with the values
 | 
						||
                                  corresponding to all requested names.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the parts of the
 | 
						||
                                  results that must be stored awaiting possible
 | 
						||
                                  future        protocols.
 | 
						||
  @retval EFI_INVALID_PARAMETER   For example, passing in a NULL for the Results
 | 
						||
                                  parameter would result in this type of error.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiConfigRoutingExportConfig (
 | 
						||
  IN  CONST EFI_HII_CONFIG_ROUTING_PROTOCOL  *This,
 | 
						||
  OUT EFI_STRING                             *Results
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This function processes the results of processing forms and routes it to the
 | 
						||
  appropriate handlers or storage.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Configuration           A null-terminated Unicode string in
 | 
						||
                                  <MulltiConfigResp> format.
 | 
						||
  @param  Progress                A pointer to a string filled in with the offset
 | 
						||
                                  of the most recent & before the first failing
 | 
						||
                                  name / value pair (or the beginning of the string
 | 
						||
                                  if the failure is in the first name / value pair)
 | 
						||
                                  or the terminating NULL if all was successful.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The results have been distributed or are awaiting
 | 
						||
                                  distribution.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the parts of the
 | 
						||
                                  results that must be stored awaiting possible
 | 
						||
                                  future        protocols.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Passing in a NULL for the Configuration parameter
 | 
						||
                                  would result in this type of error.
 | 
						||
  @retval EFI_NOT_FOUND           Target for the specified routing data was not
 | 
						||
                                  found.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiConfigRoutingRoutConfig (
 | 
						||
  IN  CONST EFI_HII_CONFIG_ROUTING_PROTOCOL  *This,
 | 
						||
  IN  CONST EFI_STRING                       Configuration,
 | 
						||
  OUT EFI_STRING                             *Progress
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This helper function is to be called by drivers to map configuration data stored
 | 
						||
  in byte array (<28><>block<63><6B>) formats such as UEFI Variables into current configuration strings.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  ConfigRequest           A null-terminated Unicode string in
 | 
						||
                                  <ConfigRequest> format.
 | 
						||
  @param  Block                   Array of bytes defining the block's
 | 
						||
                                  configuration.
 | 
						||
  @param  BlockSize               Length in bytes of Block.
 | 
						||
  @param  Config                  Filled-in configuration string. String allocated
 | 
						||
                                  by  the function. Returned only if call is
 | 
						||
                                  successful.
 | 
						||
  @param  Progress                A pointer to a string filled in with the offset
 | 
						||
                                  of  the most recent & before the first failing
 | 
						||
                                  name/value pair (or the beginning of the string
 | 
						||
                                  if the failure is in the first name / value pair)
 | 
						||
                                  or the terminating NULL if all was successful.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The request succeeded. Progress points to the
 | 
						||
                                  null terminator at the end of the ConfigRequest
 | 
						||
                                        string.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Not enough memory to allocate Config.
 | 
						||
                                  Progress points to the first character of
 | 
						||
                                  ConfigRequest.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Passing in a NULL for the ConfigRequest or
 | 
						||
                                  Block parameter would result in this type of
 | 
						||
                                  error. Progress points to the first character of
 | 
						||
                                  ConfigRequest.
 | 
						||
  @retval EFI_NOT_FOUND           Target for the specified routing data was not
 | 
						||
                                  found. Progress points to the <20><>G<EFBFBD><47> in <20><>GUID<49><44> of
 | 
						||
                                  the      errant routing data.
 | 
						||
  @retval EFI_DEVICE_ERROR        Block not large enough. Progress undefined.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Encountered non <BlockName> formatted string.
 | 
						||
                                       Block is left updated and Progress points at
 | 
						||
                                  the <20><>&<26><> preceding the first non-<BlockName>.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiBlockToConfig (
 | 
						||
  IN  CONST EFI_HII_CONFIG_ROUTING_PROTOCOL  *This,
 | 
						||
  IN  CONST EFI_STRING                       ConfigRequest,
 | 
						||
  IN  CONST UINT8                            *Block,
 | 
						||
  IN  CONST UINTN                            BlockSize,
 | 
						||
  OUT EFI_STRING                             *Config,
 | 
						||
  OUT EFI_STRING                             *Progress
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This helper function is to be called by drivers to map configuration strings
 | 
						||
  to configurations stored in byte array (<28><>block<63><6B>) formats such as UEFI Variables.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  ConfigResp              A null-terminated Unicode string in <ConfigResp>
 | 
						||
                                  format.
 | 
						||
  @param  Block                   A possibly null array of bytes representing the
 | 
						||
                                  current  block. Only bytes referenced in the
 | 
						||
                                  ConfigResp string  in the block are modified. If
 | 
						||
                                  this parameter is null or if the *BlockSize
 | 
						||
                                  parameter is (on input) shorter than required by
 | 
						||
                                  the Configuration string, only the BlockSize
 | 
						||
                                  parameter is updated and an appropriate status
 | 
						||
                                  (see below)  is returned.
 | 
						||
  @param  BlockSize               The length of the Block in units of UINT8.  On
 | 
						||
                                  input, this is the size of the Block. On output,
 | 
						||
                                  if successful, contains the index of the  last
 | 
						||
                                  modified byte in the Block.
 | 
						||
  @param  Progress                On return, points to an element of the ConfigResp
 | 
						||
                                   string filled in with the offset of the most
 | 
						||
                                  recent '&' before the first failing name / value
 | 
						||
                                  pair (or  the beginning of the string if the
 | 
						||
                                  failure is in the  first name / value pair) or
 | 
						||
                                  the terminating NULL if all was successful.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The request succeeded. Progress points to the
 | 
						||
                                  null terminator at the end of the ConfigResp
 | 
						||
                                  string.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Not enough memory to allocate Config.
 | 
						||
                                  Progress points to the first character of
 | 
						||
                                  ConfigResp.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Passing in a NULL for the ConfigResp or
 | 
						||
                                  Block parameter would result in this type of
 | 
						||
                                  error. Progress points to the first character of
 | 
						||
                                           ConfigResp.
 | 
						||
  @retval EFI_NOT_FOUND           Target for the specified routing data was not
 | 
						||
                                  found. Progress points to the <20><>G<EFBFBD><47> in <20><>GUID<49><44> of
 | 
						||
                                  the      errant routing data.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Encountered non <BlockName> formatted name /
 | 
						||
                                  value pair. Block is left updated and
 | 
						||
                                  Progress points at the <20><>&<26><> preceding the first
 | 
						||
                                  non-<BlockName>.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiConfigToBlock (
 | 
						||
  IN     CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *This,
 | 
						||
  IN     CONST EFI_STRING                      ConfigResp,
 | 
						||
  IN OUT UINT8                                 *Block,
 | 
						||
  IN OUT UINTN                                 *BlockSize,
 | 
						||
  OUT    EFI_STRING                            *Progress
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
/**
 | 
						||
  This helper function is to be called by drivers to extract portions of
 | 
						||
  a larger configuration string.
 | 
						||
 | 
						||
  @param  This                    A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL
 | 
						||
                                  instance.
 | 
						||
  @param  Configuration           A null-terminated Unicode string in
 | 
						||
                                  <MultiConfigAltResp> format.
 | 
						||
  @param  Guid                    A pointer to the GUID value to search for in the
 | 
						||
                                  routing portion of the ConfigResp string when
 | 
						||
                                  retrieving  the requested data. If Guid is NULL,
 | 
						||
                                  then all GUID  values will be searched for.
 | 
						||
  @param  Name                    A pointer to the NAME value to search for in the
 | 
						||
                                  routing portion of the ConfigResp string when
 | 
						||
                                  retrieving  the requested data. If Name is NULL,
 | 
						||
                                  then all Name  values will be searched for.
 | 
						||
  @param  DevicePath              A pointer to the PATH value to search for in the
 | 
						||
                                  routing portion of the ConfigResp string when
 | 
						||
                                  retrieving  the requested data. If DevicePath is
 | 
						||
                                  NULL, then all  DevicePath values will be
 | 
						||
                                  searched for.
 | 
						||
  @param  AltCfgId                A pointer to the ALTCFG value to search for in
 | 
						||
                                  the  routing portion of the ConfigResp string
 | 
						||
                                  when retrieving  the requested data.  If this
 | 
						||
                                  parameter is NULL,  then the current setting will
 | 
						||
                                  be retrieved.
 | 
						||
  @param  AltCfgResp              A pointer to a buffer which will be allocated by
 | 
						||
                                  the  function which contains the retrieved string
 | 
						||
                                  as requested.   This buffer is only allocated if
 | 
						||
                                  the call was successful.
 | 
						||
 | 
						||
  @retval EFI_SUCCESS             The request succeeded. The requested data was
 | 
						||
                                  extracted  and placed in the newly allocated
 | 
						||
                                  AltCfgResp buffer.
 | 
						||
  @retval EFI_OUT_OF_RESOURCES    Not enough memory to allocate AltCfgResp.
 | 
						||
  @retval EFI_INVALID_PARAMETER   Any parameter is invalid.
 | 
						||
  @retval EFI_NOT_FOUND           Target for the specified routing data was not
 | 
						||
                                  found.
 | 
						||
 | 
						||
**/
 | 
						||
EFI_STATUS
 | 
						||
EFIAPI
 | 
						||
HiiGetAltCfg (
 | 
						||
  IN  CONST EFI_HII_CONFIG_ROUTING_PROTOCOL    *This,
 | 
						||
  IN  CONST EFI_STRING                         Configuration,
 | 
						||
  IN  CONST EFI_GUID                           *Guid,
 | 
						||
  IN  CONST EFI_STRING                         Name,
 | 
						||
  IN  CONST EFI_DEVICE_PATH_PROTOCOL           *DevicePath,
 | 
						||
  IN  CONST UINT16                             *AltCfgId,
 | 
						||
  OUT EFI_STRING                               *AltCfgResp
 | 
						||
  )
 | 
						||
;
 | 
						||
 | 
						||
 | 
						||
//
 | 
						||
// Global variables
 | 
						||
//
 | 
						||
extern EFI_EVENT gHiiKeyboardLayoutChanged;
 | 
						||
 | 
						||
#include "R8Lib.h"
 | 
						||
 | 
						||
#endif
 |