mirror of https://github.com/acidanthera/audk.git
MdeModulePkg/PrintDxe: Handle the deprecation of [A|U]ValueToString
To handle the deprecation of PrintLib APIs UnicodeValueToString and AsciiValueToString by subsequent commits, the commit refines the logic for the implemetation of the UnicodeValueToString and AsciiValueToString services in EFI_PRINT2_PROTOCOL. When the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined (indicating the deprecation of the PrintLib APIs), the above two services will ASSERT and will return zero to reflect not being supported. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
91db774bf4
commit
da1204cd3f
|
@ -20,6 +20,94 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
#include <Library/DebugLib.h>
|
||||
#include <Library/UefiDriverEntryPoint.h>
|
||||
|
||||
/**
|
||||
Implementaion of the UnicodeValueToString service in EFI_PRINT2_PROTOCOL.
|
||||
|
||||
If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then ASSERT().
|
||||
|
||||
@param Buffer The pointer to the output buffer for the produced
|
||||
Null-terminated Unicode string.
|
||||
@param Flags The bitmask of flags that specify left justification, zero
|
||||
pad, and commas.
|
||||
@param Value The 64-bit signed value to convert to a string.
|
||||
@param Width The maximum number of Unicode characters to place in Buffer,
|
||||
not including the Null-terminator.
|
||||
|
||||
@return If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, return 0.
|
||||
Otherwise, return the number of Unicode characters in Buffer not
|
||||
including the Null-terminator.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
PrintDxeUnicodeValueToString (
|
||||
IN OUT CHAR16 *Buffer,
|
||||
IN UINTN Flags,
|
||||
IN INT64 Value,
|
||||
IN UINTN Width
|
||||
)
|
||||
{
|
||||
#ifdef DISABLE_NEW_DEPRECATED_INTERFACES
|
||||
//
|
||||
// If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then the
|
||||
// PrintLib API UnicodeValueToString is already deprecated.
|
||||
// In this case, ASSERT will be triggered and zero will be returned for the
|
||||
// implementation of the UnicodeValueToString service in EFI_PRINT2_PROTOCOL
|
||||
// to indicate that the service is no longer supported.
|
||||
//
|
||||
DEBUG ((DEBUG_ERROR, "PrintDxe: The UnicodeValueToString service in EFI_PRINT2_PROTOCOL is no longer supported for security reason.\n"));
|
||||
DEBUG ((DEBUG_ERROR, "PrintDxe: Please consider using the UnicodeValueToStringS service in EFI_PRINT2S_PROTOCOL.\n"));
|
||||
ASSERT (FALSE);
|
||||
return 0;
|
||||
#else
|
||||
return UnicodeValueToString (Buffer, Flags, Value, Width);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
Implementaion of the AsciiValueToString service in EFI_PRINT2_PROTOCOL.
|
||||
|
||||
If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then ASSERT().
|
||||
|
||||
@param Buffer A pointer to the output buffer for the produced
|
||||
Null-terminated ASCII string.
|
||||
@param Flags The bitmask of flags that specify left justification, zero
|
||||
pad, and commas.
|
||||
@param Value The 64-bit signed value to convert to a string.
|
||||
@param Width The maximum number of ASCII characters to place in Buffer,
|
||||
not including the Null-terminator.
|
||||
|
||||
@return If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, return 0.
|
||||
Otherwise, return the number of ASCII characters in Buffer not
|
||||
including the Null-terminator.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
PrintDxeAsciiValueToString (
|
||||
OUT CHAR8 *Buffer,
|
||||
IN UINTN Flags,
|
||||
IN INT64 Value,
|
||||
IN UINTN Width
|
||||
)
|
||||
{
|
||||
#ifdef DISABLE_NEW_DEPRECATED_INTERFACES
|
||||
//
|
||||
// If the macro DISABLE_NEW_DEPRECATED_INTERFACES is defined, then the
|
||||
// PrintLib API AsciiValueToString is already deprecated.
|
||||
// In this case, ASSERT will be triggered and zero will be returned for the
|
||||
// implementation of the AsciiValueToString service in EFI_PRINT2_PROTOCOL
|
||||
// to indicate that the service is no longer supported.
|
||||
//
|
||||
DEBUG ((DEBUG_ERROR, "PrintDxe: The AsciiValueToString service in EFI_PRINT2_PROTOCOL is no longer supported for security reason.\n"));
|
||||
DEBUG ((DEBUG_ERROR, "PrintDxe: Please consider using the AsciiValueToStringS service in EFI_PRINT2S_PROTOCOL.\n"));
|
||||
ASSERT (FALSE);
|
||||
return 0;
|
||||
#else
|
||||
return AsciiValueToString (Buffer, Flags, Value, Width);
|
||||
#endif
|
||||
}
|
||||
|
||||
EFI_HANDLE mPrintThunkHandle = NULL;
|
||||
|
||||
CONST EFI_PRINT2_PROTOCOL mPrint2Protocol = {
|
||||
|
@ -27,12 +115,12 @@ CONST EFI_PRINT2_PROTOCOL mPrint2Protocol = {
|
|||
UnicodeSPrint,
|
||||
UnicodeBSPrintAsciiFormat,
|
||||
UnicodeSPrintAsciiFormat,
|
||||
UnicodeValueToString,
|
||||
PrintDxeUnicodeValueToString,
|
||||
AsciiBSPrint,
|
||||
AsciiSPrint,
|
||||
AsciiBSPrintUnicodeFormat,
|
||||
AsciiSPrintUnicodeFormat,
|
||||
AsciiValueToString
|
||||
PrintDxeAsciiValueToString
|
||||
};
|
||||
|
||||
CONST EFI_PRINT2S_PROTOCOL mPrint2SProtocol = {
|
||||
|
|
Loading…
Reference in New Issue