Método Marshal.StringToHGlobalAuto (String)
Dica
The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.
Copia o conteúdo de um String gerenciado para a memória não gerenciada, convertendo para formato ANSI, se necessário.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (em mscorlib.dll)
Sintaxe
[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
Parâmetros
s
Type: System.StringUma cadeia de caracteres gerenciada a ser copiada.
Valor Retornado
Type: System.IntPtr
O endereço, na memória não gerenciada, para o qual a cadeia de caracteres foi copiada ou 0, se s for null.
Exceções
Exception | Condition |
---|---|
OutOfMemoryException | Não há memória suficiente disponível. |
Comentários
StringToHGlobalAutoé útil para empacotamento personalizado ou para uso quando a mistura de código gerenciado e não gerenciado. Como esse método aloca a memória não gerenciada, necessária para uma cadeia de caracteres, sempre liberar a memória chamando FreeHGlobal. Esse método fornece a funcionalidade oposta do Marshal.PtrToStringAuto.
Esse método copia caracteres nulos inseridos e inclui um caractere null de terminação.
Exemplos
O exemplo a seguir demonstra como converter o conteúdo de um gerenciado String classe a memória não gerenciada e, em seguida, descarte a memória não gerenciada quando terminar.
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;
}
Segurança
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Informações de Versão
.NET Framework
Disponível desde 1.1
Confira Também
PtrToStringAuto
Classe Marshal
Namespace System.Runtime.InteropServices
Retornar ao início