Freigeben über


RtlUTF8StringToUnicodeString-Funktion (ntifs.h)

Die RtlUTF8StringToUnicodeString-Routine konvertiert die angegebene UTF-8-Zeichenfolge in eine Unicode-Zeichenfolge.

Syntax

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

Parameter

DestinationString

Zeiger auf den Puffer, in dem die konvertierte Unicode-Ausgabezeichenfolge gespeichert ist. Das Feld DestinationString-MaximumLength> wird nur festgelegt, wenn AllocateDestinationString auf TRUE festgelegt ist.

SourceString

Zeiger auf die UTF-8-Quellzeichenfolge, die in Unicode konvertiert werden soll.

AllocateDestinationString

Boolescher Wert. Wenn true festgelegt ist, ordnet RtlUTF8StringToUnicodeString den Pufferbereich für die Zielzeichenfolge zu. Nur Speicher für DestinationString-Buffer> wird von dieser API zugeordnet. Wenn RtlUTF8StringToUnicodeString die Pufferzuordnung durchführt, muss der Aufrufer die Zuordnung des Puffers mithilfe von RtlFreeUnicodeString aufheben.

Rückgabewert

Diese Funktion gibt STATUS_SUCCESS zurück, wenn die Konvertierung erfolgreich ist. Mögliche Fehler- oder Warnungscodes sind:

Code BESCHREIBUNG
STATUS_INVALID_PARAMETERX Fehler: Einer der Parameterwerte ist ungültig.
STATUS_NO_MEMORY Fehler: RtlUTF8StringToUnicodeString konnte Pufferspeicher nicht zuordnen.
STATUS_BUFFER_OVERFLOW Warnung: Die konvertierte Zeichenfolge in DestinationString-Buffer> wird aufgrund unzureichenden Speicherplatzes im Zielpuffer abgeschnitten.
STATUS_SOME_NOT_MAPPED Warnung: Der Aufruf war erfolgreich, aber eines oder mehrere der Eingabezeichen waren ungültig und wurden vor der Konvertierung in UTF-8 vom Unicode-Ersetzungszeichen U+FFFD konvertiert.

Hinweise

Die Unicode-Ausgabezeichenfolge ist nur dann NULL-endend, wenn die UTF-8-Eingabezeichenfolge null-terminated ist.

RtlUTF8StringToUnicodeString unterstützt Unicode-Ersatzzeichenpaare. Ein ersatzführender Wortwert, auf den kein nachgestellter Wortwert folgt, oder ein nachgestellter Wortwert, dem kein führender Wortwert vorangestellt ist, wird jedoch nicht als gültiges Zeichen erkannt und durch das Unicode-Ersetzungszeichen U+FFFD ersetzt.

RtlUTF8StringToUnicodeString konvertiert die Eingabezeichenfolge weiterhin in eine Ausgabezeichenfolge, bis sie das Ende des Quellpuffers oder das Ende des Zielpuffers erreicht, je nachdem, was zuerst eintritt. Die Routine konvertiert alle NULL-Zeichen in der Eingabezeichenfolge in NULL-Zeichen in der Ausgabezeichenfolge. Wenn die Eingabezeichenfolge ein abschließendes NULL-Zeichen enthält, sich das NULL-Zeichen jedoch nicht am Ende des Quellpuffers befindet, wird die Routine über das abschließende NULL-Zeichen hinaus fortgesetzt, bis das Ende des verfügbaren Pufferbereichs erreicht ist.

Die RtlUnicodeStringToUTF8String-Routine konvertiert eine Unicode-Zeichenfolge in eine UTF-8-Zeichenfolge.

Sie können die Routinen RtlUTF8StringToUnicodeString und RtlUnicodeStringToUTF8String verwenden, um eine verlustfreie Konvertierung gültiger Textzeichenfolgen zwischen den Formaten UTF-8 und Unicode durchzuführen. Zeichenfolgen mit beliebigen Datenwerten verstoßen jedoch wahrscheinlich gegen die Unicode-Regeln für die Codierung von Ersatzzeichenpaaren, und alle Informationen, die in den ungültigen Werten in einer Eingabezeichenfolge enthalten sind, gehen verloren und können nicht aus der resultierenden Ausgabezeichenfolge wiederhergestellt werden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 10, Version 2004
Zielplattform Universell
Header ntifs.h (include Ntifs.h, Wdm.h, Ntifs.h)
Bibliothek NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL

Weitere Informationen

RtlFreeUnicodeString

RtlUnicodeStringToUTF8String