Функция RtlMultiByteToUnicodeN (ntifs.h)

Подпрограмма RtlMultiByteToUnicodeN преобразует указанную исходную строку в строку Юникода, используя текущую системную кодовую страницу ANSI (ACP). Исходная строка не обязательно является многобайтовой кодировкой.

Синтаксис

NTSYSAPI NTSTATUS RtlMultiByteToUnicodeN(
  [out]           PWCH       UnicodeString,
  [in]            ULONG      MaxBytesInUnicodeString,
  [out, optional] PULONG     BytesInUnicodeString,
  [in]            const CHAR *MultiByteString,
  [in]            ULONG      BytesInMultiByteString
);

Параметры

[out] UnicodeString

Указатель на буфер, выделенный вызывающим объектом, который получает переведенную строку. Буфер ЮникодString не должен перекрываться с буфером MultiByteString.

[in] MaxBytesInUnicodeString

Максимальное число байтов, записываемых в ЮникодString. Если это значение приводит к усечению переведенной строки, RtlMultiByteToUnicodeN не возвращает состояние ошибки.

[out, optional] BytesInUnicodeString

Указатель на переменную, выделенную вызывающим объектом, которая получает длину переведенной строки в байтах. Этот параметр может принимать значение NULL.

[in] MultiByteString

Указатель на строку для перевода.

[in] BytesInMultiByteString

Размер строки в байтах в MultiByteString.

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

RtlMultiByteToUnicodeN возвращает STATUS_SUCCESS.

Комментарии

RtlMultiByteToUnicodeN поддерживает только предварительно скомпилированные символы Юникода, сопоставленные с текущей системной кодовой страницей ANSI, установленной при загрузке системы.

Хотя BytesInUnicodeString является необязательным и может иметь значение NULL, вызывающие стороны должны предоставить для него хранилище, так как полученную длину можно использовать для определения успешности преобразования.

Если текущая системная кодовая страница определяет однобайтовый набор символов, все символы ANSI в диапазоне 0x00 0x7f просто расширяются нулем в соответствующей строке Юникода для ускорения операции преобразования. Значение ANSI, 0x5c на такой кодовой странице, преобразуется в символ обратной косой черты, даже если текущая однобайтовая кодовая страница определяет этот символ как знак иены.

RtlMultiByteToUnicodeN не изменяет исходную строку, если указатели UnicodeString и MultiByteString не являются эквивалентными. Возвращаемая строка Юникода не заканчивается null.

Как и RtlMultiByteToUnicodeSize, RtlMultiByteToUnicodeN поддерживает только предварительно скомпилированные символы Юникода, которые сопоставлены с текущей системной кодовой страницей ANSI, установленной при загрузке системы.

Дополнительные сведения о других процедурах обработки строк см. в разделе Процедуры библиотеки времени выполнения (RTL).

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe (режим ядра); Ntdll.dll (пользовательский режим)
IRQL < DISPATCH_LEVEL

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

RtlMultiByteToUnicodeSize

RtlUnicodeToMultiByteN