Compartir a través de


Función RtlUTF8StringToUnicodeString (ntifs.h)

La rutina RtlUTF8StringToUnicodeString convierte la cadena UTF-8 especificada en una cadena Unicode.

Sintaxis

NTSYSAPI NTSTATUS RtlUTF8StringToUnicodeString(
  PUNICODE_STRING DestinationString,
  PUTF8_STRING    SourceString,
  BOOLEAN         AllocateDestinationString
);

Parámetros

DestinationString

Puntero al búfer en el que se almacena la cadena Unicode de salida convertida. El campo DestinationString-MaximumLength> solo se establece si AllocateDestinationString es TRUE.

SourceString

Puntero a la cadena de origen UTF-8 que se va a convertir en Unicode.

AllocateDestinationString

Valor booleano. Cuando se establece TRUE, RtlUTF8StringToUnicodeString asigna el espacio de búfer para la cadena de destino. Esta API asigna solo el almacenamiento para DestinationString-Buffer>. Si RtlUTF8StringToUnicodeString realiza la asignación del búfer, el autor de la llamada debe desasignar el búfer mediante RtlFreeUnicodeString.

Valor devuelto

Esta función devuelve STATUS_SUCCESS cuando la conversión se realiza correctamente. Entre los posibles códigos de error o advertencia se incluyen:

Código Descripción
STATUS_INVALID_PARAMETERX Error: uno de los valores de parámetro no es válido.
STATUS_NO_MEMORY Error: RtlUTF8StringToUnicodeString no pudo asignar espacio de búfer.
STATUS_BUFFER_OVERFLOW Advertencia: la cadena convertida en DestinationString-Buffer> se trunca debido a un espacio insuficiente en el búfer de destino.
STATUS_SOME_NOT_MAPPED Advertencia: La llamada se realizó correctamente, pero uno o varios de los caracteres de entrada no eran válidos y fueron convertidos por el carácter de reemplazo Unicode, U+FFFD, antes de convertirse en UTF-8.

Comentarios

La cadena de salida Unicode solo termina en null si la cadena de entrada UTF-8 está terminada en null.

RtlUTF8StringToUnicodeString admite pares suplentes Unicode. Sin embargo, un valor de palabra inicial suplente que no va seguido de un valor de palabra final o un valor de palabra final que no está precedido por un valor de palabra inicial, no se reconoce como un carácter válido y se reemplaza por el carácter de reemplazo Unicode, U+FFFD.

RtlUTF8StringToUnicodeString continúa convirtiendo la cadena de entrada en una cadena de salida hasta que llega al final del búfer de origen o al final del búfer de destino, lo que ocurra primero. La rutina convierte los caracteres NULL de la cadena de entrada en caracteres NULL en la cadena de salida. Si la cadena de entrada contiene un carácter nulo de terminación, pero el carácter null no se encuentra al final del búfer de origen, la rutina continúa después del carácter nulo de terminación hasta que llega al final del espacio de búfer disponible.

La rutina RtlUnicodeStringToUTF8String convierte una cadena Unicode en una cadena UTF-8.

Puede usar las rutinas RtlUTF8StringToUnicodeString y RtlUnicodeStringToUTF8String para realizar una conversión sin pérdida de cadenas de texto válidas entre los formatos UTF-8 y Unicode. Sin embargo, es probable que las cadenas que tienen valores de datos arbitrarios infrinjan las reglas Unicode para codificar pares suplentes, y cualquier información contenida en los valores no válidos de una cadena de entrada se pierde y no se puede recuperar de la cadena de salida resultante.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 2004
Plataforma de destino Universal
Encabezado ntifs.h (incluya Ntifs.h, Wdm.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Consulte también

RtlFreeUnicodeString

RtlUnicodeStringToUTF8String