git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@3 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1271 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1271 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| Copyright (c) 2006, 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:
 | |
| 
 | |
|   IfrSupportLib.h
 | |
| 
 | |
| Abstract:
 | |
| 
 | |
|   The file contain all library function for Ifr Operations.
 | |
| 
 | |
| --*/
 | |
| 
 | |
| #ifndef _IFRSUPPORTLIBRARY_H
 | |
| #define _IFRSUPPORTLIBRARY_H
 | |
| 
 | |
| #define DEFAULT_FORM_BUFFER_SIZE    0xFFFF
 | |
| #define DEFAULT_STRING_BUFFER_SIZE  0xFFFF
 | |
| 
 | |
| #pragma pack(1)
 | |
| typedef struct {
 | |
|   CHAR16      *OptionString;  // Passed in string to generate a token for in a truly dynamic form creation
 | |
|   STRING_REF  StringToken;    // This is used when creating a single op-code without generating a StringToken (have one already)
 | |
|   UINT16      Value;
 | |
|   UINT8       Flags;
 | |
|   UINT16      Key;
 | |
| } IFR_OPTION;
 | |
| #pragma pack()
 | |
| 
 | |
| EFI_STATUS
 | |
| GetCurrentLanguage (
 | |
|   OUT     CHAR16              *Lang
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Determine what is the current language setting
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   Lang      - Pointer of system language
 | |
|   
 | |
| Returns: 
 | |
|   
 | |
|   Status code
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| AddString (
 | |
|   IN      VOID                *StringBuffer,
 | |
|   IN      CHAR16              *Language,
 | |
|   IN      CHAR16              *String,
 | |
|   IN OUT  STRING_REF          *StringToken
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Add a string to the incoming buffer and return the token and offset data
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   StringBuffer      - The incoming buffer
 | |
|   
 | |
|   Language          - Currrent language
 | |
|   
 | |
|   String            - The string to be added
 | |
|   
 | |
|   StringToken       - The index where the string placed
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_OUT_OF_RESOURCES    - No enough buffer to allocate
 | |
|   
 | |
|   EFI_SUCCESS             - String successfully added to the incoming buffer
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| AddOpCode (
 | |
|   IN      VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *OpCodeData
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Add op-code data to the FormBuffer
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   FormBuffer      - Form buffer to be inserted to
 | |
|   
 | |
|   OpCodeData      - Op-code data to be inserted
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_OUT_OF_RESOURCES    - No enough buffer to allocate
 | |
|   
 | |
|   EFI_SUCCESS             - Op-code data successfully inserted
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateFormSet (
 | |
|   IN      CHAR16              *FormSetTitle,
 | |
|   IN      EFI_GUID            *Guid,
 | |
|   IN      UINT8               Class,
 | |
|   IN      UINT8               SubClass,
 | |
|   IN OUT  VOID                **FormBuffer,
 | |
|   IN OUT  VOID                **StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a formset
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   FormSetTitle        - Title of formset
 | |
|   
 | |
|   Guid                - Guid of formset
 | |
|   
 | |
|   Class               - Class of formset
 | |
|   
 | |
|   SubClass            - Sub class of formset
 | |
|   
 | |
|   FormBuffer          - Pointer of the formset created
 | |
|   
 | |
|   StringBuffer        - Pointer of FormSetTitile string created
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_OUT_OF_RESOURCES    - No enough buffer to allocate
 | |
|   
 | |
|   EFI_SUCCESS             - Formset successfully created
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateForm (
 | |
|   IN      CHAR16              *FormTitle,
 | |
|   IN      UINT16              FormId,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a form
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   FormTitle       - Title of the form
 | |
|   
 | |
|   FormId          - Id of the form
 | |
|   
 | |
|   FormBuffer          - Pointer of the form created
 | |
|   
 | |
|   StringBuffer        - Pointer of FormTitil string created
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Form successfully created
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateSubTitle (
 | |
|   IN      CHAR16              *SubTitle,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a SubTitle
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   SubTitle        - Sub title to be created
 | |
|   
 | |
|   FormBuffer      - Where this subtitle to add to
 | |
|   
 | |
|   StringBuffer    - String buffer created for subtitle
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Subtitle successfully created
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateText (
 | |
|   IN      CHAR16              *String,
 | |
|   IN      CHAR16              *String2,
 | |
|   IN      CHAR16              *String3,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a line of text
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   String          - First string of the text
 | |
|   
 | |
|   String2         - Second string of the text
 | |
|   
 | |
|   String3         - Help string of the text
 | |
|   
 | |
|   Flags           - Flag of the text
 | |
|   
 | |
|   Key             - Key of the text
 | |
|   
 | |
|   FormBuffer      - The form where this text adds to
 | |
|   
 | |
|   StringBuffer    - String buffer created for String, String2 and String3
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Text successfully created
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateGoto (
 | |
|   IN      UINT16              FormId,
 | |
|   IN      CHAR16              *Prompt,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a hyperlink
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   FormId        - Form ID of the hyperlink
 | |
|   
 | |
|   Prompt        - Prompt of the hyperlink
 | |
|   
 | |
|   FormBuffer    - The form where this hyperlink adds to
 | |
|   
 | |
|   StringBuffer  - String buffer created for Prompt
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Hyperlink successfully created
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateOneOf (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      CHAR16              *Prompt,
 | |
|   IN      CHAR16              *Help,
 | |
|   IN      IFR_OPTION          *OptionsList,
 | |
|   IN      UINTN               OptionCount,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a one-of question with a set of options to choose from.  The
 | |
|   OptionsList is a pointer to a null-terminated list of option descriptions.
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the one-of box
 | |
|   
 | |
|   DataWidth       - DataWidth of the one-of box
 | |
|   
 | |
|   Prompt          - Prompt of the one-of box
 | |
|   
 | |
|   Help            - Help of the one-of box
 | |
|   
 | |
|   OptionsList     - Each string in it is an option of the one-of box
 | |
|   
 | |
|   OptionCount     - Option string count
 | |
|   
 | |
|   FormBuffer      - The form where this one-of box adds to
 | |
|   
 | |
|   StringBuffer    - String buffer created for Prompt, Help and Option strings
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_DEVICE_ERROR    - DataWidth > 2
 | |
| 
 | |
|   EFI_SUCCESS         - One-Of box successfully created.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateOrderedList (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               MaxEntries,
 | |
|   IN      CHAR16              *Prompt,
 | |
|   IN      CHAR16              *Help,
 | |
|   IN      IFR_OPTION          *OptionsList,
 | |
|   IN      UINTN               OptionCount,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a one-of question with a set of options to choose from.  The
 | |
|   OptionsList is a pointer to a null-terminated list of option descriptions.
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the ordered list
 | |
|   
 | |
|   MaxEntries      - MaxEntries of the ordered list
 | |
|   
 | |
|   Prompt          - Prompt of the ordered list
 | |
|   
 | |
|   Help            - Help of the ordered list
 | |
|   
 | |
|   OptionsList     - Each string in it is an option of the ordered list
 | |
|   
 | |
|   OptionCount     - Option string count
 | |
|   
 | |
|   FormBuffer      - The form where this ordered list adds to
 | |
|   
 | |
|   StringBuffer    - String buffer created for Prompt, Help and Option strings
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Ordered list successfully created.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateCheckBox (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      CHAR16              *Prompt,
 | |
|   IN      CHAR16              *Help,
 | |
|   IN      UINT8               Flags,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a checkbox
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the check box
 | |
|   
 | |
|   DataWidth       - DataWidth of the check box
 | |
|   
 | |
|   Prompt          - Prompt of the check box
 | |
|   
 | |
|   Help            - Help of the check box
 | |
|   
 | |
|   Flags           - Flags of the check box
 | |
|   
 | |
|   FormBuffer      - The form where this check box adds to
 | |
|   
 | |
|   StringBuffer    - String buffer created for Prompt and Help.
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_DEVICE_ERROR    - DataWidth > 1
 | |
| 
 | |
|   EFI_SUCCESS         - Check box successfully created
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateNumeric (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      CHAR16              *Prompt,
 | |
|   IN      CHAR16              *Help,
 | |
|   IN      UINT16              Minimum,
 | |
|   IN      UINT16              Maximum,
 | |
|   IN      UINT16              Step,
 | |
|   IN      UINT16              Default,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a numeric
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the numeric
 | |
|   
 | |
|   DataWidth       - DataWidth of the numeric
 | |
|   
 | |
|   Prompt          - Prompt of the numeric
 | |
|   
 | |
|   Help            - Help of the numeric
 | |
|   
 | |
|   Minimum         - Minumun boundary of the numeric
 | |
|   
 | |
|   Maximum         - Maximum boundary of the numeric
 | |
|   
 | |
|   Step            - Step of the numeric
 | |
|    
 | |
|   Default         - Default value
 | |
|   
 | |
|   Flags           - Flags of the numeric
 | |
|   
 | |
|   Key             - Key of the numeric
 | |
|   
 | |
|   FormBuffer      - The form where this numeric adds to
 | |
|   
 | |
|   StringBuffer    - String buffer created for Prompt and Help.
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_DEVICE_ERROR      - DataWidth > 2
 | |
|   
 | |
|   EFI_SUCCESS           - Numeric is successfully created
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateString (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      CHAR16              *Prompt,
 | |
|   IN      CHAR16              *Help,
 | |
|   IN      UINT8               MinSize,
 | |
|   IN      UINT8               MaxSize,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer,
 | |
|   IN OUT  VOID                *StringBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a string
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the string
 | |
|   
 | |
|   DataWidth       - DataWidth of the string
 | |
|   
 | |
|   Prompt          - Prompt of the string
 | |
|   
 | |
|   Help            - Help of the string
 | |
|   
 | |
|   MinSize         - Min size boundary of the string
 | |
|   
 | |
|   MaxSize         - Max size boundary of the string
 | |
|     
 | |
|   Flags           - Flags of the string
 | |
|   
 | |
|   Key             - Key of the string
 | |
|   
 | |
|   FormBuffer      - The form where this string adds to
 | |
|   
 | |
|   StringBuffer    - String buffer created for Prompt and Help.
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - String successfully created.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| ExtractDataFromHiiHandle (
 | |
|   IN      EFI_HII_HANDLE      HiiHandle,
 | |
|   IN OUT  UINT16              *ImageLength,
 | |
|   OUT     UINT8               *DefaultImage,
 | |
|   OUT     EFI_GUID            *Guid
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Extract information pertaining to the HiiHandle
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   HiiHandle       - Hii handle
 | |
|   
 | |
|   ImageLength     - For input, length of DefaultImage;
 | |
|                     For output, length of actually required
 | |
|                     
 | |
|   DefaultImage    - Image buffer prepared by caller
 | |
|   
 | |
|   Guid            - Guid information about the form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_OUT_OF_RESOURCES    - No enough buffer to allocate
 | |
|   
 | |
|   EFI_BUFFER_TOO_SMALL    - DefualtImage has no enough ImageLength
 | |
|   
 | |
|   EFI_SUCCESS             - Successfully extract data from Hii database.
 | |
|   
 | |
|   
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_HII_HANDLE
 | |
| FindHiiHandle (
 | |
|   IN OUT EFI_HII_PROTOCOL    **HiiProtocol, OPTIONAL
 | |
|   IN     EFI_GUID            *Guid
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
|   Finds HII handle for given pack GUID previously registered with the HII.
 | |
| 
 | |
| Arguments:
 | |
|   HiiProtocol - pointer to pointer to HII protocol interface. 
 | |
|                 If NULL, the interface will be found but not returned.
 | |
|                 If it points to NULL, the interface will be found and 
 | |
|                 written back to the pointer that is pointed to.
 | |
|   Guid        - The GUID of the pack that registered with the HII.
 | |
| 
 | |
| Returns:
 | |
|   Handle to the HII pack previously registered by the memory driver.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateSubTitleOpCode (
 | |
|   IN      STRING_REF          StringToken,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a SubTitle opcode independent of string creation
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   StringToken     - StringToken of the subtitle
 | |
|   
 | |
|   FormBuffer      - Output of subtitle as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Subtitle created to be a form
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateTextOpCode (
 | |
|   IN      STRING_REF          StringToken,
 | |
|   IN      STRING_REF          StringTokenTwo,
 | |
|   IN      STRING_REF          StringTokenThree,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a Text opcode independent of string creation
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   StringToken               - First string token of the text
 | |
|   
 | |
|   StringTokenTwo            - Second string token of the text
 | |
|   
 | |
|   StringTokenThree          - Help string token of the text
 | |
|   
 | |
|   Flags                     - Flag of the text
 | |
|   
 | |
|   Key                       - Key of the text
 | |
|   
 | |
|   FormBuffer                - Output of text as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS       - Text created to be a form
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateGotoOpCode (
 | |
|   IN      UINT16              FormId,
 | |
|   IN      STRING_REF          StringToken,
 | |
|   IN      STRING_REF          StringTokenTwo,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a hyperlink opcode independent of string creation
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   FormId          - Form ID of the hyperlink
 | |
|   
 | |
|   StringToken     - Prompt string token of the hyperlink
 | |
|   
 | |
|   StringTokenTwo  - Help string token of the hyperlink
 | |
|   
 | |
|   Flags           - Flags of the hyperlink
 | |
|   
 | |
|   Key             - Key of the hyperlink
 | |
|   
 | |
|   FormBuffer      - Output of hyperlink as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS   - Hyperlink created to be a form
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateOneOfOpCode (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      STRING_REF          PromptToken,
 | |
|   IN      STRING_REF          HelpToken,
 | |
|   IN      IFR_OPTION          *OptionsList,
 | |
|   IN      UINTN               OptionCount,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a one-of opcode with a set of option op-codes to choose from independent of string creation.
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
| 
 | |
|   OptionsList is a pointer to a null-terminated list of option descriptions.  Ensure that OptionsList[x].StringToken
 | |
|   has been filled in since this routine will not generate StringToken values.
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the one-of box
 | |
|   
 | |
|   DataWidth       - DataWidth of the one-of box
 | |
|   
 | |
|   PromptToken     - Prompt string token of the one-of box
 | |
|   
 | |
|   HelpToken       - Help string token of the one-of box
 | |
|   
 | |
|   OptionsList     - Each string in it is an option of the one-of box
 | |
|   
 | |
|   OptionCount     - Option string count
 | |
|   
 | |
|   FormBuffer      - Output of One-Of box as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS         - One-Of box created to be a form
 | |
|   
 | |
|   EFI_DEVICE_ERROR    - DataWidth > 2
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateOrderedListOpCode (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               MaxEntries,
 | |
|   IN      STRING_REF          PromptToken,
 | |
|   IN      STRING_REF          HelpToken,
 | |
|   IN      IFR_OPTION          *OptionsList,
 | |
|   IN      UINTN               OptionCount,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a ordered list opcode with a set of option op-codes to choose from independent of string creation.
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
| 
 | |
|   OptionsList is a pointer to a null-terminated list of option descriptions.  Ensure that OptionsList[x].StringToken
 | |
|   has been filled in since this routine will not generate StringToken values.
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the ordered list
 | |
|   
 | |
|   MaxEntries      - MaxEntries of the ordered list
 | |
|   
 | |
|   PromptToken     - Prompt string token of the ordered list
 | |
|   
 | |
|   HelpToken       - Help string token of the ordered list
 | |
|   
 | |
|   OptionsList     - Each string in it is an option of the ordered list
 | |
|   
 | |
|   OptionCount     - Option string count
 | |
|   
 | |
|   FormBuffer      - Output of ordered list as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Ordered list created to be a form
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateCheckBoxOpCode (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      STRING_REF          PromptToken,
 | |
|   IN      STRING_REF          HelpToken,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a checkbox opcode independent of string creation
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the check box
 | |
|   
 | |
|   DataWidth       - DataWidth of the check box
 | |
|   
 | |
|   PromptToken     - Prompt string token of the check box
 | |
|   
 | |
|   HelpToken       - Help string token of the check box
 | |
|   
 | |
|   Flags           - Flags of the check box
 | |
|   
 | |
|   Key             - Key of the check box
 | |
|   
 | |
|   FormBuffer      - Output of the check box as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS       - Checkbox created to be a form
 | |
|   
 | |
|   EFI_DEVICE_ERROR  - DataWidth > 1
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateNumericOpCode (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      STRING_REF          PromptToken,
 | |
|   IN      STRING_REF          HelpToken,
 | |
|   IN      UINT16              Minimum,
 | |
|   IN      UINT16              Maximum,
 | |
|   IN      UINT16              Step,
 | |
|   IN      UINT16              Default,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a numeric opcode independent of string creation
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the numeric
 | |
|   
 | |
|   DataWidth       - DataWidth of the numeric
 | |
|   
 | |
|   PromptToken     - Prompt string token of the numeric
 | |
|   
 | |
|   HelpToken       - Help string token of the numeric
 | |
|   
 | |
|   Minimum         - Minumun boundary of the numeric
 | |
|   
 | |
|   Maximum         - Maximum boundary of the numeric
 | |
|   
 | |
|   Step            - Step of the numeric
 | |
|   
 | |
|   Default         - Default value of the numeric
 | |
|   
 | |
|   Flags           - Flags of the numeric
 | |
|   
 | |
|   Key             - Key of the numeric
 | |
|   
 | |
|   FormBuffer      - Output of the numeric as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS       - The numeric created to be a form.
 | |
|   
 | |
|   EFI_DEVICE_ERROR  - DataWidth > 2
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateStringOpCode (
 | |
|   IN      UINT16              QuestionId,
 | |
|   IN      UINT8               DataWidth,
 | |
|   IN      STRING_REF          PromptToken,
 | |
|   IN      STRING_REF          HelpToken,
 | |
|   IN      UINT8               MinSize,
 | |
|   IN      UINT8               MaxSize,
 | |
|   IN      UINT8               Flags,
 | |
|   IN      UINT16              Key,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a numeric opcode independent of string creation
 | |
|   This is used primarily by users who need to create just one particular valid op-code and the string
 | |
|   data will be assumed to exist in the HiiDatabase already.  (Useful when exporting op-codes at a label
 | |
|   location to pre-defined forms in HII)
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   QuestionId      - Question ID of the string
 | |
|   
 | |
|   DataWidth       - DataWidth of the string
 | |
|   
 | |
|   PromptToken     - Prompt token of the string
 | |
|   
 | |
|   HelpToken       - Help token of the string
 | |
|   
 | |
|   MinSize         - Min size boundary of the string
 | |
|   
 | |
|   MaxSize         - Max size boundary of the string
 | |
|     
 | |
|   Flags           - Flags of the string
 | |
|   
 | |
|   Key             - Key of the string
 | |
|   
 | |
|   FormBuffer      - Output of the string as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS       - String created to be a form.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| ValidateDataFromHiiHandle (
 | |
|   IN      EFI_HII_HANDLE      HiiHandle,
 | |
|   OUT     BOOLEAN             *Results
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Validate that the data associated with the HiiHandle in NVRAM is within
 | |
|   the reasonable parameters for that FormSet.  Values for strings and passwords
 | |
|   are not verified due to their not having the equivalent of valid range settings.
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   HiiHandle -   Handle of the HII database entry to query
 | |
| 
 | |
|   Results -     If return Status is EFI_SUCCESS, Results provides valid data
 | |
|                 TRUE  = NVRAM Data is within parameters
 | |
|                 FALSE = NVRAM Data is NOT within parameters
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_OUT_OF_RESOURCES      - No enough buffer to allocate
 | |
|   
 | |
|   EFI_SUCCESS               - Data successfully validated
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| CreateBannerOpCode (
 | |
|   IN      UINT16              Title,
 | |
|   IN      UINT16              LineNumber,
 | |
|   IN      UINT8               Alignment,
 | |
|   IN OUT  VOID                *FormBuffer
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Create a banner opcode.  This is primarily used by the FrontPage implementation from BDS.
 | |
|   
 | |
| Arguments:
 | |
| 
 | |
|   Title       - Title of the banner
 | |
|   
 | |
|   LineNumber  - LineNumber of the banner
 | |
|   
 | |
|   Alignment   - Alignment of the banner
 | |
|   
 | |
|   FormBuffer  - Output of banner as a form
 | |
|   
 | |
| Returns: 
 | |
| 
 | |
|   EFI_SUCCESS     - Banner created to be a form.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| EfiLibHiiVariablePackGetMap (
 | |
|   IN    EFI_HII_VARIABLE_PACK        *Pack,  
 | |
|   OUT   CHAR16                       **Name,  OPTIONAL
 | |
|   OUT   EFI_GUID                     **Guid,  OPTIONAL
 | |
|   OUT   UINT16                       *Id,     OPTIONAL
 | |
|   OUT   VOID                         **Var,   OPTIONAL
 | |
|   OUT   UINTN                        *Size    OPTIONAL
 | |
|   ) 
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Extracts a variable form a Pack.
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   Pack - List of variables
 | |
|   Name - Name of the variable/map
 | |
|   Guid - GUID of the variable/map
 | |
|   Var  - Pointer to the variable/map
 | |
|   Size - Size of the variable/map in bytes
 | |
| 
 | |
| Returns: 
 | |
| 
 | |
|   VOID.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| UINTN
 | |
| EfiLibHiiVariablePackListGetMapCnt (
 | |
|   IN    EFI_HII_VARIABLE_PACK_LIST   *List
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Finds a count of the variables/maps in the List.
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   List - List of variables
 | |
| 
 | |
| Returns: 
 | |
| 
 | |
|   Number of Map in the variable pack list.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| typedef VOID (EFI_LIB_HII_VARIABLE_PACK_LIST_CALLBACK) (
 | |
|   IN CHAR16                      *Name,
 | |
|   IN EFI_GUID                    *Guid,
 | |
|   IN UINT16                      Id,
 | |
|   IN VOID                        *Var,
 | |
|   IN UINTN                       Size
 | |
|   )  
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   type definition for the callback to be 
 | |
|   used with EfiLibHiiVariablePackListForEachVar().
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   Id   - Variable/Map ID
 | |
|   Name - Name of the variable/map
 | |
|   Guid - GUID of the variable/map
 | |
|   Var  - Pointer to the variable/map
 | |
|   Size - Size of the variable/map in bytes
 | |
| 
 | |
| Returns: 
 | |
| 
 | |
|   VOID
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| EfiLibHiiVariablePackListForEachVar (
 | |
|   IN    EFI_HII_VARIABLE_PACK_LIST               *List,
 | |
|   IN    EFI_LIB_HII_VARIABLE_PACK_LIST_CALLBACK  *Callback
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Will iterate all variable/maps as appearing 
 | |
|   in List and for each, it will call the Callback.
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   List     - List of variables
 | |
|   Callback - Routine to be called for each iterated variable.
 | |
| 
 | |
| Returns: 
 | |
| 
 | |
|   VOID
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibHiiVariablePackListGetMapByIdx (
 | |
|   IN    UINTN                         Idx,  
 | |
|   IN    EFI_HII_VARIABLE_PACK_LIST    *List,  
 | |
|   OUT   CHAR16                        **Name,  OPTIONAL
 | |
|   OUT   EFI_GUID                      **Guid,  OPTIONAL
 | |
|   OUT   UINT16                        *Id,    OPTIONAL
 | |
|   OUT   VOID                          **Var,
 | |
|   OUT   UINTN                         *Size
 | |
|   ) 
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Finds a variable form List given 
 | |
|   the order number as appears in the List.
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   Idx  - The index of the variable/map to retrieve
 | |
|   List - List of variables
 | |
|   Name - Name of the variable/map
 | |
|   Guid - GUID of the variable/map
 | |
|   Var  - Pointer to the variable/map
 | |
|   Size - Size of the variable/map in bytes
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   EFI_SUCCESS   - Variable is found, OUT parameters are valid
 | |
|   EFI_NOT_FOUND - Variable is not found, OUT parameters are not valid
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibHiiVariablePackListGetMapById (
 | |
|   IN    UINT16                        Id,  
 | |
|   IN    EFI_HII_VARIABLE_PACK_LIST    *List,
 | |
|   OUT   CHAR16                        **Name,  OPTIONAL
 | |
|   OUT   EFI_GUID                      **Guid,  OPTIONAL
 | |
|   OUT   VOID                          **Var,
 | |
|   OUT   UINTN                         *Size
 | |
|   ) 
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Finds a variable form List given the 
 | |
|   order number as appears in the List.
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   Id   - The ID of the variable/map to retrieve
 | |
|   List - List of variables
 | |
|   Name - Name of the variable/map
 | |
|   Guid - GUID of the variable/map
 | |
|   Var  - Pointer to the variable/map
 | |
|   Size - Size of the variable/map in bytes
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   EFI_SUCCESS   - Variable is found, OUT parameters are valid
 | |
|   EFI_NOT_FOUND - Variable is not found, OUT parameters are not valid
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibHiiVariablePackListGetMap (
 | |
|   IN    EFI_HII_VARIABLE_PACK_LIST   *List,
 | |
|   IN    CHAR16                       *Name,
 | |
|   IN    EFI_GUID                     *Guid,
 | |
|   OUT   UINT16                       *Id,
 | |
|   OUT   VOID                         **Var, 
 | |
|   OUT   UINTN                        *Size
 | |
|   ) 
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Finds a variable form EFI_HII_VARIABLE_PACK_LIST given name and GUID.
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   List - List of variables
 | |
|   Name - Name of the variable/map to be found
 | |
|   Guid - GUID of the variable/map to be found
 | |
|   Var  - Pointer to the variable/map found
 | |
|   Size - Size of the variable/map in bytes found
 | |
| 
 | |
| Returns:
 | |
| 
 | |
|   EFI_SUCCESS   - variable is found, OUT parameters are valid
 | |
|   EFI_NOT_FOUND - variable is not found, OUT parameters are not valid
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibHiiVariableRetrieveFromNv (
 | |
|   IN  CHAR16                     *Name,
 | |
|   IN  EFI_GUID                   *Guid,
 | |
|   IN  UINTN                      Size,
 | |
|   OUT VOID                       **Var
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
|   Finds out if a variable of specific Name/Guid/Size exists in NV. 
 | |
|   If it does, it will retrieve it into the Var. 
 | |
| 
 | |
| Arguments:
 | |
|   Name, Guid, Size - Parameters of the variable to retrieve. Must match exactly.
 | |
|   Var              - Variable will be retrieved into buffer pointed by this pointer.
 | |
|                      If pointing to NULL, the buffer will be allocated. Caller is responsible for releasing the buffer.
 | |
| Returns:
 | |
|   EFI_SUCCESS    - The variable of exact Name/Guid/Size parameters was retrieved and written to Var.
 | |
|   EFI_NOT_FOUND  - The variable of this Name/Guid was not found in the NV.
 | |
|   EFI_LOAD_ERROR - The variable in the NV was of different size, or NV API returned error.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| ////
 | |
| //// Variable override support.
 | |
| ////
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibHiiVariableOverrideIfSuffix (
 | |
|   IN  CHAR16                 *Suffix,
 | |
|   IN  CHAR16                 *Name,
 | |
|   IN  EFI_GUID               *Guid,
 | |
|   IN  UINTN                   Size,
 | |
|   OUT VOID                   *Var
 | |
|   )  
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
|   Overrrides the variable with NV data if found.
 | |
|   But it only does it if the Name ends with specified Suffix.
 | |
|   For example, if Suffix="MyOverride" and the Name="XyzSetupMyOverride",
 | |
|   the Suffix matches the end of Name, so the variable will be loaded from NV
 | |
|   provided the variable exists and the GUID and Size matches.
 | |
| 
 | |
| Arguments:
 | |
|   Suffix           - Suffix the Name should end with.
 | |
|   Name, Guid, Size - Parameters of the variable to retrieve. Must match exactly.
 | |
|   Var              - Variable will be retrieved into this buffer.
 | |
|                      Caller is responsible for providing storage of exactly Size size in bytes.
 | |
| Returns:
 | |
|   EFI_SUCCESS           - The variable was overriden with NV variable of same Name/Guid/Size.
 | |
|   EFI_INVALID_PARAMETER - The name of the variable does not end with <Suffix>.
 | |
|   EFI_NOT_FOUND         - The variable of this Name/Guid was not found in the NV.
 | |
|   EFI_LOAD_ERROR        - The variable in the NV was of different size, or NV API returned error.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EfiLibHiiVariableOverrideBySuffix (
 | |
|   IN  CHAR16                 *Suffix,
 | |
|   IN  CHAR16                 *Name,
 | |
|   IN  EFI_GUID               *Guid,
 | |
|   IN  UINTN                   Size,
 | |
|   OUT VOID                   *Var
 | |
|   ) 
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
|   Overrrides the variable with NV data if found.
 | |
|   But it only does it if the NV contains the same variable with Name is appended with Suffix.  
 | |
|   For example, if Suffix="MyOverride" and the Name="XyzSetup",
 | |
|   the Suffix will be appended to the end of Name, and the variable with Name="XyzSetupMyOverride"
 | |
|   will be loaded from NV provided the variable exists and the GUID and Size matches.
 | |
| 
 | |
| Arguments:
 | |
|   Suffix           - Suffix the variable will be appended with.
 | |
|   Name, Guid, Size - Parameters of the variable to retrieve. Must match exactly.
 | |
|   Var              - Variable will be retrieved into this buffer.
 | |
|                      Caller is responsible for providing storage of exactly Size size in bytes.
 | |
| 
 | |
| Returns:
 | |
|   EFI_SUCCESS    - The variable was overriden with NV variable of same Name/Guid/Size.
 | |
|   EFI_NOT_FOUND  - The variable of this Name/Guid was not found in the NV.
 | |
|   EFI_LOAD_ERROR - The variable in the NV was of different size, or NV API returned error.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| #endif
 |