Home | History | Annotate | Download | only in Protocol
      1 /** @file
      2 
      3   The lite print protocol defines only one print function to
      4   print the format unicode string.
      5 
      6 Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
      7 This program and the accompanying materials
      8 are licensed and made available under the terms and conditions of the BSD License
      9 which accompanies this distribution.  The full text of the license may be found at
     10 http://opensource.org/licenses/bsd-license.php.
     11 
     12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     14 
     15 **/
     16 
     17 #ifndef __PPRINT_H__
     18 #define __PPRINT_H__
     19 
     20 #define EFI_PRINT_PROTOCOL_GUID  \
     21    { 0xdf2d868e, 0x32fc, 0x4cf0, {0x8e, 0x6b, 0xff, 0xd9, 0x5d, 0x13, 0x43, 0xd0} }
     22 
     23 //
     24 // Forward reference for pure ANSI compatability
     25 //
     26 typedef struct _EFI_PRINT_PROTOCOL  EFI_PRINT_PROTOCOL;
     27 
     28 /**
     29   Produces a Null-terminated Unicode string in an output buffer, based on
     30   a Null-terminated Unicode format string and a VA_LIST argument list.
     31 
     32   Produces a Null-terminated Unicode string in the output buffer specified by StartOfBuffer
     33   and BufferSize.
     34   The Unicode string is produced by parsing the format string specified by FormatString.
     35   Arguments are pulled from the variable argument list specified by Marker based on the
     36   contents of the format string.
     37   The number of Unicode characters in the produced output buffer is returned, not including
     38   the Null-terminator.
     39   If BufferSize is 0 or 1, then no output buffer is produced, and 0 is returned.
     40 
     41   If BufferSize > 1 and StartOfBuffer is NULL, then ASSERT().
     42   If BufferSize > 1 and StartOfBuffer is not aligned on a 16-bit boundary, then ASSERT().
     43   If BufferSize > 1 and FormatString is NULL, then ASSERT().
     44   If BufferSize > 1 and FormatString is not aligned on a 16-bit boundary, then ASSERT().
     45   If PcdMaximumUnicodeStringLength is not zero, and FormatString contains more than
     46   PcdMaximumUnicodeStringLength Unicode characters not including the Null-terminator, then
     47   ASSERT().
     48   If PcdMaximumUnicodeStringLength is not zero, and produced Null-terminated Unicode string
     49   contains more than PcdMaximumUnicodeStringLength Unicode characters, not including the
     50   Null-terminator, then ASSERT().
     51 
     52   @param  StartOfBuffer   A pointer to the output buffer for the produced Null-terminated
     53                           Unicode string.
     54   @param  BufferSize      The size, in bytes, of the output buffer specified by StartOfBuffer.
     55   @param  FormatString    A Null-terminated Unicode format string.
     56   @param  Marker          VA_LIST marker for the variable argument list.
     57 
     58   @return The number of Unicode characters in the produced output buffer not including the
     59           Null-terminator.
     60 
     61 **/
     62 typedef
     63 UINTN
     64 (EFIAPI *UNI_VSPRINT)(
     65   OUT CHAR16        *StartOfBuffer,
     66   IN  UINTN         BufferSize,
     67   IN  CONST CHAR16  *FormatString,
     68   IN  VA_LIST       Marker
     69   );
     70 
     71 /**
     72    EFI_PRINT_PROTOCOL provides one service to produce a Null-terminated Unicode string,
     73    based on a Null-terminated Unicode format string and a VA_LIST argument list, and fills into
     74    the buffer as output.
     75 **/
     76 struct _EFI_PRINT_PROTOCOL {
     77   UNI_VSPRINT               VSPrint;
     78 };
     79 
     80 extern EFI_GUID gEfiPrintProtocolGuid;
     81 
     82 #endif
     83