1d1f950002362305fcd4c30f108ef7b76679f5843yshang/** @file
2d1f950002362305fcd4c30f108ef7b76679f5843yshang  The file provides services to manipulate string data.
3d1f950002362305fcd4c30f108ef7b76679f5843yshang
44f0779023cb4f633425a6fa8df747326336f2077lzengCopyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
5af2dc6a70b9380d702bd0720cdb029d630c505e3myronporterThis program and the accompanying materials are licensed and made available under
6af2dc6a70b9380d702bd0720cdb029d630c505e3myronporterthe terms and conditions of the BSD License that accompanies this distribution.
7af2dc6a70b9380d702bd0720cdb029d630c505e3myronporterThe full text of the license may be found at
8af2dc6a70b9380d702bd0720cdb029d630c505e3myronporterhttp://opensource.org/licenses/bsd-license.php.
9af2dc6a70b9380d702bd0720cdb029d630c505e3myronporter
10af2dc6a70b9380d702bd0720cdb029d630c505e3myronporterTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11af2dc6a70b9380d702bd0720cdb029d630c505e3myronporterWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12d1f950002362305fcd4c30f108ef7b76679f5843yshang
13d1f950002362305fcd4c30f108ef7b76679f5843yshang**/
14d1f950002362305fcd4c30f108ef7b76679f5843yshang
15d1f950002362305fcd4c30f108ef7b76679f5843yshang#ifndef __HII_STRING_H__
16d1f950002362305fcd4c30f108ef7b76679f5843yshang#define __HII_STRING_H__
17d1f950002362305fcd4c30f108ef7b76679f5843yshang
187d582d6b499ed30268da033cc17fbde6e7b02a9dqwang#include <Protocol/HiiFont.h>
197d582d6b499ed30268da033cc17fbde6e7b02a9dqwang
201e966f6375d3b9fe77c6e4a6974f771f67182694mdkinney#define EFI_HII_STRING_PROTOCOL_GUID \
211e966f6375d3b9fe77c6e4a6974f771f67182694mdkinney  { 0xfd96974, 0x23aa, 0x4cdc, { 0xb9, 0xcb, 0x98, 0xd1, 0x77, 0x50, 0x32, 0x2a } }
22d1f950002362305fcd4c30f108ef7b76679f5843yshang
23d1f950002362305fcd4c30f108ef7b76679f5843yshangtypedef struct _EFI_HII_STRING_PROTOCOL EFI_HII_STRING_PROTOCOL;
24d1f950002362305fcd4c30f108ef7b76679f5843yshang
25d1f950002362305fcd4c30f108ef7b76679f5843yshang/**
264ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  This function adds the string String to the group of strings owned by PackageList, with the
27af2dc6a70b9380d702bd0720cdb029d630c505e3myronporter  specified font information StringFontInfo, and returns a new string id.
28d6a82eaf8d8971f9d4eecda80f421281363c0772lgao  The new string identifier is guaranteed to be unique within the package list.
29d6a82eaf8d8971f9d4eecda80f421281363c0772lgao  That new string identifier is reserved for all languages in the package list.
304ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
314ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  This                   A pointer to the EFI_HII_STRING_PROTOCOL instance.
32af2dc6a70b9380d702bd0720cdb029d630c505e3myronporter  @param  PackageList            The handle of the package list where this string will
334ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 be added.
344ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  StringId               On return, contains the new strings id, which is
354ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 unique within PackageList.
364ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  Language               Points to the language for the new string.
374ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  LanguageName           Points to the printable language name to associate
384ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 with the passed in  Language field.If LanguageName
394ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 is not NULL and the string package header's
404ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 LanguageName  associated with a given Language is
41af2dc6a70b9380d702bd0720cdb029d630c505e3myronporter                                 not zero, the LanguageName being passed in will
424ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 be ignored.
434ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  String                 Points to the new null-terminated string.
444ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  StringFontInfo         Points to the new string's font information or
454ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 NULL if the string should have the default system
464ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 font, size and style.
474ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
484ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_SUCCESS            The new string was added successfully.
494ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_NOT_FOUND          The specified PackageList could not be found in
504ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 database.
514ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_OUT_OF_RESOURCES   Could not add the string due to lack of resources.
52af2dc6a70b9380d702bd0720cdb029d630c505e3myronporter  @retval EFI_INVALID_PARAMETER  String is NULL, or StringId is NULL, or Language is NULL.
534ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_INVALID_PARAMETER  The specified StringFontInfo does not exist in
544ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 current database.
55d1f950002362305fcd4c30f108ef7b76679f5843yshang
56d1f950002362305fcd4c30f108ef7b76679f5843yshang**/
57d1f950002362305fcd4c30f108ef7b76679f5843yshangtypedef
58d1f950002362305fcd4c30f108ef7b76679f5843yshangEFI_STATUS
598b13229b469f05ec22d76098b052bd6e943feceeklu(EFIAPI *EFI_HII_NEW_STRING)(
60d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  EFI_HII_STRING_PROTOCOL   *This,
617d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_HII_HANDLE            PackageList,
627d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  OUT       EFI_STRING_ID             *StringId,
63d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  CHAR8                     *Language,
647d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN  CONST CHAR16                    *LanguageName, OPTIONAL
65d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  EFI_STRING                String,
667d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN CONST  EFI_FONT_INFO             *StringFontInfo OPTIONAL
67d1f950002362305fcd4c30f108ef7b76679f5843yshang);
68d1f950002362305fcd4c30f108ef7b76679f5843yshang
69d1f950002362305fcd4c30f108ef7b76679f5843yshang
70d1f950002362305fcd4c30f108ef7b76679f5843yshang/**
714ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  This function retrieves the string specified by StringId which is associated
724ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  with the specified PackageList in the language Language and copies it into
734ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  the buffer specified by String.
744ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
754ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  This                   A pointer to the EFI_HII_STRING_PROTOCOL instance.
764ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  Language               Points to the language for the retrieved string.
774ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  PackageList            The package list in the HII database to search for
784ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 the  specified string.
794ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  StringId               The string's id, which is unique within
804ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 PackageList.
814ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  String                 Points to the new null-terminated string.
824ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  StringSize             On entry, points to the size of the buffer pointed
834ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 to by  String, in bytes. On return, points to the
844ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 length of the string, in bytes.
854ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  StringFontInfo         If not NULL, points to the string's font
864ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 information.  It's caller's responsibility to free
874ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 this buffer.
884ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
894ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_SUCCESS            The string was returned successfully.
904ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_NOT_FOUND          The string specified by StringId is not available.
914ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 The specified PackageList is not in the database.
925795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_INVALID_LANGUAGE    The string specified by StringId is available but
935795218e88685dea1991469ebabfe2887a3679bbEric Dong                                  not in the specified language.
944ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_BUFFER_TOO_SMALL   The buffer specified by StringSize is too small to
954ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 hold the string.
965795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_INVALID_PARAMETER   The Language or StringSize was NULL.
975795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_INVALID_PARAMETER   The value referenced by StringSize was not zero and
985795218e88685dea1991469ebabfe2887a3679bbEric Dong                                  String was NULL.
995795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_OUT_OF_RESOURCES    There were insufficient resources to complete the
1005795218e88685dea1991469ebabfe2887a3679bbEric Dong                                  request.
101d1f950002362305fcd4c30f108ef7b76679f5843yshang
102d1f950002362305fcd4c30f108ef7b76679f5843yshang**/
103d1f950002362305fcd4c30f108ef7b76679f5843yshangtypedef
104d1f950002362305fcd4c30f108ef7b76679f5843yshangEFI_STATUS
1058b13229b469f05ec22d76098b052bd6e943feceeklu(EFIAPI *EFI_HII_GET_STRING)(
106d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  EFI_HII_STRING_PROTOCOL *This,
107d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  CHAR8                   *Language,
1087d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_HII_HANDLE          PackageList,
1097d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_STRING_ID           StringId,
110d1f950002362305fcd4c30f108ef7b76679f5843yshang  OUT       EFI_STRING              String,
1117d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN OUT    UINTN                   *StringSize,
1127d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  OUT       EFI_FONT_INFO           **StringFontInfo OPTIONAL
113d1f950002362305fcd4c30f108ef7b76679f5843yshang);
114d1f950002362305fcd4c30f108ef7b76679f5843yshang
115d1f950002362305fcd4c30f108ef7b76679f5843yshang/**
1164ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  This function updates the string specified by StringId in the specified PackageList to the text
1174ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  specified by String and, optionally, the font information specified by StringFontInfo.
1184ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
1194ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  This                   A pointer to the EFI_HII_STRING_PROTOCOL instance.
1204ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  PackageList            The package list containing the strings.
1214ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  StringId               The string's id, which is unique within
1224ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 PackageList.
1234ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  Language               Points to the language for the updated string.
1244ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  String                 Points to the new null-terminated string.
1254ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  StringFontInfo         Points to the string's font information or NULL if
1264ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 the  string font information is not changed.
1274ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
1284ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_SUCCESS            The string was updated successfully.
1294ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_NOT_FOUND          The string specified by StringId is not in the
1304ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 database.
1314ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_INVALID_PARAMETER  The String or Language was NULL.
1324ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_INVALID_PARAMETER  The specified StringFontInfo does not exist in
1334ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 current database.
1344ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_OUT_OF_RESOURCES   The system is out of resources to accomplish the
1354ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 task.
136d1f950002362305fcd4c30f108ef7b76679f5843yshang
137d1f950002362305fcd4c30f108ef7b76679f5843yshang**/
138d1f950002362305fcd4c30f108ef7b76679f5843yshangtypedef
139d1f950002362305fcd4c30f108ef7b76679f5843yshangEFI_STATUS
1408b13229b469f05ec22d76098b052bd6e943feceeklu(EFIAPI *EFI_HII_SET_STRING)(
141d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  EFI_HII_STRING_PROTOCOL *This,
1427d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_HII_HANDLE          PackageList,
1437d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_STRING_ID           StringId,
144d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  CHAR8                   *Language,
1457d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_STRING              String,
146d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN CONST  EFI_FONT_INFO           *StringFontInfo OPTIONAL
147d1f950002362305fcd4c30f108ef7b76679f5843yshang);
148d1f950002362305fcd4c30f108ef7b76679f5843yshang
149d1f950002362305fcd4c30f108ef7b76679f5843yshang
150d1f950002362305fcd4c30f108ef7b76679f5843yshang/**
151d1f950002362305fcd4c30f108ef7b76679f5843yshang  This function returns the list of supported languages.
152d1f950002362305fcd4c30f108ef7b76679f5843yshang
1534ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  This                   A pointer to the EFI_HII_STRING_PROTOCOL instance.
1544ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  PackageList            The package list to examine.
1554f0779023cb4f633425a6fa8df747326336f2077lzeng  @param  Languages              Points to the buffer to hold the returned
1564f0779023cb4f633425a6fa8df747326336f2077lzeng                                 null-terminated ASCII string.
1574ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  LanguagesSize          On entry, points to the size of the buffer pointed
1584f0779023cb4f633425a6fa8df747326336f2077lzeng                                 to by Languages, in bytes. On return, points to
1594ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 the length of Languages, in bytes.
1604ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
1614ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_SUCCESS            The languages were returned successfully.
1625795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_INVALID_PARAMETER  The LanguagesSize was NULL.
1635795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_INVALID_PARAMETER  The value referenced by LanguagesSize is not zero
1645795218e88685dea1991469ebabfe2887a3679bbEric Dong                                 and Languages is NULL.
1654ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_BUFFER_TOO_SMALL   The LanguagesSize is too small to hold the list of
1664ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 supported languages. LanguageSize is updated to
1674ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 contain the required size.
1684ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_NOT_FOUND          Could not find string package in specified
1694ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 packagelist.
170d1f950002362305fcd4c30f108ef7b76679f5843yshang
171d1f950002362305fcd4c30f108ef7b76679f5843yshang**/
172d1f950002362305fcd4c30f108ef7b76679f5843yshangtypedef
173d1f950002362305fcd4c30f108ef7b76679f5843yshangEFI_STATUS
1748b13229b469f05ec22d76098b052bd6e943feceeklu(EFIAPI *EFI_HII_GET_LANGUAGES)(
1757d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN CONST  EFI_HII_STRING_PROTOCOL   *This,
1767d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_HII_HANDLE            PackageList,
177d1f950002362305fcd4c30f108ef7b76679f5843yshang  IN OUT    CHAR8                     *Languages,
1787d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN OUT    UINTN                     *LanguagesSize
179d1f950002362305fcd4c30f108ef7b76679f5843yshang);
180d1f950002362305fcd4c30f108ef7b76679f5843yshang
181d1f950002362305fcd4c30f108ef7b76679f5843yshang
182d1f950002362305fcd4c30f108ef7b76679f5843yshang/**
1834ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  Each string package has associated with it a single primary language and zero
1844ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  or more secondary languages. This routine returns the secondary languages
1854ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  associated with a package list.
1864ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
1874ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  This                   A pointer to the EFI_HII_STRING_PROTOCOL instance.
1884ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  PackageList            The package list to examine.
1894f0779023cb4f633425a6fa8df747326336f2077lzeng  @param  PrimaryLanguage        Points to the null-terminated ASCII string that specifies
1904f0779023cb4f633425a6fa8df747326336f2077lzeng                                 the primary language. Languages are specified in the
1914f0779023cb4f633425a6fa8df747326336f2077lzeng                                 format specified in Appendix M of the UEFI 2.0 specification.
1924f0779023cb4f633425a6fa8df747326336f2077lzeng  @param  SecondaryLanguages     Points to the buffer to hold the returned null-terminated
1934f0779023cb4f633425a6fa8df747326336f2077lzeng                                 ASCII string that describes the list of
1944ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 secondary languages for the specified
1954f0779023cb4f633425a6fa8df747326336f2077lzeng                                 PrimaryLanguage. If there are no secondary
1964f0779023cb4f633425a6fa8df747326336f2077lzeng                                 languages, the function returns successfully, but
1974ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 this is set to NULL.
1984ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @param  SecondaryLanguagesSize On entry, points to the size of the buffer pointed
1994f0779023cb4f633425a6fa8df747326336f2077lzeng                                 to by SecondaryLanguages, in bytes. On return,
2004ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 points to the length of SecondaryLanguages in bytes.
2014ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao
2024ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_SUCCESS            Secondary languages were correctly returned.
2035795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_INVALID_PARAMETER  PrimaryLanguage or SecondaryLanguagesSize was NULL.
2045795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_INVALID_PARAMETER  The value referenced by SecondaryLanguagesSize is not
2055795218e88685dea1991469ebabfe2887a3679bbEric Dong                                 zero and SecondaryLanguages is NULL.
2064ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao  @retval EFI_BUFFER_TOO_SMALL   The buffer specified by SecondaryLanguagesSize is
2074ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 too small to hold the returned information.
2084f0779023cb4f633425a6fa8df747326336f2077lzeng                                 SecondaryLanguageSize is updated to hold the size of
2094ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 the buffer required.
2104f0779023cb4f633425a6fa8df747326336f2077lzeng  @retval EFI_INVALID_LANGUAGE   The language specified by PrimaryLanguage is not
2114ca9b6c4e7dbbcf94f21b54f41f761cefc6b1086lgao                                 present in the specified package list.
2125795218e88685dea1991469ebabfe2887a3679bbEric Dong  @retval EFI_NOT_FOUND          The specified PackageList is not in the Database.
213d1f950002362305fcd4c30f108ef7b76679f5843yshang
214d1f950002362305fcd4c30f108ef7b76679f5843yshang**/
215d1f950002362305fcd4c30f108ef7b76679f5843yshangtypedef
216d1f950002362305fcd4c30f108ef7b76679f5843yshangEFI_STATUS
2178b13229b469f05ec22d76098b052bd6e943feceeklu(EFIAPI *EFI_HII_GET_2ND_LANGUAGES)(
2187d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN CONST  EFI_HII_STRING_PROTOCOL   *This,
2197d582d6b499ed30268da033cc17fbde6e7b02a9dqwang  IN        EFI_HII_HANDLE            PackageList,
2204f0779023cb4f633425a6fa8df747326336f2077lzeng  IN CONST  CHAR8                     *PrimaryLanguage,
2214f0779023cb4f633425a6fa8df747326336f2077lzeng  IN OUT    CHAR8                     *SecondaryLanguages,
2224f0779023cb4f633425a6fa8df747326336f2077lzeng  IN OUT    UINTN                     *SecondaryLanguagesSize
223d1f950002362305fcd4c30f108ef7b76679f5843yshang);
224d1f950002362305fcd4c30f108ef7b76679f5843yshang
225d1f950002362305fcd4c30f108ef7b76679f5843yshang
22644717a398fddc4df1f4aeaa70bcd7a043187ed34xli///
22744717a398fddc4df1f4aeaa70bcd7a043187ed34xli/// Services to manipulate the string.
22844717a398fddc4df1f4aeaa70bcd7a043187ed34xli///
229d1f950002362305fcd4c30f108ef7b76679f5843yshangstruct _EFI_HII_STRING_PROTOCOL {
230d1f950002362305fcd4c30f108ef7b76679f5843yshang  EFI_HII_NEW_STRING        NewString;
231d1f950002362305fcd4c30f108ef7b76679f5843yshang  EFI_HII_GET_STRING        GetString;
232d1f950002362305fcd4c30f108ef7b76679f5843yshang  EFI_HII_SET_STRING        SetString;
233d1f950002362305fcd4c30f108ef7b76679f5843yshang  EFI_HII_GET_LANGUAGES     GetLanguages;
234d1f950002362305fcd4c30f108ef7b76679f5843yshang  EFI_HII_GET_2ND_LANGUAGES GetSecondaryLanguages;
235d1f950002362305fcd4c30f108ef7b76679f5843yshang};
236d1f950002362305fcd4c30f108ef7b76679f5843yshang
237d1f950002362305fcd4c30f108ef7b76679f5843yshang
238d1f950002362305fcd4c30f108ef7b76679f5843yshangextern EFI_GUID gEfiHiiStringProtocolGuid;
239d1f950002362305fcd4c30f108ef7b76679f5843yshang
240d1f950002362305fcd4c30f108ef7b76679f5843yshang#endif
241d1f950002362305fcd4c30f108ef7b76679f5843yshang
242