Marshal.StringToHGlobalUni(String) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Kopiuje zawartość zarządzanej String do niezarządzanej pamięci.
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
Parametry
- s
- String
Zarządzany ciąg do skopiowania.
Zwraca
nativeint
Adres, w pamięci niezarządzanej, do miejsca, w którym s
został skopiowany, lub 0, jeśli s
to null
.
- Atrybuty
Wyjątki
Metoda nie może przydzielić wystarczającej ilości natywnej pamięci sterty.
Parametr s
przekracza maksymalną długość dozwoloną przez system operacyjny.
Uwagi
StringToHGlobalUni jest przydatne w przypadku niestandardowego marshalingu lub do użycia podczas mieszania zarządzanego i niezarządzanych kodu. Ponieważ ta metoda przydziela niezarządzaną pamięć wymaganą dla ciągu, zawsze zwalnia pamięć przez wywołanie metody FreeHGlobal. Ta metoda zapewnia odwrotną funkcjonalność programu Marshal.PtrToStringUni.
Ta metoda kopiuje osadzone znaki null i zawiera znak o wartości null zakończenia.
Ten interfejs API odzwierciedla definicję systemu Windows unicode, która jest kodowaniem UTF-16 2-bajtowym. Na wielu platformach wchar_t
innych niż Windows typ danych to 4 bajty, a nie 2 bajty. Skonsultuj się z kompilatorem, aby potwierdzić, czy wchar_t
można go użyć lub char16_t
zamiast tego należy użyć.