Функция RtlUnicodeStringCbCatN (ntstrsafe.h)
Функция RtlUnicodeStringCbCatN объединяет две строки, содержащиеся в UNICODE_STRING структурах, при этом ограничивает размер скопированной строки.
Синтаксис
NTSTRSAFEDDI RtlUnicodeStringCbCatN(
[in, out] PUNICODE_STRING DestinationString,
[in] PCUNICODE_STRING SourceString,
[in] size_t cbToAppend
);
Параметры
[in, out] DestinationString
Указатель на структуру UNICODE_STRING . Эта структура включает буфер, который на входных данных содержит конечную строку, с которой будет сцеплена исходная строка. На выходе этот буфер является целевым буфером, который содержит всю результирующую строку. Исходная строка добавляется в конец строки назначения. Максимальное число байтов в строковом буфере структуры равно NTSTRSAFE_UNICODE_STRING_MAX_CCH * sizeof(WCHAR).
[in] SourceString
Указатель на структуру UNICODE_STRING . Эта структура включает буфер, содержащий исходную строку. Эта строка будет добавлена в конец строки назначения. Максимальное число байтов в строковом буфере структуры равно NTSTRSAFE_UNICODE_STRING_MAX_CCH * sizeof(WCHAR).
[in] cbToAppend
Максимальное число байтов для добавления к строке, описываемой параметром DestinationString .
Возвращаемое значение
RtlUnicodeStringCbCatN возвращает одно из следующих значений NTSTATUS.
Код возврата | Описание |
---|---|
|
Это состояние успешного выполнения означает, что исходные данные присутствовали, строки были сцеплены без усечения, а результирующий буфер назначения завершается null. |
|
Это состояние предупреждения означает, что операция объединения не завершилась из-за нехватки буферного пространства. Буфер назначения содержит усеченную версию предполагаемого результата, завершаемую null. |
|
Это состояние ошибки означает, что функция получила недопустимый входной параметр. Дополнительные сведения см. в следующем списке. |
RtlUnicodeStringCbCatN возвращает значение STATUS_INVALID_PARAMETER при возникновении одного из следующих действий:
- Содержимое структуры UNICODE_STRING недопустимо.
- Буфер назначения уже заполнен.
- Указатель буфера имеет значение NULL.
- Длина буфера назначения равна нулю, но присутствует исходная строка ненулевой длины.
- Значение параметра cbToAppend больше NTSTRSAFE_UNICODE_STRING_MAX_CCH * sizeof(WCHAR).
Комментарии
Функция RtlUnicodeStringCbCatN использует размер буфера назначения, чтобы гарантировать, что операция объединения не записывает данные за конец буфера. Функция не завершает результирующую строку значением null (т. е. нулевым).
Если исходная и целевая строки перекрываются, поведение функции не определено.
Указатели SourceString и DestinationString не могут иметь значение NULL. Если необходимо обрабатывать значения указателя NULL , используйте функцию RtlUnicodeStringCbCatNEx .
Дополнительные сведения о функциях безопасных строк см. в разделе Использование безопасных строковых функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в Windows XP с пакетом обновления 1 (SP1) и более поздних версиях Windows. |
Целевая платформа | Персональный компьютер |
Верхняя часть | ntstrsafe.h (включая Ntstrsafe.h) |
Библиотека | Ntstrsafe.lib |
IRQL | Любой, если строки, которыми осуществляется управление, всегда находятся в памяти, в противном случае PASSIVE_LEVEL |