Marshal.StringToHGlobalUni(String) Methode

Definition

Kopiert den Inhalt eines verwalteten String in den nicht verwalteten Speicher.

public:
 static IntPtr StringToHGlobalUni(System::String ^ s);
[System.Security.SecurityCritical]
public static IntPtr StringToHGlobalUni (string s);
public static IntPtr StringToHGlobalUni (string? s);
public static IntPtr StringToHGlobalUni (string s);
[<System.Security.SecurityCritical>]
static member StringToHGlobalUni : string -> nativeint
static member StringToHGlobalUni : string -> nativeint
Public Shared Function StringToHGlobalUni (s As String) As IntPtr

Parameter

s
String

Eine zu kopierende verwaltete Zeichenfolge.

Gibt zurück

IntPtr

nativeint

Die Adresse im nicht verwalteten Arbeitsspeicher, an die s kopiert wurde, oder 0, wenn s gleich null ist.

Attribute

Ausnahmen

Die Methode konnte nicht genügend Speicher für den systemeigenen Heap belegen.

Der s-Parameter übersteigt die vom Betriebssystem zugelassene maximale Länge.

Hinweise

StringToHGlobalUni ist nützlich für benutzerdefiniertes Marshalling oder für die Verwendung beim Mischen von verwaltetem und nicht verwaltetem Code. Da diese Methode den nicht verwalteten Arbeitsspeicher zuweist, der für eine Zeichenfolge erforderlich ist, geben Sie immer den Arbeitsspeicher frei, indem Sie aufrufen FreeHGlobal. Diese Methode bietet die entgegengesetzte Funktionalität von Marshal.PtrToStringUni.

Diese Methode kopiert eingebettete NULL-Zeichen und enthält ein beendendes NULL-Zeichen.

Diese API spiegelt die Windows-Definition von Unicode wider, bei der es sich um eine UTF-16-Codierung mit 2 Byte handelt. Auf vielen Nicht-Windows-Plattformen ist der wchar_t Datentyp 4 Bytes, nicht 2 Bytes. Wenden Sie sich an Ihren Compiler, um zu überprüfen, ob wchar_t stattdessen verwendet werden kann oder char16_t verwendet werden soll.

Gilt für:

Weitere Informationen