Функция 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 |