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

Функция RtlUnicodeStringCchCopyStringN копирует строку в структуру UNICODE_STRING , ограничивая размер скопированной строки.

Синтаксис

NTSTRSAFEDDI RtlUnicodeStringCchCopyStringN(
  [out] PUNICODE_STRING  DestinationString,
  [in]  NTSTRSAFE_PCWSTR pszSrc,
  [in]  size_t           cchToCopy
);

Параметры

[out] DestinationString

Указатель на структуру UNICODE_STRING , получающую скопированную строку. Строка, на которую указывает параметр pszSrc (за исключением завершающего значения NULL), копируется в буфер, на который указывает UNICODE_STRING структура параметра DestinationString. Максимальное количество символов в строке — NTSTRSAFE_UNICODE_STRING_MAX_CCH.

[in] pszSrc

Указатель на копируемые строки.

[in] cchToCopy

Количество символов, копируемых из источника в место назначения.

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

RtlUnicodeStringCchCopyStringN возвращает один из следующих ntstatus.

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

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

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

Комментарии

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

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

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

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

Требования

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

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

RtlUnicodeStringCchCopyN

RtlUnicodeStringCchCopyNEx

UNICODE_STRING