diff options
author | qhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-05-27 03:24:01 +0000 |
---|---|---|
committer | qhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524> | 2008-05-27 03:24:01 +0000 |
commit | ac644614683362804223844048c5be1a2adfa6b7 (patch) | |
tree | de6dd02cb7d5c663e368665c33218a09c93d84ed /MdeModulePkg | |
parent | b233cbe5cc832b56c25cc95a33684de68976961b (diff) | |
download | edk2-platforms-ac644614683362804223844048c5be1a2adfa6b7.tar.xz |
De-unicode in comment for all source files.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5302 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg')
-rw-r--r-- | MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c | 6 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/Font.c | 14 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h | 3388 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/Image.c | 8 | ||||
-rw-r--r-- | MdeModulePkg/Universal/HiiDatabaseDxe/String.c | 14 |
5 files changed, 1715 insertions, 1715 deletions
diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c index 6b46e5c3ce..8d527e061b 100644 --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbEnumer.c @@ -732,14 +732,14 @@ UsbEnumerateNewDev ( //
// After port is reset, hub establishes a signal path between
- // the device and host (DEFALUT state). Device¡¯s registers are
+ // the device and host (DEFALUT state). Device's registers are
// reset, use default address 0 (host enumerates one device at
// a time) , and ready to respond to control transfer at EP 0.
//
//
// Host sends a Get_Descriptor request to learn the max packet
- // size of default pipe (only part of the device¡¯s descriptor).
+ // size of default pipe (only part of the device's descriptor).
//
Status = UsbGetMaxPacketSize0 (Child);
@@ -782,7 +782,7 @@ UsbEnumerateNewDev ( DEBUG ((EFI_D_INFO, "UsbEnumerateNewDev: device is now ADDRESSED at %d\n", Address));
//
- // Host learns about the device¡¯s abilities by requesting device's
+ // Host learns about the device's abilities by requesting device's
// entire descriptions.
//
Status = UsbBuildDescTable (Child);
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c index 2df03fc8d9..eb8e651360 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c @@ -1370,7 +1370,7 @@ IsLineBreak ( 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¡¯s
+ the pointer updated on exit. It is the caller'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
@@ -1381,7 +1381,7 @@ IsLineBreak ( 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¡¯s responsibility to free
+ rows. It is the caller'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.
@@ -1923,7 +1923,7 @@ Exit: @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¡¯s id, which is unique within
+ @param StringId The string'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
@@ -1939,7 +1939,7 @@ Exit: 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¡¯s
+ the pointer updated on exit. It is the caller'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
@@ -1950,7 +1950,7 @@ Exit: 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¡¯s responsibility to free
+ rows. It is the caller'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.
@@ -2071,7 +2071,7 @@ HiiStringIdToImage ( 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¡¯s
+ updated on exit. It is the caller's
responsibility to free this buffer.
@param Baseline Number of pixels from the bottom of the bitmap to
the baseline.
@@ -2232,7 +2232,7 @@ Exit: 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¡¯s
+ @param StringInfoOut Upon return, contains the matching font's
information. If NULL, then no information is
returned. It's caller's responsibility to free
this buffer.
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h index 7a311f28d1..f19813298e 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabase.h @@ -1,1694 +1,1694 @@ -/** @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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯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¡¯t match any known driver. - Progress set to the ¡°G¡± in ¡°GUID¡± of the - routing header that doesn¡¯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 (¡°block¡±) 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 ¡°G¡± in ¡°GUID¡± 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 ¡®&¡¯ 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 (¡°block¡±) 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 ¡°G¡± in ¡°GUID¡± 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 ¡®&¡¯ 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 +/** @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'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'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'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'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'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'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'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'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'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'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'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'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'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'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'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'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't match any known driver.
+ Progress set to the "G" in "GUID" of the
+ routing header that doesn'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 ("block") 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 "G" in "GUID" 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 '&' 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 ("block") 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 "G" in "GUID" 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 '&' 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
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c index 06d783a880..341a50a7e8 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Image.c @@ -790,7 +790,7 @@ HiiNewImage ( @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¡¯s id,, which is unique within
+ @param ImageId The image'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
@@ -993,7 +993,7 @@ HiiGetImage ( @param This A pointer to the EFI_HII_IMAGE_PROTOCOL instance.
@param PackageList The package list containing the images.
- @param ImageId The image¡¯s id,, which is unique within
+ @param ImageId The image's id,, which is unique within
PackageList.
@param Image Points to the image.
@@ -1196,7 +1196,7 @@ HiiSetImage ( 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¡¯s
+ the pointer updated on exit. It is the caller'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.
@@ -1441,7 +1441,7 @@ HiiDrawImage ( 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¡¯s
+ pointer updated on exit. It is the caller'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.
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/String.c b/MdeModulePkg/Universal/HiiDatabaseDxe/String.c index d408365a89..0d830106cd 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/String.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/String.c @@ -249,7 +249,7 @@ GetStringFontInfo ( @param Private Hii database private structure.
@param StringPackage Hii string package instance.
- @param StringId The string¡¯s id, which is unique within
+ @param StringId The string'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.
@@ -567,7 +567,7 @@ FindStringBlock ( @param Private Hii database private structure.
@param StringPackage Hii string package instance.
- @param StringId The string¡¯s id, which is unique within
+ @param StringId The string's id, which is unique within
PackageList.
@param String Points to retrieved null-terminated string.
@param StringSize On entry, points to the size of the buffer pointed
@@ -672,7 +672,7 @@ GetStringWorker ( @param Private HII database driver private structure.
@param StringPackage HII string package instance.
- @param StringId The string¡¯s id, which is unique within
+ @param StringId The string's id, which is unique within
PackageList.
@param String Points to the new null-terminated string.
@param StringFontInfo Points to the input font info.
@@ -909,7 +909,7 @@ SetStringWorker ( 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¡¯s font information or
+ @param StringFontInfo Points to the new string's font information or
NULL if the string should have the default system
font, size and style.
@@ -1251,7 +1251,7 @@ HiiNewString ( @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¡¯s font
+ @param StringFontInfo If not NULL, points to the string's font
information. It's caller's responsibility to free
this buffer.
@@ -1334,11 +1334,11 @@ HiiGetString ( @param This A pointer to the EFI_HII_STRING_PROTOCOL instance.
@param PackageList The package list containing the strings.
- @param StringId The string¡¯s id, which is unique within
+ @param StringId The string'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¡¯s font information or NULL if
+ @param StringFontInfo Points to the string's font information or NULL if
the string font information is not changed.
@retval EFI_SUCCESS The string was updated successfully.
|