Retire IfrSupportLib and ExtendedIfrSupportLib, which have been replaced by HiiLib.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8152 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e602a223e0
commit
97d77ccf43
@ -1,165 +0,0 @@
|
|||||||
/** @file
|
|
||||||
Library header file defines APIs that is related to IFR operations but
|
|
||||||
specific to EDK II implementation.
|
|
||||||
|
|
||||||
Copyright (c) 2006 - 2008, Intel Corporation. <BR>
|
|
||||||
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.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef __EXTENDED_IFR_SUPPORT_LIB_H__
|
|
||||||
#define __EXTENDED_IFR_SUPPORT_LIB_H__
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create GUIDed opcode for banner. Banner opcode
|
|
||||||
EFI_IFR_EXTEND_OP_BANNER is extended opcode specific
|
|
||||||
to Intel's implementation.
|
|
||||||
|
|
||||||
@param Title String ID for title
|
|
||||||
@param LineNumber Line number for this banner
|
|
||||||
@param Alignment Alignment for this banner, left, center or right
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode create success
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
CreateBannerOpCode (
|
|
||||||
IN EFI_STRING_ID Title,
|
|
||||||
IN UINT16 LineNumber,
|
|
||||||
IN UINT8 Alignment,
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *Data
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function initialize the data structure for dynamic opcode.
|
|
||||||
|
|
||||||
@param UpdateData The adding data;
|
|
||||||
@param BufferSize Length of the buffer to fill dynamic opcodes.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Update data is initialized.
|
|
||||||
@retval EFI_INVALID_PARAMETER UpdateData is NULL.
|
|
||||||
@retval EFI_OUT_OF_RESOURCES No enough memory to allocate.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
IfrLibInitUpdateData (
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *UpdateData,
|
|
||||||
IN UINT32 BufferSize
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
|
|
||||||
This function free the resource of update data.
|
|
||||||
|
|
||||||
@param UpdateData The adding data;
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
EFIAPI
|
|
||||||
IfrLibFreeUpdateData (
|
|
||||||
IN EFI_HII_UPDATE_DATA *UpdateData
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
This function allows the caller to update a form that has
|
|
||||||
previously been registered with the EFI HII database.
|
|
||||||
The update make use of a extended opcode EFI_IFR_EXTEND_OP_LABEL
|
|
||||||
specific to Intel's implementation to complete the operation.
|
|
||||||
|
|
||||||
|
|
||||||
@param Handle Hii Handle
|
|
||||||
@param FormSetGuid The formset should be updated.
|
|
||||||
@param FormId The form should be updated.
|
|
||||||
@param Label Update information starting immediately after this
|
|
||||||
label in the IFR
|
|
||||||
@param Insert If TRUE and Data is not NULL, insert data after
|
|
||||||
Label. If FALSE, replace opcodes between two
|
|
||||||
labels with Data.
|
|
||||||
@param Data The adding data; If NULL, remove opcodes between
|
|
||||||
two Label.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Update success.
|
|
||||||
@retval Other Update fail.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Extract EDKII extended formset class for a given HII handle.
|
|
||||||
|
|
||||||
If Handle is not a valid EFI_HII_HANDLE in the default HII database, then
|
|
||||||
ASSERT.
|
|
||||||
|
|
||||||
If Class is NULL, then ASSERT.
|
|
||||||
IfFormSetTitle is NULL, then ASSERT.
|
|
||||||
If FormSetHelp is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param HiiHandle Hii handle
|
|
||||||
@param Class On output, Class of the formset
|
|
||||||
@param FormSetTitle On output, Formset title string
|
|
||||||
@param FormSetHelp On output, Formset help string
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Successfully extract Class for specified Hii
|
|
||||||
handle.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
IfrLibExtractClassFromHiiHandle (
|
|
||||||
IN EFI_HII_HANDLE Handle,
|
|
||||||
OUT UINT16 *Class,
|
|
||||||
OUT EFI_STRING_ID *FormSetTitle,
|
|
||||||
OUT EFI_STRING_ID *FormSetHelp
|
|
||||||
);
|
|
||||||
|
|
||||||
/**
|
|
||||||
Configure the buffer accrording to ConfigBody strings in the format of
|
|
||||||
<Length:4 bytes>, <Offset: 2 bytes>, <Width:2 bytes>, <Data:n bytes>.
|
|
||||||
This ConfigBody strings is generated by EDKII UEFI VfrCompiler for the default
|
|
||||||
values in a Form Set. The name of the ConfigBody strings is VfrMyIfrNVDataDefault0000
|
|
||||||
constructed following this rule:
|
|
||||||
"Vfr" + varstore.name + "Default" + defaultstore.attributes.
|
|
||||||
Check the generated C file in Output for details.
|
|
||||||
|
|
||||||
@param Buffer the start address of buffer.
|
|
||||||
@param BufferSize the size of buffer.
|
|
||||||
@param Number the number of the ConfigBody strings.
|
|
||||||
@param ... the ConfigBody strings
|
|
||||||
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL the BufferSize is too small to operate.
|
|
||||||
@retval EFI_INVALID_PARAMETER Buffer is NULL or BufferSize is 0.
|
|
||||||
@retval EFI_SUCCESS Operation successful.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
IfrLibExtractDefault(
|
|
||||||
IN VOID *Buffer,
|
|
||||||
IN UINTN *BufferSize,
|
|
||||||
UINTN Number,
|
|
||||||
...
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,855 +0,0 @@
|
|||||||
/** @file
|
|
||||||
This library contains functions to do IFR opcode creation and utility functions
|
|
||||||
to help module to interact with a UEFI Form Browser.
|
|
||||||
|
|
||||||
Copyright (c) 2007 - 2008, 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.
|
|
||||||
|
|
||||||
**/
|
|
||||||
|
|
||||||
#ifndef _IFR_SUPPORT_LIBRARY_H_
|
|
||||||
#define _IFR_SUPPORT_LIBRARY_H_
|
|
||||||
|
|
||||||
#pragma pack(1)
|
|
||||||
typedef struct {
|
|
||||||
EFI_STRING_ID StringToken;
|
|
||||||
EFI_IFR_TYPE_VALUE Value;
|
|
||||||
UINT8 Flags;
|
|
||||||
} IFR_OPTION;
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_END_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
CreateEndOpCode (
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *Data
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_DEFAULT_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param Value Value for the default
|
|
||||||
@param Type Type for the default
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER The type is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
CreateDefaultOpCode (
|
|
||||||
IN EFI_IFR_TYPE_VALUE *Value,
|
|
||||||
IN UINT8 Type,
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *Data
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_ACTION_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param QuestionId Question ID
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param QuestionFlags Flags in Question Header
|
|
||||||
@param QuestionConfig String ID for configuration
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_SUBTITLE_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param Flags Subtitle opcode flags
|
|
||||||
@param Scope Subtitle Scope bit
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
CreateSubTitleOpCode (
|
|
||||||
IN EFI_STRING_ID Prompt,
|
|
||||||
IN EFI_STRING_ID Help,
|
|
||||||
IN UINT8 Flags,
|
|
||||||
IN UINT8 Scope,
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *Data
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_TEXT_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param TextTwo String ID for text two
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
CreateTextOpCode (
|
|
||||||
IN EFI_STRING_ID Prompt,
|
|
||||||
IN EFI_STRING_ID Help,
|
|
||||||
IN EFI_STRING_ID TextTwo,
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *Data
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_REF_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param FormId Destination Form ID
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param QuestionFlags Flags in Question Header
|
|
||||||
@param QuestionId Question ID
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_ONE_OF_OPTION_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param OptionCount The number of options.
|
|
||||||
@param OptionsList The list of Options.
|
|
||||||
@param Type The data type.
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If OptionCount is not zero but OptionsList is NULL.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
CreateOneOfOptionOpCode (
|
|
||||||
IN UINTN OptionCount,
|
|
||||||
IN IFR_OPTION *OptionsList,
|
|
||||||
IN UINT8 Type,
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *Data
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_ONE_OF_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param QuestionId Question ID
|
|
||||||
@param VarStoreId Storage ID
|
|
||||||
@param VarOffset Offset in Storage
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param QuestionFlags Flags in Question Header
|
|
||||||
@param OneOfFlags Flags for oneof opcode
|
|
||||||
@param OptionsList List of options
|
|
||||||
@param OptionCount Number of options in option list
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_ORDERED_LIST_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param QuestionId Question ID
|
|
||||||
@param VarStoreId Storage ID
|
|
||||||
@param VarOffset Offset in Storage
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param QuestionFlags Flags in Question Header
|
|
||||||
@param OrderedListFlags Flags for ordered list opcode
|
|
||||||
@param DataType Type for option value
|
|
||||||
@param MaxContainers Maximum count for options in this ordered list
|
|
||||||
@param OptionsList List of options
|
|
||||||
@param OptionCount Number of options in option list
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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 OrderedListFlags,
|
|
||||||
IN UINT8 DataType,
|
|
||||||
IN UINT8 MaxContainers,
|
|
||||||
IN IFR_OPTION *OptionsList,
|
|
||||||
IN UINTN OptionCount,
|
|
||||||
IN OUT EFI_HII_UPDATE_DATA *Data
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_CHECKBOX_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param QuestionId Question ID
|
|
||||||
@param VarStoreId Storage ID
|
|
||||||
@param VarOffset Offset in Storage
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param QuestionFlags Flags in Question Header
|
|
||||||
@param CheckBoxFlags Flags for checkbox opcode
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_NUMERIC_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param QuestionId Question ID
|
|
||||||
@param VarStoreId Storage ID
|
|
||||||
@param VarOffset Offset in Storage
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param QuestionFlags Flags in Question Header
|
|
||||||
@param NumericFlags Flags for numeric opcode
|
|
||||||
@param Minimum Numeric minimum value
|
|
||||||
@param Maximum Numeric maximum value
|
|
||||||
@param Step Numeric step for edit
|
|
||||||
@param Default Numeric default value
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Create EFI_IFR_STRING_OP opcode.
|
|
||||||
|
|
||||||
If Data is NULL or Data->Data is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param QuestionId Question ID
|
|
||||||
@param VarStoreId Storage ID
|
|
||||||
@param VarOffset Offset in Storage
|
|
||||||
@param Prompt String ID for Prompt
|
|
||||||
@param Help String ID for Help
|
|
||||||
@param QuestionFlags Flags in Question Header
|
|
||||||
@param StringFlags Flags for string opcode
|
|
||||||
@param MinSize String minimum length
|
|
||||||
@param MaxSize String maximum length
|
|
||||||
@param Data Destination for the created opcode binary
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Opcode is created successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The space reserved in Data field is too small.
|
|
||||||
@retval EFI_INVALID_PARAMETER If QuestionFlags is not valid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
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
|
|
||||||
)
|
|
||||||
;
|
|
||||||
/**
|
|
||||||
Construct <ConfigAltResp> for a buffer storage.
|
|
||||||
|
|
||||||
@param ConfigRequest The Config request string. If set to NULL, all the
|
|
||||||
configurable elements will be extracted from BlockNameArray.
|
|
||||||
@param Progress On return, points to a character in the Request.
|
|
||||||
@param ConfigAltResp The returned <ConfigAltResp>.
|
|
||||||
@param Guid GUID of the buffer storage.
|
|
||||||
@param Name Name of the buffer storage.
|
|
||||||
@param DriverHandle The DriverHandle which is used to invoke HiiDatabase
|
|
||||||
protocol interface NewPackageList().
|
|
||||||
@param BufferStorage Content of the buffer storage.
|
|
||||||
@param BufferStorageSize Length in bytes of the buffer storage.
|
|
||||||
@param BlockNameArray Array generated by VFR compiler.
|
|
||||||
@param 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 <AltResp>.
|
|
||||||
@param ... Variable argument list.
|
|
||||||
|
|
||||||
retval EFI_OUT_OF_RESOURCES Run out of memory resource.
|
|
||||||
retval EFI_INVALID_PARAMETER ConfigAltResp is NULL.
|
|
||||||
retval 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,
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Converts the unicode character of the string from uppercase to lowercase.
|
|
||||||
|
|
||||||
@param Str String to be converted
|
|
||||||
|
|
||||||
|
|
||||||
**/
|
|
||||||
VOID
|
|
||||||
EFIAPI
|
|
||||||
ToLower (
|
|
||||||
IN OUT CHAR16 *Str
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Converts binary buffer to a Unicode string. The byte buffer is in a reversed byte order
|
|
||||||
compared with the byte order defined in BufToHexString().
|
|
||||||
|
|
||||||
@param Str String for output
|
|
||||||
@param Buffer Binary buffer.
|
|
||||||
@param BufferSize Size of the buffer in bytes.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The function completed successfully.
|
|
||||||
@retval EFI_OUT_OF_RESOURCES There is no enough available memory space.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
BufInReverseOrderToHexString (
|
|
||||||
IN OUT CHAR16 *Str,
|
|
||||||
IN UINT8 *Buffer,
|
|
||||||
IN UINTN BufferSize
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Converts Hex String to binary buffer in reversed byte order to HexStringToBuf().
|
|
||||||
|
|
||||||
@param Buffer Pointer to buffer that receives the data.
|
|
||||||
@param 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.
|
|
||||||
@param Str String to be converted from.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The function completed successfully.
|
|
||||||
@retval RETURN_BUFFER_TOO_SMALL The input BufferSize is too small to hold the output. BufferSize
|
|
||||||
will be updated to the size required for the converstion.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
HexStringToBufInReverseOrder (
|
|
||||||
IN OUT UINT8 *Buffer,
|
|
||||||
IN OUT UINTN *BufferSize,
|
|
||||||
IN CHAR16 *Str
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Convert binary representation Config string (e.g. "0041004200430044") to the
|
|
||||||
original string (e.g. "ABCD"). Config string appears in <ConfigHdr> (i.e.
|
|
||||||
"&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").
|
|
||||||
|
|
||||||
@param UnicodeString Original Unicode string.
|
|
||||||
@param StrBufferLen On input: Length in bytes of buffer to hold the Unicode string.
|
|
||||||
Includes tailing '\0' character.
|
|
||||||
On output:
|
|
||||||
containing length of Unicode string buffer when returning EFI_SUCCESS;
|
|
||||||
containg length of string buffer desired when returning EFI_BUFFER_TOO_SMALL.
|
|
||||||
@param ConfigString Binary representation of Unicode String, <string> := (<HexCh>4)+
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Operation completes successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
ConfigStringToUnicode (
|
|
||||||
IN OUT CHAR16 *UnicodeString,
|
|
||||||
IN OUT UINTN *StrBufferLen,
|
|
||||||
IN CHAR16 *ConfigString
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Convert Unicode string to binary representation Config string, e.g.
|
|
||||||
"ABCD" => "0041004200430044". Config string appears in <ConfigHdr> (i.e.
|
|
||||||
"&NAME=<string>"), or Name/Value pair in <ConfigBody> (i.e. "label=<string>").
|
|
||||||
|
|
||||||
@param ConfigString Binary representation of Unicode String, <string> := (<HexCh>4)+
|
|
||||||
@param 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.
|
|
||||||
@param UnicodeString Original Unicode string.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Operation completes successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The string buffer is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
UnicodeToConfigString (
|
|
||||||
IN OUT CHAR16 *ConfigString,
|
|
||||||
IN OUT UINTN *StrBufferLen,
|
|
||||||
IN CHAR16 *UnicodeString
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Construct <ConfigHdr> using routing information GUID/NAME/PATH.
|
|
||||||
|
|
||||||
@param ConfigHdr Pointer to the ConfigHdr string.
|
|
||||||
@param 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.
|
|
||||||
@param Guid Routing information: GUID.
|
|
||||||
@param Name Routing information: NAME.
|
|
||||||
@param DriverHandle Driver handle which contains the routing
|
|
||||||
information: PATH.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Operation completes successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The ConfigHdr string buffer is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
ConstructConfigHdr (
|
|
||||||
IN OUT CHAR16 *ConfigHdr,
|
|
||||||
IN OUT UINTN *StrBufferLen,
|
|
||||||
IN CONST EFI_GUID *Guid,
|
|
||||||
IN CHAR16 *Name, OPTIONAL
|
|
||||||
IN EFI_HANDLE *DriverHandle
|
|
||||||
)
|
|
||||||
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Determines if the Routing data (Guid and Name) is correct in <ConfigHdr>.
|
|
||||||
|
|
||||||
@param ConfigString Either <ConfigRequest> or <ConfigResp>.
|
|
||||||
@param StorageGuid GUID of the storage.
|
|
||||||
@param StorageName Name of the stoarge.
|
|
||||||
|
|
||||||
@retval TRUE Routing information is correct in ConfigString.
|
|
||||||
@retval FALSE Routing information is incorrect in ConfigString.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
IsConfigHdrMatch (
|
|
||||||
IN EFI_STRING ConfigString,
|
|
||||||
IN EFI_GUID *StorageGuid, OPTIONAL
|
|
||||||
IN CHAR16 *StorageName OPTIONAL
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string.
|
|
||||||
|
|
||||||
@param String The string to be searched in.
|
|
||||||
@param Offset Offset in BlockName.
|
|
||||||
@param Width Width in BlockName.
|
|
||||||
|
|
||||||
@retval TRUE Block name found.
|
|
||||||
@retval FALSE Block name not found.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
FindBlockName (
|
|
||||||
IN OUT CHAR16 *String,
|
|
||||||
IN UINTN Offset,
|
|
||||||
IN UINTN Width
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser.
|
|
||||||
|
|
||||||
@param VariableGuid An optional field to indicate the target variable
|
|
||||||
GUID name to use.
|
|
||||||
@param VariableName An optional field to indicate the target
|
|
||||||
human-readable variable name.
|
|
||||||
@param 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.
|
|
||||||
@param Buffer Buffer to hold retrived data.
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Operation completes successfully.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL The intput buffer is too small.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
GetBrowserData (
|
|
||||||
IN CONST EFI_GUID *VariableGuid, OPTIONAL
|
|
||||||
IN CONST CHAR16 *VariableName, OPTIONAL
|
|
||||||
IN OUT UINTN *BufferSize,
|
|
||||||
IN OUT UINT8 *Buffer
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser.
|
|
||||||
|
|
||||||
@param VariableGuid An optional field to indicate the target variable
|
|
||||||
GUID name to use.
|
|
||||||
@param VariableName An optional field to indicate the target
|
|
||||||
human-readable variable name.
|
|
||||||
@param BufferSize Length in bytes of buffer to hold retrived data.
|
|
||||||
@param Buffer Buffer to hold retrived data.
|
|
||||||
@param 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. <RequestElement> ::=
|
|
||||||
&OFFSET=<Number>&WIDTH=<Number>*
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Operation completes successfully.
|
|
||||||
@retval Other Updating Browser uncommitted data failed.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
SetBrowserData (
|
|
||||||
IN CONST EFI_GUID *VariableGuid, OPTIONAL
|
|
||||||
IN CONST CHAR16 *VariableName, OPTIONAL
|
|
||||||
IN UINTN BufferSize,
|
|
||||||
IN CONST UINT8 *Buffer,
|
|
||||||
IN CONST CHAR16 *RequestElement OPTIONAL
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Draw a dialog and return the selected key.
|
|
||||||
|
|
||||||
@param NumberOfLines The number of lines for the dialog box
|
|
||||||
@param KeyValue The EFI_KEY value returned if HotKey is TRUE..
|
|
||||||
@param String Pointer to the first string in the list
|
|
||||||
@param ... A series of (quantity == NumberOfLines - 1) text
|
|
||||||
strings which will be used to construct the dialog
|
|
||||||
box
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Displayed dialog and received user interaction
|
|
||||||
@retval EFI_INVALID_PARAMETER One of the parameters was invalid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
IfrLibCreatePopUp (
|
|
||||||
IN UINTN NumberOfLines,
|
|
||||||
OUT EFI_INPUT_KEY *KeyValue,
|
|
||||||
IN CHAR16 *String,
|
|
||||||
...
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Draw a dialog and return the selected key using Variable Argument List.
|
|
||||||
|
|
||||||
@param NumberOfLines The number of lines for the dialog box
|
|
||||||
@param KeyValue The EFI_KEY value returned if HotKey is TRUE..
|
|
||||||
@param String The first String to be displayed in the Pop-Up.
|
|
||||||
@param Args VA_LIST marker for the variable argument list.
|
|
||||||
A series of (quantity == NumberOfLines - 1) text
|
|
||||||
strings which will be used to construct the dialog
|
|
||||||
box
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS Displayed dialog and received user interaction
|
|
||||||
@retval EFI_INVALID_PARAMETER One of the parameters was invalid.
|
|
||||||
|
|
||||||
**/
|
|
||||||
EFI_STATUS
|
|
||||||
EFIAPI
|
|
||||||
IfrLibCreatePopUp2 (
|
|
||||||
IN UINTN NumberOfLines,
|
|
||||||
OUT EFI_INPUT_KEY *KeyValue,
|
|
||||||
IN CHAR16 *String,
|
|
||||||
IN VA_LIST Args
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Test if a Unicode character is a hexadecimal digit. If true, the input
|
|
||||||
Unicode character is converted to a byte.
|
|
||||||
|
|
||||||
This function tests if a Unicode character is a hexadecimal digit. If true, the input
|
|
||||||
Unicode character is converted to a byte. For example, Unicode character
|
|
||||||
L'A' will be converted to 0x0A.
|
|
||||||
|
|
||||||
If Digit is NULL, then ASSERT.
|
|
||||||
|
|
||||||
@param Digit The output hexadecimal digit.
|
|
||||||
|
|
||||||
@param Char The input Unicode character.
|
|
||||||
|
|
||||||
@retval TRUE Char is in the range of Hexadecimal number. Digit is updated
|
|
||||||
to the byte value of the number.
|
|
||||||
@retval FALSE Char is not in the range of Hexadecimal number. Digit is keep
|
|
||||||
intact.
|
|
||||||
|
|
||||||
**/
|
|
||||||
BOOLEAN
|
|
||||||
EFIAPI
|
|
||||||
IsHexDigit (
|
|
||||||
OUT UINT8 *Digit,
|
|
||||||
IN CHAR16 Char
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Convert binary buffer to a Unicode String in a specified sequence.
|
|
||||||
|
|
||||||
This function converts bytes in the memory block pointed by Buffer to a Unicode String Str.
|
|
||||||
Each byte will be represented by two Unicode characters. For example, byte 0xA1 will
|
|
||||||
be converted into two Unicode character L'A' and L'1'. In the output String, the Unicode Character
|
|
||||||
for the Most Significant Nibble will be put before the Unicode Character for the Least Significant
|
|
||||||
Nibble. The output string for the buffer containing a single byte 0xA1 will be L"A1".
|
|
||||||
For a buffer with multiple bytes, the Unicode character produced by the first byte will be put into the
|
|
||||||
the last character in the output string. The one next to first byte will be put into the
|
|
||||||
character before the last character. This rules applies to the rest of the bytes. The Unicode
|
|
||||||
character by the last byte will be put into the first character in the output string. For example,
|
|
||||||
the input buffer for a 64-bits unsigned integer 0x12345678abcdef1234 will be converted to
|
|
||||||
a Unicode string equal to L"12345678abcdef1234".
|
|
||||||
|
|
||||||
@param String On input, String is pointed to the buffer allocated for the convertion.
|
|
||||||
@param StringLen The Length of String buffer to hold the output String. The length must include the tailing '\0' character.
|
|
||||||
The StringLen required to convert a N bytes Buffer will be a least equal to or greater
|
|
||||||
than 2*N + 1.
|
|
||||||
@param Buffer The pointer to a input buffer.
|
|
||||||
@param BufferSizeInBytes Length in bytes of the input buffer.
|
|
||||||
|
|
||||||
|
|
||||||
@retval EFI_SUCCESS The convertion is successful. All bytes in Buffer has been convert to the corresponding
|
|
||||||
Unicode character and placed into the right place in String.
|
|
||||||
@retval EFI_BUFFER_TOO_SMALL StringSizeInBytes is smaller than 2 * N + 1the number of bytes required to
|
|
||||||
complete the convertion.
|
|
||||||
**/
|
|
||||||
RETURN_STATUS
|
|
||||||
EFIAPI
|
|
||||||
BufToHexString (
|
|
||||||
IN OUT CHAR16 *String,
|
|
||||||
IN OUT UINTN *StringLen,
|
|
||||||
IN CONST UINT8 *Buffer,
|
|
||||||
IN UINTN BufferSizeInBytes
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
Convert a Unicode string consisting of hexadecimal characters to a output byte buffer.
|
|
||||||
|
|
||||||
This function converts a Unicode string consisting of characters in the range of Hexadecimal
|
|
||||||
character (L'0' to L'9', L'A' to L'F' and L'a' to L'f') to a output byte buffer. The function will stop
|
|
||||||
at the first non-hexadecimal character or the NULL character. The convertion process can be
|
|
||||||
simply viewed as the reverse operations defined by BufToHexString. Two Unicode characters will be
|
|
||||||
converted into one byte. The first Unicode character represents the Most Significant Nibble and the
|
|
||||||
second Unicode character represents the Least Significant Nibble in the output byte.
|
|
||||||
The first pair of Unicode characters represents the last byte in the output buffer. The second pair of Unicode
|
|
||||||
characters represent the the byte preceding the last byte. This rule applies to the rest pairs of bytes.
|
|
||||||
The last pair represent the first byte in the output buffer.
|
|
||||||
|
|
||||||
For example, a Unciode String L"12345678" will be converted into a buffer wil the following bytes
|
|
||||||
(first byte is the byte in the lowest memory address): "0x78, 0x56, 0x34, 0x12".
|
|
||||||
|
|
||||||
If String has N valid hexadecimal characters for conversion, the caller must make sure Buffer is at least
|
|
||||||
N/2 (if N is even) or (N+1)/2 (if N if odd) bytes.
|
|
||||||
|
|
||||||
If either Buffer, BufferSizeInBytes or String is NULL, then ASSERT ().
|
|
||||||
|
|
||||||
@param Buffer The output buffer allocated by the caller.
|
|
||||||
@param BufferSizeInBytes On input, the size in bytes of Buffer. On output, it is updated to
|
|
||||||
contain the size of the Buffer which is actually used for the converstion.
|
|
||||||
For Unicode string with 2*N hexadecimal characters (not including the
|
|
||||||
tailing NULL character), N bytes of Buffer will be used for the output.
|
|
||||||
@param String The input hexadecimal string.
|
|
||||||
@param ConvertedStrLen The number of hexadecimal characters used to produce content in output
|
|
||||||
buffer Buffer.
|
|
||||||
|
|
||||||
@retval RETURN_BUFFER_TOO_SMALL The input BufferSizeInBytes is too small to hold the output. BufferSizeInBytes
|
|
||||||
will be updated to the size required for the converstion.
|
|
||||||
@retval RETURN_SUCCESS The convertion is successful or the first Unicode character from String
|
|
||||||
is hexadecimal. If ConvertedStrLen is not NULL, it is updated
|
|
||||||
to the number of hexadecimal character used for the converstion.
|
|
||||||
**/
|
|
||||||
RETURN_STATUS
|
|
||||||
EFIAPI
|
|
||||||
HexStringToBuf (
|
|
||||||
OUT UINT8 *Buffer,
|
|
||||||
IN OUT UINTN *BufferSizeInBytes,
|
|
||||||
IN CONST CHAR16 *String,
|
|
||||||
OUT UINTN *ConvertedStrLen OPTIONAL
|
|
||||||
)
|
|
||||||
;
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
x
Reference in New Issue
Block a user