| /** @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 |