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