Compartilhar via


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.String

    Uma 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

SecurityCriticalAttribute

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