+ //\r
+ // 1. Buffer shall not be a null pointer when both BufferSize > 0 and\r
+ // COUNT_ONLY_NO_PRINT is not set in Flags.\r
+ //\r
+ if ((BufferSize > 0) && ((Flags & COUNT_ONLY_NO_PRINT) == 0)) {\r
+ SAFE_PRINT_CONSTRAINT_CHECK ((Buffer != NULL), 0);\r
+ }\r
+\r
+ //\r
+ // 2. Format shall not be a null pointer when BufferSize > 0 or when\r
+ // COUNT_ONLY_NO_PRINT is set in Flags.\r
+ //\r
+ if ((BufferSize > 0) || ((Flags & COUNT_ONLY_NO_PRINT) != 0)) {\r
+ SAFE_PRINT_CONSTRAINT_CHECK ((Format != NULL), 0);\r
+ }\r
+\r
+ //\r
+ // 3. BufferSize shall not be greater than RSIZE_MAX for Unicode output or\r
+ // ASCII_RSIZE_MAX for Ascii output.\r
+ //\r
+ if ((Flags & OUTPUT_UNICODE) != 0) {\r
+ if (RSIZE_MAX != 0) {\r
+ SAFE_PRINT_CONSTRAINT_CHECK ((BufferSize <= RSIZE_MAX), 0);\r
+ }\r
+ BytesPerOutputCharacter = 2;\r
+ } else {\r
+ if (ASCII_RSIZE_MAX != 0) {\r
+ SAFE_PRINT_CONSTRAINT_CHECK ((BufferSize <= ASCII_RSIZE_MAX), 0);\r
+ }\r
+ BytesPerOutputCharacter = 1;\r
+ }\r
+\r
+ //\r
+ // 4. Format shall not contain more than RSIZE_MAX Unicode characters or\r
+ // ASCII_RSIZE_MAX Ascii characters.\r
+ //\r
+ if ((Flags & FORMAT_UNICODE) != 0) {\r
+ if (RSIZE_MAX != 0) {\r
+ SAFE_PRINT_CONSTRAINT_CHECK ((StrnLenS ((CHAR16 *)Format, RSIZE_MAX + 1) <= RSIZE_MAX), 0);\r
+ }\r
+ BytesPerFormatCharacter = 2;\r
+ FormatMask = 0xffff;\r
+ } else {\r
+ if (ASCII_RSIZE_MAX != 0) {\r
+ SAFE_PRINT_CONSTRAINT_CHECK ((AsciiStrnLenS (Format, ASCII_RSIZE_MAX + 1) <= ASCII_RSIZE_MAX), 0);\r
+ }\r
+ BytesPerFormatCharacter = 1;\r
+ FormatMask = 0xff;\r
+ }\r
+\r