Функция RtlStringCchPrintfExA (ntstrsafe.h)
Функции RtlStringCchPrintfExW и RtlStringCchPrintfExA создают текстовую строку с подсчетом символов с форматированием, основанной на предоставленной информации о форматировании.
Синтаксис
NTSTRSAFEDDI RtlStringCchPrintfExA(
[out, optional] NTSTRSAFE_PSTR pszDest,
[in] size_t cchDest,
[out, optional] NTSTRSAFE_PSTR *ppszDestEnd,
[out, optional] size_t *pcchRemaining,
[in] DWORD dwFlags,
[in] NTSTRSAFE_PCSTR pszFormat,
...
);
Параметры
[out, optional] pszDest
Указатель на буфер, предоставленный вызывающим, который получает отформатированную строку, завершающуюся значением NULL. Функция создает эту строку из строки форматирования, предоставленной pszFormat и списка аргументов функции. Указатель
[in] cchDest
Размер целевого буфера в символах. Буфер должен быть достаточно большим, чтобы содержать отформатированную строку, а также завершающий символ NULL. Максимально допустимое количество символов — NTSTRSAFE_MAX_CCH. Если pszDestNULL, cchDest должно быть равно нулю.
[out, optional] ppszDestEnd
Если вызывающий объект предоставляет указатель адреса, отличного отNULL, то после завершения операции функция загружает этот адрес с указателем на результирующий null строкового конца буфера назначения.
[out, optional] pcchRemaining
Если вызывающий объект предоставляет указатель адреса, отличного отNULL, функция загружает адрес с числом неиспользуемых символов в буфере, на которые указывает pszDest, включая завершающийся символ NULL.
[in] dwFlags
Один или несколько флагов и, при необходимости, байт заливки. Флаги определяются следующим образом:
[in] pszFormat
Указатель на текстовую строку, завершающуюся значением NULL, которая содержит директивы форматирования с
...
Необязательный список аргументов, интерпретируемых функцией, на основе директив форматирования, содержащихся в строке pszFormat.
Возвращаемое значение
Функция возвращает одно из NTSTATUS значений, перечисленных в следующей таблице. Сведения о том, как протестировать значения NTSTATUS, см. в использовании значений NTSTATUS.
Возвращаемый код | Описание |
---|---|
|
Это успешном состоянии означает, что исходные данные были представлены, выходная строка была создана без усечения, а результирующий целевой буфер завершается значением NULL. |
|
Это предупреждение о состоянии означает, что операция не завершена из-за нехватки места в целевом буфере. Если STRSAFE_NO_TRUNCATION задан в dwFlags, то целевой буфер не изменяется. Если флаг не задан, целевой буфер содержит усеченную версию созданной строки. |
|
Это ошибка состоянии означает, что функция получила недопустимый входной параметр. Дополнительные сведения см. в следующем абзаце.
Функция возвращает значение STATUS_INVALID_PARAMETER, если:
|
Замечания
RtlStringCchPrintfExW и RtlStringCchPrintfExA следует использовать вместо следующих функций:
- спринтфа
- swprintf
- _snprintf
- _snwprintf
RtlStringCchPrintfExW и RtlStringCchPrintfExA добавить в функциональные возможности RtlStringCchPrintf, возвращая указатель на конец конечной строки, а также количество символов, оставшихся неиспользуемыми в этой строке. Флаги можно передать функции для дополнительного элемента управления.
Используйте RtlStringCchPrintfExW для обработки строк Юникода и RtlStringCchPrintfExA для обработки строк ANSI. Используемая форма зависит от данных, как показано в следующей таблице.
Тип строковых данных | Строковый литерал | Функция |
---|---|---|
WCHAR | L"string" | RtlStringCchPrintfExW |
char | "string" | RtlStringCchPrintfExA |
Если pszDest и pszFormat указывать на перекрывающиеся строки или любые строки аргументов перекрываются, поведение функции не определено.
Ни pszSrc, ни pszDest не могут быть NULL, если флаг STRSAFE_IGNORE_NULLS не задан, в этом случае или оба могут быть NULL. Если pszDestNULL, pszSrc должны быть NULL или указывать на пустую строку.
Дополнительные сведения о функциях безопасной строки см. в разделе Использование безопасных строковых функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows XP с пакетом обновления 1 (SP1) и более поздними версиями Windows. |
целевая платформа | Настольный |
заголовка | ntstrsafe.h (include Ntstrsafe.h) |
библиотеки |
Ntstrsafe.lib |
IRQL | Любой, если управляемые строки всегда находятся в памяти, в противном случае PASSIVE_LEVEL |