MdeModulePkg: Add the EFI_PRINT2S_PROTOCOL
authorHao Wu <hao.a.wu@intel.com>
Wed, 8 Feb 2017 03:20:37 +0000 (11:20 +0800)
committerHao Wu <hao.a.wu@intel.com>
Tue, 21 Feb 2017 05:56:22 +0000 (13:56 +0800)
commite43adbafe8119df48a8a77a1d151a81f05038af1
tree6db284738961bf2ee40e900c4e017a5c394776d6
parent51f0ceb4eb47a13845c887758da4fbed4ecbb0cd
MdeModulePkg: Add the EFI_PRINT2S_PROTOCOL

Add the EFI_PRINT2S_PROTOCOL as a safe version of the EFI_PRINT2_PROTOCOL,
the EFI_PRINT2S_PROTOCOL replaces the following 2 services in
EFI_PRINT2_PROTOCOL:
UNICODE_VALUE_TO_STRING
ASCII_VALUE_TO_STRING

with:
UNICODE_VALUE_TO_STRING_S
ASCII_VALUE_TO_STRING_S

The 2 new services perform checks to the input parameters and will return
relative status to reflect the check result.

Return RETURN_INVALID_PARAMETER when:
1). The input Buffer is NULL.
2). The input BufferSize is greater than (PcdMaximumUnicodeStringLength *
sizeof (CHAR16) + 1) for UnicodeValueToStringS or greater than
PcdMaximumAsciiStringLength for AsciiValueToStringS.
3). The input Flags is not set properly.
4). The input Width is not smaller than MAXIMUM_VALUE_CHARACTERS.

Return RETURN_BUFFER_TOO_SMALL when:
1). The input BufferSize cannot hold the converted value.

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>
MdeModulePkg/Include/Protocol/Print2.h
MdeModulePkg/MdeModulePkg.dec
MdeModulePkg/Universal/PrintDxe/Print.c
MdeModulePkg/Universal/PrintDxe/PrintDxe.inf
MdeModulePkg/Universal/PrintDxe/PrintDxe.uni