Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции RtlStringCchPrintfW и RtlStringCchPrintfA создают текстовую строку с подсчетом символов с форматированием на основе предоставленных сведений о форматировании.
Синтаксис
NTSTRSAFEDDI RtlStringCchPrintfA(
[out] NTSTRSAFE_PSTR pszDest,
[in] size_t cchDest,
[in] NTSTRSAFE_PCSTR pszFormat,
...
);
Параметры
[out] pszDest
Указатель на буфер, предоставленный вызывающим, который получает отформатированную строку, завершающуюся значением NULL. Функция создает эту строку из строки форматирования, предоставленной pszFormat и списка аргументов функции.
[in] cchDest
Размер целевого буфера в символах. Буфер должен быть достаточно большим, чтобы содержать отформатированную строку, а также завершающий символ NULL. Максимально допустимое число символов — NTSTRSAFE_MAX_CCH.
[in] pszFormat
Указатель на текстовую строку, завершающую значение NULL, которая содержит -styled директив форматирования.
...
Список аргументов, интерпретируемых функцией, на основе директив форматирования, содержащихся в строке pszFormat.
Возвращаемое значение
Функция возвращает одно из значений NTSTATUS, перечисленных в следующей таблице. Сведения об тестировании значений NTSTATUS см. в использование значений NTSTATUS.
| Возвращаемый код | Описание |
|---|---|
|
Это успешно состояния означает, что исходные данные были представлены, строка была создана без усечения, а результирующий целевой буфер завершается значением NULL. |
|
Это предупреждение о состоянии означает, что операция не завершена из-за нехватки места в целевом буфере. Буфер назначения содержит усеченную версию выходной строки. |
|
Это ошибка состоянии означает, что функция получила недопустимый входной параметр. Дополнительные сведения см. в следующем абзаце.
Функция возвращает значение STATUS_INVALID_PARAMETER, если:
|
Замечания
RtlStringCchPrintfW и RtlStringCchPrintfA следует использовать вместо следующих функций:
- спринтфа
- swprintf
- _snprintf
- _snwprintf
Используйте RtlStringCchPrintfW для обработки строк Юникода и RtlStringCchPrintfA для обработки строк ANSI. Используемая форма зависит от данных.
| Тип строковых данных | Строковый литерал | Функция |
|---|---|---|
| WCHAR | L"string" | RtlStringCchPrintfW |
| char | "string" | RtlStringCchPrintfA |
Если pszDest и pszFormat указывать на перекрывающиеся строки или если какие-либо строки аргументов перекрываются, поведение функции не определено.
Ни pszFormat, ни pszDest нельзя NULL. Если необходимо обработать значения указателя строки NULL, используйте RtlStringCchPrintfEx.
Примеры
В следующем примере показано простое использование RtlStringCchPrintfW с четырьмя аргументами.
WCHAR pszDest[30];
size_t cchDest = 30;
LPCWSTR pszFormat = L"%s %d + %d = %d.";
WCHAR* pszTxt = L"The answer is";
NTSTATUS status =
RtlStringCchPrintfW(pszDest, cchDest, pszFormat, pszTxt, 1, 2, 3);
Результирующая строка — "Ответ равен 1 + 2 = 3". Он содержится в буфере по pszDest.
Дополнительные сведения о функциях безопасной строки см. в разделе Использование безопасных строковых функций.
Требования
| Требование | Ценность |
|---|---|
| минимальные поддерживаемые клиентские | Доступно начиная с Windows XP с пакетом обновления 1 (SP1). |
| целевая платформа | Настольный |
| заголовка | ntstrsafe.h (include Ntstrsafe.h) |
| библиотеки | Ntstrsafe.lib |
| IRQL | Любой, если управляемые строки всегда находятся в памяти, в противном случае PASSIVE_LEVEL |