/*++ Copyright (c) 2007 - 2010, 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: UefiIfrLibrary.h Abstract: The file contain all library function for Ifr Operations. --*/ #ifndef _IFRLIBRARY_H #define _IFRLIBRARY_H #include "Tiano.h" #include "EfiDriverLib.h" #include "TianoHii.h" #include EFI_PROTOCOL_DEFINITION (HiiFont) #include EFI_PROTOCOL_DEFINITION (HiiImage) #include EFI_PROTOCOL_DEFINITION (HiiString) #include EFI_PROTOCOL_DEFINITION (HiiDatabase) #include EFI_PROTOCOL_DEFINITION (HiiConfigRouting) #include EFI_PROTOCOL_DEFINITION (HiiConfigAccess) #include EFI_PROTOCOL_DEFINITION (FormBrowser2) #include EFI_PROTOCOL_DEFINITION (SimpleTextOut) #include EFI_GUID_DEFINITION (GlobalVariable) #define IFR_LIB_DEFAULT_STRING_SIZE 0x200 // // The architectural variable "Lang" and "LangCodes" are deprecated in UEFI // specification. While, UEFI specification also states that these deprecated // variables may be provided for backwards compatibility. // If "LANG_SUPPORT" is defined, "Lang" and "LangCodes" will be produced; // If "LANG_SUPPORT" is undefined, "Lang" and "LangCodes" will not be produced. // #define LANG_SUPPORT #define EFI_LANGUAGE_VARIABLE L"Lang" #define EFI_LANGUAGE_CODES_VARIABLE L"LangCodes" #define UEFI_LANGUAGE_VARIABLE L"PlatformLang" #define UEFI_LANGUAGE_CODES_VARIABLE L"PlatformLangCodes" // // Limited buffer size recommended by RFC4646 (4.3. Length Considerations) // (42 characters plus a NULL terminator) // #define RFC_3066_ENTRY_SIZE (42 + 1) #define ISO_639_2_ENTRY_SIZE 3 #define INVALID_VARSTORE_ID 0 #define QUESTION_FLAGS (EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY) #define QUESTION_FLAGS_MASK (~QUESTION_FLAGS) extern EFI_GUID mIfrVendorGuid; extern EFI_HII_DATABASE_PROTOCOL *gIfrLibHiiDatabase; extern EFI_HII_STRING_PROTOCOL *gIfrLibHiiString; #pragma pack(1) typedef struct { EFI_STRING_ID StringToken; EFI_IFR_TYPE_VALUE Value; UINT8 Flags; } IFR_OPTION; #pragma pack() #pragma pack(1) typedef struct { VENDOR_DEVICE_PATH VendorDevicePath; UINT32 Reserved; UINT64 UniqueId; } HII_VENDOR_DEVICE_PATH_NODE; #pragma pack() typedef struct { HII_VENDOR_DEVICE_PATH_NODE Node; EFI_DEVICE_PATH_PROTOCOL End; } HII_VENDOR_DEVICE_PATH; typedef struct { // // Buffer size allocated for Data. // UINT32 BufferSize; // // Offset in Data to append the newly created opcode binary. // It will be adjusted automatically in Create***OpCode(), and should be // initialized to 0 before invocation of a serial of Create***OpCode() // UINT32 Offset; // // The destination buffer for created op-codes // UINT8 *Data; } EFI_HII_UPDATE_DATA; VOID LocateHiiProtocols ( VOID ) /*++ Routine Description: This function locate Hii relative protocols for later usage. Arguments: None. Returns: None. --*/ ; // // Exported Library functions // EFI_STATUS CreateEndOpCode ( IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_END_OP opcode. Arguments: Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateDefaultOpCode ( IN EFI_IFR_TYPE_VALUE *Value, IN UINT8 Type, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_DEFAULT_OP opcode. Arguments: Value - Value for the default Type - Type for the default Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateActionOpCode ( IN EFI_QUESTION_ID QuestionId, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN EFI_STRING_ID QuestionConfig, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_ACTION_OP opcode. Arguments: QuestionId - Question ID Prompt - String ID for Prompt Help - String ID for Help QuestionFlags - Flags in Question Header QuestionConfig - String ID for configuration Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateSubTitleOpCode ( IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 Flags, IN UINT8 Scope, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_SUBTITLE_OP opcode. Arguments: Prompt - String ID for Prompt Help - String ID for Help Flags - Subtitle opcode flags Scope - Subtitle Scope bit Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateTextOpCode ( IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN EFI_STRING_ID TextTwo, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_TEXT_OP opcode. Arguments: Prompt - String ID for Prompt Help - String ID for Help TextTwo - String ID for text two Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateGotoOpCode ( IN EFI_FORM_ID FormId, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN EFI_QUESTION_ID QuestionId, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_REF_OP opcode. Arguments: FormId - Destination Form ID Prompt - String ID for Prompt Help - String ID for Help QuestionFlags - Flags in Question Header QuestionId - Question ID Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateOneOfOptionOpCode ( IN UINTN OptionCount, IN IFR_OPTION *OptionsList, IN UINT8 Type, IN OUT EFI_HII_UPDATE_DATA *Data ) ; EFI_STATUS CreateOneOfOpCode ( IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 OneOfFlags, IN IFR_OPTION *OptionsList, IN UINTN OptionCount, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_ONE_OF_OP opcode. Arguments: QuestionId - Question ID VarStoreId - Storage ID VarOffset - Offset in Storage Prompt - String ID for Prompt Help - String ID for Help QuestionFlags - Flags in Question Header OneOfFlags - Flags for oneof opcode OptionsList - List of options OptionCount - Number of options in option list Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateOrderedListOpCode ( IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 Flags, IN UINT8 DataType, IN UINT8 MaxContainers, IN IFR_OPTION *OptionsList, IN UINTN OptionCount, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_ORDERED_LIST_OP opcode. Arguments: QuestionId - Question ID VarStoreId - Storage ID VarOffset - Offset in Storage Prompt - String ID for Prompt Help - String ID for Help QuestionFlags - Flags in Question Header Flags - Flags for ordered list opcode DataType - Type for option value MaxContainers - Maximum count for options in this ordered list OptionsList - List of options OptionCount - Number of options in option list Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateCheckBoxOpCode ( IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 CheckBoxFlags, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_CHECKBOX_OP opcode. Arguments: QuestionId - Question ID VarStoreId - Storage ID VarOffset - Offset in Storage Prompt - String ID for Prompt Help - String ID for Help QuestionFlags - Flags in Question Header CheckBoxFlags - Flags for checkbox opcode Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateNumericOpCode ( IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 NumericFlags, IN UINT64 Minimum, IN UINT64 Maximum, IN UINT64 Step, IN UINT64 Default, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_NUMERIC_OP opcode. Arguments: QuestionId - Question ID VarStoreId - Storage ID VarOffset - Offset in Storage Prompt - String ID for Prompt Help - String ID for Help QuestionFlags - Flags in Question Header NumericFlags - Flags for numeric opcode Minimum - Numeric minimum value Maximum - Numeric maximum value Step - Numeric step for edit Default - Numeric default value Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateStringOpCode ( IN EFI_QUESTION_ID QuestionId, IN EFI_VARSTORE_ID VarStoreId, IN UINT16 VarOffset, IN EFI_STRING_ID Prompt, IN EFI_STRING_ID Help, IN UINT8 QuestionFlags, IN UINT8 StringFlags, IN UINT8 MinSize, IN UINT8 MaxSize, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create EFI_IFR_STRING_OP opcode. Arguments: QuestionId - Question ID VarStoreId - Storage ID VarOffset - Offset in Storage Prompt - String ID for Prompt Help - String ID for Help QuestionFlags - Flags in Question Header StringFlags - Flags for string opcode MinSize - String minimum length MaxSize - String maximum length Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_STATUS CreateBannerOpCode ( IN EFI_STRING_ID Title, IN UINT16 LineNumber, IN UINT8 Alignment, IN OUT EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: Create GUIDed opcode for banner. Arguments: Title - String ID for title LineNumber - Line number for this banner Alignment - Alignment for this banner, left, center or right Data - Destination for the created opcode binary Returns: EFI_SUCCESS - Opcode create success --*/ ; EFI_HII_PACKAGE_LIST_HEADER * PreparePackageList ( IN UINTN NumberOfPackages, IN EFI_GUID *GuidId, ... ) /*++ Routine Description: Assemble EFI_HII_PACKAGE_LIST according to the passed in packages. Arguments: NumberOfPackages - Number of packages. GuidId - Package GUID. Returns: Pointer of EFI_HII_PACKAGE_LIST_HEADER. --*/ ; EFI_STATUS CreateHiiDriverHandle ( OUT EFI_HANDLE *DriverHandle ) /*++ Routine Description: The HII driver handle passed in for HiiDatabase.NewPackageList() requires that there should be DevicePath Protocol installed on it. This routine create a virtual Driver Handle by installing a vendor device path on it, so as to use it to invoke HiiDatabase.NewPackageList(). Arguments: DriverHandle - Handle to be returned Returns: EFI_SUCCESS - Handle destroy success. EFI_OUT_OF_RESOURCES - Not enough memory. --*/ ; EFI_STATUS DestroyHiiDriverHandle ( IN EFI_HANDLE DriverHandle ) /*++ Routine Description: Destroy the Driver Handle created by CreateHiiDriverHandle(). Arguments: DriverHandle - Handle returned by CreateHiiDriverHandle() Returns: EFI_SUCCESS - Handle destroy success. other - Handle destroy fail. --*/ ; EFI_HII_HANDLE DevicePathToHiiHandle ( IN EFI_HII_DATABASE_PROTOCOL *HiiDatabase, IN EFI_DEVICE_PATH_PROTOCOL *DevicePath ) /*++ Routine Description: Find HII Handle associated with given Device Path. Arguments: HiiDatabase - Point to EFI_HII_DATABASE_PROTOCOL instance. DevicePath - Device Path associated with the HII package list handle. Returns: Handle - HII package list Handle associated with the Device Path. NULL - Hii Package list handle is not found. --*/ ; EFI_STATUS ExtractDefault( IN VOID *Buffer, IN UINTN *BufferSize, UINTN Number, ... ) /*++ Routine Description: Configure the buffer accrording to ConfigBody strings. Arguments: DefaultId - the ID of default. Buffer - the start address of buffer. BufferSize - the size of buffer. Number - the number of the strings. Returns: EFI_BUFFER_TOO_SMALL - the BufferSize is too small to operate. EFI_INVALID_PARAMETER - Buffer is NULL or BufferSize is 0. EFI_SUCCESS - Operation successful. --*/ ; EFI_STATUS ConstructConfigAltResp ( IN EFI_STRING ConfigRequest, OPTIONAL OUT EFI_STRING *Progress, OUT EFI_STRING *ConfigAltResp, IN EFI_GUID *Guid, IN CHAR16 *Name, IN EFI_HANDLE *DriverHandle, IN VOID *BufferStorage, IN UINTN BufferStorageSize, IN VOID *BlockNameArray, OPTIONAL IN UINTN NumberAltCfg, ... //IN UINT16 AltCfgId, //IN VOID *DefaultValueArray, ) /*++ Routine Description: Construct for a buffer storage. Arguments: ConfigRequest - The Config request string. If set to NULL, all the configurable elements will be extracted from BlockNameArray. ConfigAltResp - The returned . Progress - On return, points to a character in the Request. Guid - GUID of the buffer storage. Name - Name of the buffer storage. DriverHandle - The DriverHandle which is used to invoke HiiDatabase protocol interface NewPackageList(). BufferStorage - Content of the buffer storage. BufferStorageSize - Length in bytes of the buffer storage. BlockNameArray - Array generated by VFR compiler. NumberAltCfg - Number of Default value array generated by VFR compiler. The sequential input parameters will be number of AltCfgId and DefaultValueArray pairs. When set to 0, there will be no . Returns: EFI_OUT_OF_RESOURCES - Run out of memory resource. EFI_INVALID_PARAMETER - ConfigAltResp is NULL. EFI_SUCCESS - Operation successful. --*/ ; EFI_STATUS ExtractGuidFromHiiHandle ( IN EFI_HII_HANDLE Handle, OUT EFI_GUID *Guid ) /*++ Routine Description: Extract Hii package list GUID for given HII handle. Arguments: HiiHandle - Hii handle Guid - Package list GUID Returns: EFI_SUCCESS - Successfully extract GUID from Hii database. --*/ ; EFI_STATUS ExtractClassFromHiiHandle ( IN EFI_HII_HANDLE Handle, OUT UINT16 *Class, OUT EFI_STRING_ID *FormSetTitle, OUT EFI_STRING_ID *FormSetHelp ) /*++ Routine Description: Extract formset class for given HII handle. Arguments: HiiHandle - Hii handle Class - Class of the formset FormSetTitle - Formset title string FormSetHelp - Formset help string Returns: EFI_SUCCESS - Successfully extract Class for specified Hii handle. --*/ ; EFI_STATUS ExtractClassGuidFromHiiHandle ( IN EFI_HII_HANDLE Handle, OUT UINT8 *NumberOfClassGuid, OUT EFI_GUID **ClassGuid, OUT EFI_STRING_ID *FormSetTitle, OUT EFI_STRING_ID *FormSetHelp ) /*++ Routine Description: Extract formset ClassGuid for given HII handle. Arguments: HiiHandle - Hii handle NumberOfClassGuid - Number of ClassGuid ClassGuid - Pointer to callee allocated buffer, an array of ClassGuid FormSetTitle - Formset title string FormSetHelp - Formset help string Returns: EFI_SUCCESS - Successfully extract Class for specified Hii handle. --*/ ; VOID ToLower ( IN OUT CHAR16 *Str ) /*++ Routine Description: Converts the unicode character from uppercase to lowercase. Arguments: Str - String to be converted Returns: --*/ ; EFI_STATUS BufferToHexString ( IN OUT CHAR16 *Str, IN UINT8 *Buffer, IN UINTN BufferSize ) /*++ Routine Description: Converts binary buffer to Unicode string in reversed byte order to BufToHexString(). Arguments: Str - String for output Buffer - Binary buffer. BufferSize - Size of the buffer in bytes. Returns: EFI_SUCCESS - The function completed successfully. --*/ ; EFI_STATUS HexStringToBuffer ( IN OUT UINT8 *Buffer, IN OUT UINTN *BufferSize, IN CHAR16 *Str ) /*++ Routine Description: Converts Hex String to binary buffer in reversed byte order to HexStringToBuf(). Arguments: Buffer - Pointer to buffer that receives the data. BufferSize - Length in bytes of the buffer to hold converted data. If routine return with EFI_SUCCESS, containing length of converted data. If routine return with EFI_BUFFER_TOO_SMALL, containg length of buffer desired. Str - String to be converted from. Returns: EFI_SUCCESS - The function completed successfully. --*/ ; EFI_STATUS ConfigStringToUnicode ( IN OUT CHAR16 *UnicodeString, IN OUT UINTN *StrBufferLen, IN CHAR16 *ConfigString ) /*++ Routine Description: Convert binary representation Config string (e.g. "0041004200430044") to the original string (e.g. "ABCD"). Config string appears in (i.e. "&NAME="), or Name/Value pair in (i.e. "label="). Arguments: UnicodeString - Original Unicode string. StrBufferLen - On input: Length in bytes of buffer to hold the Unicode string. Includes tailing '\0' character. On output: If return EFI_SUCCESS, containing length of Unicode string buffer. If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired. ConfigString - Binary representation of Unicode String, := (4)+ Returns: EFI_SUCCESS - Routine success. EFI_BUFFER_TOO_SMALL - The string buffer is too small. --*/ ; EFI_STATUS UnicodeToConfigString ( IN OUT CHAR16 *ConfigString, IN OUT UINTN *StrBufferLen, IN CHAR16 *UnicodeString ) /*++ Routine Description: Convert Unicode string to binary representation Config string, e.g. "ABCD" => "0041004200430044". Config string appears in (i.e. "&NAME="), or Name/Value pair in (i.e. "label="). Arguments: ConfigString - Binary representation of Unicode String, := (4)+ StrBufferLen - On input: Length in bytes of buffer to hold the Unicode string. Includes tailing '\0' character. On output: If return EFI_SUCCESS, containing length of Unicode string buffer. If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired. UnicodeString - Original Unicode string. Returns: EFI_SUCCESS - Routine success. EFI_BUFFER_TOO_SMALL - The string buffer is too small. --*/ ; EFI_STATUS ConstructConfigHdr ( IN OUT CHAR16 *ConfigHdr, IN OUT UINTN *StrBufferLen, IN EFI_GUID *Guid, IN CHAR16 *Name, OPTIONAL IN EFI_HANDLE *DriverHandle ) /*++ Routine Description: Construct using routing information GUID/NAME/PATH. Arguments: ConfigHdr - Pointer to the ConfigHdr string. StrBufferLen - On input: Length in bytes of buffer to hold the ConfigHdr string. Includes tailing '\0' character. On output: If return EFI_SUCCESS, containing length of ConfigHdr string buffer. If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired. Guid - Routing information: GUID. Name - Routing information: NAME. DriverHandle - Driver handle which contains the routing information: PATH. Returns: EFI_SUCCESS - Routine success. EFI_BUFFER_TOO_SMALL - The ConfigHdr string buffer is too small. --*/ ; BOOLEAN IsConfigHdrMatch ( IN EFI_STRING ConfigString, IN EFI_GUID *StorageGuid, OPTIONAL IN CHAR16 *StorageName OPTIONAL ) /*++ Routine Description: Determines if the Routing data (Guid and Name) is correct in . Arguments: ConfigString - Either or . StorageGuid - GUID of the storage. StorageName - Name of the stoarge. Returns: TRUE - Routing information is correct in ConfigString. FALSE - Routing information is incorrect in ConfigString. --*/ ; BOOLEAN FindBlockName ( IN OUT CHAR16 *String, UINTN Offset, UINTN Width ) /*++ Routine Description: Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string. Arguments: String - The string to be searched in. Offset - Offset in BlockName. Width - Width in BlockName. Returns: TRUE - Block name found. FALSE - Block name not found. --*/ ; EFI_STATUS GetBrowserData ( EFI_GUID *VariableGuid, OPTIONAL CHAR16 *VariableName, OPTIONAL UINTN *BufferSize, UINT8 *Buffer ) /*++ Routine Description: This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser. Arguments: VariableGuid - An optional field to indicate the target variable GUID name to use. VariableName - An optional field to indicate the target human-readable variable name. BufferSize - On input: Length in bytes of buffer to hold retrived data. On output: If return EFI_BUFFER_TOO_SMALL, containg length of buffer desired. Buffer - Buffer to hold retrived data. Returns: EFI_SUCCESS - Routine success. EFI_BUFFER_TOO_SMALL - The intput buffer is too small. --*/ ; EFI_STATUS GetHiiHandles ( IN OUT UINTN *HandleBufferLength, OUT EFI_HII_HANDLE **HiiHandleBuffer ) /*++ Routine Description: Determines the handles that are currently active in the database. It's the caller's responsibility to free handle buffer. Arguments: HiiDatabase - A pointer to the EFI_HII_DATABASE_PROTOCOL instance. 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. HiiHandleBuffer - Pointer to an array of Hii Handles returned. Returns: EFI_SUCCESS - Get an array of Hii Handles successfully. EFI_INVALID_PARAMETER - Hii is NULL. EFI_NOT_FOUND - Database not found. --*/ ; EFI_STATUS SetBrowserData ( EFI_GUID *VariableGuid, OPTIONAL CHAR16 *VariableName, OPTIONAL UINTN BufferSize, UINT8 *Buffer, CHAR16 *RequestElement OPTIONAL ) /*++ Routine Description: This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser. Arguments: VariableGuid - An optional field to indicate the target variable GUID name to use. VariableName - An optional field to indicate the target human-readable variable name. BufferSize - Length in bytes of buffer to hold retrived data. Buffer - Buffer to hold retrived data. RequestElement - An optional field to specify which part of the buffer data will be send back to Browser. If NULL, the whole buffer of data will be committed to Browser. ::= &OFFSET=&WIDTH=* Returns: EFI_SUCCESS - Routine success. Other - Updating Browser uncommitted data failed. --*/ ; EFI_STATUS ConvertRfc3066LanguageToIso639Language ( CHAR8 *LanguageRfc3066, CHAR8 *LanguageIso639 ) /*++ Routine Description: Convert language code from RFC3066 to ISO639-2. Arguments: LanguageRfc3066 - RFC3066 language code. LanguageIso639 - ISO639-2 language code. Returns: EFI_SUCCESS - Language code converted. EFI_NOT_FOUND - Language code not found. --*/ ; CHAR8 * Rfc3066ToIso639 ( CHAR8 *SupportedLanguages ) /*++ Routine Description: Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will be converted to "engfra". Arguments: SupportedLanguages - The RFC3066 language list. Returns: The ISO639-2 language list. --*/ ; EFI_STATUS GetCurrentLanguage ( OUT CHAR8 *Lang ) /*++ Routine Description: Determine what is the current language setting Arguments: Lang - Pointer of system language Returns: Status code --*/ ; VOID GetNextLanguage ( IN OUT CHAR8 **LangCode, OUT CHAR8 *Lang ) /*++ Routine Description: Get next language from language code list. Arguments: LangCode - The language code. Lang - Returned language. Returns: None. --*/ ; CHAR8 * GetSupportedLanguages ( IN EFI_HII_HANDLE HiiHandle ) /*++ Routine Description: This function returns the list of supported languages, in the format specified in UEFI specification Appendix M. Arguments: HiiHandle - The HII package list handle. Returns: The supported languages. --*/ ; UINT16 GetSupportedLanguageNumber ( IN EFI_HII_HANDLE HiiHandle ) /*++ Routine Description: This function returns the number of supported languages Arguments: HiiHandle - The HII package list handle. Returns: The number of supported languages. --*/ ; EFI_STATUS GetStringFromHandle ( IN EFI_HII_HANDLE HiiHandle, IN EFI_STRING_ID StringId, OUT EFI_STRING *String ) /*++ Routine Description: Get string specified by StringId form the HiiHandle. Arguments: HiiHandle - The HII handle of package list. StringId - The String ID. String - The output string. Returns: EFI_NOT_FOUND - String is not found. EFI_SUCCESS - Operation is successful. EFI_OUT_OF_RESOURCES - There is not enought memory in the system. EFI_INVALID_PARAMETER - The String is NULL. --*/ ; EFI_STATUS GetStringFromToken ( IN EFI_GUID *ProducerGuid, IN EFI_STRING_ID StringId, OUT EFI_STRING *String ) /*++ Routine Description: Get the string given the StringId and String package Producer's Guid. Arguments: ProducerGuid - The Guid of String package list. StringId - The String ID. String - The output string. Returns: EFI_NOT_FOUND - String is not found. EFI_SUCCESS - Operation is successful. EFI_OUT_OF_RESOURCES - There is not enought memory in the system. --*/ ; EFI_STATUS IfrLibNewString ( IN EFI_HII_HANDLE PackageList, OUT EFI_STRING_ID *StringId, IN CONST EFI_STRING String ) /*++ Routine Description: This function adds the string into String Package of each language. Arguments: PackageList - Handle of the package list where this string will be added. StringId - On return, contains the new strings id, which is unique within PackageList. String - Points to the new null-terminated string. Returns: EFI_SUCCESS - The new string was added successfully. EFI_NOT_FOUND - The specified PackageList could not be found in database. EFI_OUT_OF_RESOURCES - Could not add the string due to lack of resources. EFI_INVALID_PARAMETER - String is NULL or StringId is NULL is NULL. --*/ ; EFI_STATUS IfrLibGetString ( IN EFI_HII_HANDLE PackageList, IN EFI_STRING_ID StringId, OUT EFI_STRING String, IN OUT UINTN *StringSize ) /*++ Routine Description: This function try to retrieve string from String package of current language. If fail, it try to retrieve string from String package of first language it support. Arguments: PackageList - The package list in the HII database to search for the specified string. StringId - The string's id, which is unique within PackageList. String - Points to the new null-terminated string. 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. Returns: EFI_SUCCESS - The string was returned successfully. EFI_NOT_FOUND - The string specified by StringId is not available. EFI_BUFFER_TOO_SMALL - The buffer specified by StringLength is too small to hold the string. EFI_INVALID_PARAMETER - The String or StringSize was NULL. --*/ ; EFI_STATUS IfrLibSetString ( IN EFI_HII_HANDLE PackageList, IN EFI_STRING_ID StringId, IN CONST EFI_STRING String ) /*++ Routine Description: This function updates the string in String package of current language. Arguments: PackageList - The package list containing the strings. StringId - The string's id, which is unique within PackageList. String - Points to the new null-terminated string. Returns: EFI_SUCCESS - The string was updated successfully. EFI_NOT_FOUND - The string specified by StringId is not in the database. EFI_INVALID_PARAMETER - The String was NULL. EFI_OUT_OF_RESOURCES - The system is out of resources to accomplish the task. --*/ ; EFI_STATUS IfrLibCreatePopUp ( IN UINTN NumberOfLines, OUT EFI_INPUT_KEY *KeyValue, IN CHAR16 *String, ... ) /*++ Routine Description: Draw a dialog and return the selected key. Arguments: NumberOfLines - The number of lines for the dialog box KeyValue - The EFI_KEY value returned if HotKey is TRUE.. String - Pointer to the first string in the list ... - A series of (quantity == NumberOfLines) text strings which will be used to construct the dialog box Returns: EFI_SUCCESS - Displayed dialog and received user interaction EFI_INVALID_PARAMETER - One of the parameters was invalid. --*/ ; EFI_STATUS IfrLibInitUpdateData ( IN OUT EFI_HII_UPDATE_DATA *UpdateData, IN UINT32 BufferSize ) /*++ Routine Description: This function initialize the data structure for dynamic opcode. Arguments: UpdateData - The adding data; BufferSize - Length of the buffer to fill dynamic opcodes. Returns: EFI_SUCCESS - Update data is initialized. EFI_INVALID_PARAMETER - UpdateData is NULL. EFI_OUT_OF_RESOURCES - No enough memory to allocate. --*/ ; EFI_STATUS IfrLibFreeUpdateData ( IN EFI_HII_UPDATE_DATA *UpdateData ) /*++ Routine Description: This function free the resource of update data. Arguments: UpdateData - The adding data; Returns: EFI_SUCCESS - Resource in UpdateData is released. EFI_INVALID_PARAMETER - UpdateData is NULL. --*/ ; EFI_STATUS IfrLibUpdateForm ( IN EFI_HII_HANDLE Handle, IN EFI_GUID *FormSetGuid, OPTIONAL IN EFI_FORM_ID FormId, IN UINT16 Label, IN BOOLEAN Insert, IN EFI_HII_UPDATE_DATA *Data ) /*++ Routine Description: This function allows the caller to update a form that has previously been registered with the EFI HII database. Arguments: Handle - Hii Handle FormSetGuid - The formset should be updated. FormId - The form should be updated. Label - Update information starting immediately after this label in the IFR Insert - If TRUE and Data is not NULL, insert data after Label. If FALSE, replace opcodes between two labels with Data. Data - The adding data; If NULL, remove opcodes between two Label. Returns: EFI_SUCCESS - Update success. Other - Update fail. --*/ ; #endif