/** @file\r
\r
- This print protocol defines six basic print functions to \r
- print the format unicode and ascii string.\r
+ Produces EFI_PRINT2_PROTOCOL and EFI_PRINT2S_PROTOCOL.\r
+ These protocols define basic print functions to print the format unicode and\r
+ ascii string.\r
\r
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials are licensed and made available under \r
\r
extern EFI_GUID gEfiPrint2ProtocolGuid;\r
\r
+\r
+#define EFI_PRINT2S_PROTOCOL_GUID \\r
+ { 0xcc252d2, 0xc106, 0x4661, { 0xb5, 0xbd, 0x31, 0x47, 0xa4, 0xf8, 0x1f, 0x92 } }\r
+\r
+//\r
+// Forward reference for pure ANSI compatability\r
+//\r
+typedef struct _EFI_PRINT2S_PROTOCOL EFI_PRINT2S_PROTOCOL;\r
+\r
+/**\r
+ Converts a decimal value to a Null-terminated Unicode string.\r
+\r
+ Converts the decimal number specified by Value to a Null-terminated Unicode\r
+ string specified by Buffer containing at most Width characters. No padding of\r
+ spaces is ever performed. If Width is 0 then a width of\r
+ MAXIMUM_VALUE_CHARACTERS is assumed. If the conversion contains more than\r
+ Width characters, then only the first Width characters are placed in Buffer.\r
+ Additional conversion parameters are specified in Flags.\r
+\r
+ The Flags bit LEFT_JUSTIFY is always ignored.\r
+ All conversions are left justified in Buffer.\r
+ If Width is 0, PREFIX_ZERO is ignored in Flags.\r
+ If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and\r
+ commas are inserted every 3rd digit starting from the right.\r
+ If RADIX_HEX is set in Flags, then the output buffer will be formatted in\r
+ hexadecimal format.\r
+ If Value is < 0 and RADIX_HEX is not set in Flags, then the fist character in\r
+ Buffer is a '-'.\r
+ If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, then\r
+ Buffer is padded with '0' characters so the combination of the optional '-'\r
+ sign character, '0' characters, digit characters for Value, and the\r
+ Null-terminator add up to Width characters.\r
+\r
+ If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
+ If an error would be returned, then the function will also ASSERT().\r
+\r
+ @param Buffer The pointer to the output buffer for the produced\r
+ Null-terminated Unicode string.\r
+ @param BufferSize The size of Buffer in bytes, including the\r
+ Null-terminator.\r
+ @param Flags The bitmask of flags that specify left justification,\r
+ zero pad, and commas.\r
+ @param Value The 64-bit signed value to convert to a string.\r
+ @param Width The maximum number of Unicode characters to place in\r
+ Buffer, not including the Null-terminator.\r
+\r
+ @retval RETURN_SUCCESS The decimal value is converted.\r
+ @retval RETURN_BUFFER_TOO_SMALL If BufferSize cannot hold the converted\r
+ value.\r
+ @retval RETURN_INVALID_PARAMETER If Buffer is NULL.\r
+ If PcdMaximumUnicodeStringLength is not\r
+ zero, and BufferSize is greater than\r
+ (PcdMaximumUnicodeStringLength *\r
+ sizeof (CHAR16) + 1).\r
+ If unsupported bits are set in Flags.\r
+ If both COMMA_TYPE and RADIX_HEX are set in\r
+ Flags.\r
+ If Width >= MAXIMUM_VALUE_CHARACTERS.\r
+\r
+**/\r
+typedef\r
+RETURN_STATUS\r
+(EFIAPI *UNICODE_VALUE_TO_STRING_S)(\r
+ IN OUT CHAR16 *Buffer,\r
+ IN UINTN BufferSize,\r
+ IN UINTN Flags,\r
+ IN INT64 Value,\r
+ IN UINTN Width\r
+ );\r
+\r
+/**\r
+ Converts a decimal value to a Null-terminated Ascii string.\r
+\r
+ Converts the decimal number specified by Value to a Null-terminated Ascii\r
+ string specified by Buffer containing at most Width characters. No padding of\r
+ spaces is ever performed. If Width is 0 then a width of\r
+ MAXIMUM_VALUE_CHARACTERS is assumed. If the conversion contains more than\r
+ Width characters, then only the first Width characters are placed in Buffer.\r
+ Additional conversion parameters are specified in Flags.\r
+\r
+ The Flags bit LEFT_JUSTIFY is always ignored.\r
+ All conversions are left justified in Buffer.\r
+ If Width is 0, PREFIX_ZERO is ignored in Flags.\r
+ If COMMA_TYPE is set in Flags, then PREFIX_ZERO is ignored in Flags, and\r
+ commas are inserted every 3rd digit starting from the right.\r
+ If RADIX_HEX is set in Flags, then the output buffer will be formatted in\r
+ hexadecimal format.\r
+ If Value is < 0 and RADIX_HEX is not set in Flags, then the fist character in\r
+ Buffer is a '-'.\r
+ If PREFIX_ZERO is set in Flags and PREFIX_ZERO is not being ignored, then\r
+ Buffer is padded with '0' characters so the combination of the optional '-'\r
+ sign character, '0' characters, digit characters for Value, and the\r
+ Null-terminator add up to Width characters.\r
+\r
+ If Buffer is not aligned on a 16-bit boundary, then ASSERT().\r
+ If an error would be returned, then the function will also ASSERT().\r
+\r
+ @param Buffer The pointer to the output buffer for the produced\r
+ Null-terminated Ascii string.\r
+ @param BufferSize The size of Buffer in bytes, including the\r
+ Null-terminator.\r
+ @param Flags The bitmask of flags that specify left justification,\r
+ zero pad, and commas.\r
+ @param Value The 64-bit signed value to convert to a string.\r
+ @param Width The maximum number of Ascii characters to place in\r
+ Buffer, not including the Null-terminator.\r
+\r
+ @retval RETURN_SUCCESS The decimal value is converted.\r
+ @retval RETURN_BUFFER_TOO_SMALL If BufferSize cannot hold the converted\r
+ value.\r
+ @retval RETURN_INVALID_PARAMETER If Buffer is NULL.\r
+ If PcdMaximumAsciiStringLength is not\r
+ zero, and BufferSize is greater than\r
+ PcdMaximumAsciiStringLength.\r
+ If unsupported bits are set in Flags.\r
+ If both COMMA_TYPE and RADIX_HEX are set in\r
+ Flags.\r
+ If Width >= MAXIMUM_VALUE_CHARACTERS.\r
+\r
+**/\r
+typedef\r
+RETURN_STATUS\r
+(EFIAPI *ASCII_VALUE_TO_STRING_S)(\r
+ IN OUT CHAR8 *Buffer,\r
+ IN UINTN BufferSize,\r
+ IN UINTN Flags,\r
+ IN INT64 Value,\r
+ IN UINTN Width\r
+ );\r
+\r
+struct _EFI_PRINT2S_PROTOCOL {\r
+ UNICODE_BS_PRINT UnicodeBSPrint;\r
+ UNICODE_S_PRINT UnicodeSPrint;\r
+ UNICODE_BS_PRINT_ASCII_FORMAT UnicodeBSPrintAsciiFormat;\r
+ UNICODE_S_PRINT_ASCII_FORMAT UnicodeSPrintAsciiFormat;\r
+ UNICODE_VALUE_TO_STRING_S UnicodeValueToStringS;\r
+ ASCII_BS_PRINT AsciiBSPrint;\r
+ ASCII_S_PRINT AsciiSPrint;\r
+ ASCII_BS_PRINT_UNICODE_FORMAT AsciiBSPrintUnicodeFormat;\r
+ ASCII_S_PRINT_UNICODE_FORMAT AsciiSPrintUnicodeFormat;\r
+ ASCII_VALUE_TO_STRING_S AsciiValueToStringS;\r
+};\r
+\r
+extern EFI_GUID gEfiPrint2SProtocolGuid;\r
+\r
#endif\r