Marshal.StringToHGlobalAuto-Methode: (String)
Veröffentlicht: Oktober 2016
Kopiert den Inhalt eines verwalteten String in den nicht verwalteten Speicher und konvertiert ihn ggf. in das ANSI-Format.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
[SecurityCriticalAttribute]
public static IntPtr StringToHGlobalAuto(
string s
)
public:
[SecurityCriticalAttribute]
static IntPtr StringToHGlobalAuto(
String^ s
)
[<SecurityCriticalAttribute>]
static member StringToHGlobalAuto :
s:string -> nativeint
<SecurityCriticalAttribute>
Public Shared Function StringToHGlobalAuto (
s As String
) As IntPtr
Parameter
s
Type: System.StringEine zu kopierende verwaltete Zeichenfolge.
Rückgabewert
Type: System.IntPtr
Die Adresse im nicht verwalteten Arbeitsspeicher, an die die Zeichenfolge kopiert wurde, oder 0, wenn s gleich null ist.
Ausnahmen
Exception | Condition |
---|---|
OutOfMemoryException | Es ist nicht genügend Arbeitsspeicher verfügbar. |
Hinweise
StringToHGlobalAuto eignet sich für die benutzerdefinierten Marshalling oder beim Kombinieren von verwaltetem und nicht verwaltetem Code. Da diese Methode den nicht verwalteten Speicher für eine Zeichenfolge erforderlich belegt wird, müssen Sie den Speicher immer freigeben, durch Aufrufen von FreeHGlobal. Diese Methode stellt die Umkehrfunktionen der Marshal.PtrToStringAuto.
Diese Methode kopiert eingebetteten Null-Zeichen und ein abschließendes Null-Zeichen enthält.
Beispiele
Im folgenden Beispiel wird veranschaulicht, wie der Inhalt eines verwalteten konvertiert String -Klasse in nicht verwalteten Speicher und dann den nicht verwalteten Speicher anschließend verwerfen.
using namespace System;
using namespace System::Runtime::InteropServices;
int main()
{
// Create a managed string.
String^ managedString = "Hello unmanaged world (from the managed world).";
// Marshal the managed string to unmanaged memory.
char* stringPointer = (char*) Marshal::StringToHGlobalAuto(managedString).ToPointer();
// Pass the string to an unmanaged API.
// Always free the unmanaged string.
Marshal::FreeHGlobal(IntPtr(stringPointer));
return 0;
}
Sicherheit
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Versionsinformationen
.NET Framework
Verfügbar seit 1.1
Siehe auch
PtrToStringAuto
Marshal-Klasse
System.Runtime.InteropServices-Namespace
Zurück zum Anfang