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/DebugLib.h>
|
||||||
#include <Library/UefiDriverEntryPoint.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;
|
EFI_HANDLE mPrintThunkHandle = NULL;
|
||||||
|
|
||||||
CONST EFI_PRINT2_PROTOCOL mPrint2Protocol = {
|
CONST EFI_PRINT2_PROTOCOL mPrint2Protocol = {
|
||||||
|
@ -27,12 +115,12 @@ CONST EFI_PRINT2_PROTOCOL mPrint2Protocol = {
|
||||||
UnicodeSPrint,
|
UnicodeSPrint,
|
||||||
UnicodeBSPrintAsciiFormat,
|
UnicodeBSPrintAsciiFormat,
|
||||||
UnicodeSPrintAsciiFormat,
|
UnicodeSPrintAsciiFormat,
|
||||||
UnicodeValueToString,
|
PrintDxeUnicodeValueToString,
|
||||||
AsciiBSPrint,
|
AsciiBSPrint,
|
||||||
AsciiSPrint,
|
AsciiSPrint,
|
||||||
AsciiBSPrintUnicodeFormat,
|
AsciiBSPrintUnicodeFormat,
|
||||||
AsciiSPrintUnicodeFormat,
|
AsciiSPrintUnicodeFormat,
|
||||||
AsciiValueToString
|
PrintDxeAsciiValueToString
|
||||||
};
|
};
|
||||||
|
|
||||||
CONST EFI_PRINT2S_PROTOCOL mPrint2SProtocol = {
|
CONST EFI_PRINT2S_PROTOCOL mPrint2SProtocol = {
|
||||||
|
|
Loading…
Reference in New Issue