Функция RtlUnicodeStringCchCatN (ntstrsafe.h)

Функция RtlUnicodeStringCchCatN объединяет две строки, содержащиеся в UNICODE_STRING структурах, при этом ограничивая размер скопированной строки.

Синтаксис

NTSTRSAFEDDI RtlUnicodeStringCchCatN(
  [in, out] PUNICODE_STRING  DestinationString,
  [in]      PCUNICODE_STRING SourceString,
  [in]      size_t           cchToAppend
);

Параметры

[in, out] DestinationString

Указатель на структуру UNICODE_STRING . Эта структура включает буфер, который на входных данных содержит строку назначения, с которой будет сцеплена исходная строка. В выходных данных этот буфер является буфером назначения, который содержит всю результирующую строку. Исходная строка добавляется в конец строки назначения. Максимальное количество символов в строковом буфере структуры равно NTSTRSAFE_UNICODE_STRING_MAX_CCH.

[in] SourceString

Указатель на структуру UNICODE_STRING . Эта структура включает буфер, содержащий исходную строку. Эта строка будет добавлена в конец строки назначения. Максимальное количество символов в строковом буфере структуры равно NTSTRSAFE_UNICODE_STRING_MAX_CCH.

[in] cchToAppend

Максимальное число символов, добавляемых к строке, описываемой параметром DestinationString .

Возвращаемое значение

RtlUnicodeStringCchCatN возвращает одно из следующих значений NTSTATUS.

Код возврата Описание
STATUS_SUCCESS
Это состояние успешного выполнения означает, что исходные данные присутствовали, строки были сцеплены без усечения, а результирующий целевой буфер завершается со значением NULL.
STATUS_BUFFER_OVERFLOW
Это состояние предупреждения означает, что объединенная операция не завершена из-за недостатка буферного пространства. Целевой буфер содержит усеченную версию предполагаемого результата, завершаемую null.
STATUS_INVALID_PARAMETER
Это состояние ошибки означает, что функция получила недопустимый входной параметр. Дополнительные сведения см. в следующем списке.
 

RtlUnicodeStringCchCatN возвращает значение STATUS_INVALID_PARAMETER при выполнении одного из следующих действий:

  • Недопустимое содержимое структуры UNICODE_STRING .
  • Буфер назначения уже заполнен.
  • Указатель буфера имеет значение NULL.
  • Длина целевого буфера равна нулю, но присутствует исходная строка ненулевой длины.
  • Значение параметра cchToAppend больше NTSTRSAFE_UNICODE_STRING_MAX_CCH.
Сведения о проверке значений NTSTATUS см. в разделе Использование значений NTSTATUS.

Комментарии

Функция RtlUnicodeStringCchCatN использует размер буфера назначения, чтобы гарантировать, что операция объединения не записывает данные за конец буфера. Функция не завершает результирующую строку значением NULL (т. е. нулевым).

Если исходная и целевая строки перекрываются, поведение функции не определено.

Указатели SourceString и DestinationString не могут иметь значение NULL. Если необходимо обрабатывать значения указателя NULL , используйте функцию RtlUnicodeStringCchCatNEx .

Дополнительные сведения о безопасных строковых функциях см. в разделе Использование безопасных строковых функций.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows XP с пакетом обновления 1 (SP1) и более поздних версиях Windows.
Целевая платформа Персональный компьютер
Верхняя часть ntstrsafe.h (включая Ntstrsafe.h)
Библиотека Ntstrsafe.lib
IRQL Любое значение, если строки, которыми осуществляется управление, всегда находятся в памяти, в противном случае PASSIVE_LEVEL

См. также раздел

RtlUnicodeStringCbCatN

RtlUnicodeStringCchCatNEx

UNICODE_STRING