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