Функция RtlStringCchVPrintfW (ntstrsafe.h)
RtlStringCchVPrintfW и функции RtlStringCchVPrintfA создают текстовую строку с подсчетом символов с форматированием, основанной на предоставленной информации о форматировании.
Синтаксис
NTSTRSAFEDDI RtlStringCchVPrintfW(
[out] NTSTRSAFE_PWSTR pszDest,
[in] size_t cchDest,
[in] NTSTRSAFE_PCWSTR pszFormat,
[in] va_list argList
);
Параметры
[out] pszDest
Указатель на буфер, предоставленный вызывающим, который получает отформатированную строку, завершающуюся значением NULL. Функция создает эту строку как из строки форматирования, предоставленной pszFormat, так и аргументов, предоставляемых argList.
[in] cchDest
Размер целевого буфера в символах. Буфер должен быть достаточно большим, чтобы содержать отформатированную строку, а также завершающий символ NULL. Максимально допустимое количество символов — NTSTRSAFE_MAX_CCH.
[in] pszFormat
Указатель на текстовую строку, завершающуюся значением NULL, которая содержит директивы форматирования с printf.
[in] argList
Список аргументов va_listтипа. Аргументы, содержащиеся в списке аргументов, будут интерпретированы с помощью строки форматирования, предоставленной pszFormat.
Возвращаемое значение
Функция возвращает одно из значений NTSTATUS, перечисленных в следующей таблице. Сведения об тестировании значений NTSTATUS см. в использование значений NTSTATUS.
Возвращаемый код | Описание |
---|---|
|
Это успешном состоянии означает, что исходные данные были представлены, выходная строка была создана без усечения, а результирующий целевой буфер завершается значением NULL. |
|
Это предупреждение о состоянии означает, что операция не завершена из-за нехватки места в целевом буфере. Буфер назначения содержит усеченную версию созданной строки. |
|
Это ошибка состоянии означает, что функция получила недопустимый входной параметр. Дополнительные сведения см. в следующем абзаце.
Функция возвращает значение STATUS_INVALID_PARAMETER, если:
|
Замечания
RtlStringCchVPrintfW и RtlStringCchVPrintfA следует использовать вместо следующих функций:
- vsprintf
- vswprintf
- _vsnprintf
- _vsnwprintf
Дополнительные сведения о списках аргументов va_listтипа см. в документации по пакету SDK для Microsoft Windows.
Используйте RtlStringCchVPrintfW для обработки строк Юникода и RtlStringCchVPrintfA для обработки строк ANSI. Используемая форма зависит от данных, как показано в следующей таблице.
Тип строковых данных | Строковый литерал | Функция |
---|---|---|
WCHAR | L"string" | RtlStringCchVPrintfW |
char | "string" | RtlStringCchVPrintfA |
Если pszDest и pszFormat указывать на перекрывающиеся строки или если строки аргументов перекрываются, поведение функции не определено.
Ни pszFormat, ни pszDest нельзя NULL. Если необходимо обрабатывать значения указателя строки NULL, используйте RtlStringCchVPrintfEx.
Дополнительные сведения о функциях безопасной строки см. в разделе Использование безопасных строковых функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Windows XP с пакетом обновления 1 (SP1) и более поздними версиями Windows. |
целевая платформа | Настольный |
заголовка | ntstrsafe.h (include Ntstrsafe.h) |
библиотеки | Ntstrsafe.lib |
IRQL | Любой, если управляемые строки всегда находятся в памяти, в противном случае PASSIVE_LEVEL |