Partilhar via


Marshal Classe

Definição

Fornece um conjunto de métodos para alocar a memória não gerenciada, copiando os blocos de memória não gerenciada e convertendo tipos gerenciados em não gerenciados, bem como outros diversos métodos usados ao interagir com código não gerenciado.

public ref class Marshal abstract sealed
public ref class Marshal sealed
public static class Marshal
public sealed class Marshal
type Marshal = class
Public Class Marshal
Public NotInheritable Class Marshal
Herança
Marshal

Exemplos

O exemplo a seguir mostra como usar vários métodos definidos pela Marshal classe .

using namespace System;
using namespace System::Runtime::InteropServices;

public value struct Point
{
public:
    property int X;
    property int Y;
};
extern bool CloseHandle(IntPtr h);

int main()
{
    // Demonstrate the use of public static fields of the Marshal
    // class.
    Console::WriteLine(
        "SystemDefaultCharSize={0},SystemMaxDBCSCharSize={1}",
        Marshal::SystemDefaultCharSize,
        Marshal::SystemMaxDBCSCharSize);

    // Demonstrate the use of the SizeOf method of the Marshal
    // class.
    Console::WriteLine("Number of bytes needed by a Point object: {0}",
        Marshal::SizeOf(Point::typeid));
    Point point;
    Console::WriteLine("Number of bytes needed by a Point object: {0}",
        Marshal::SizeOf(point));

    // Demonstrate how to call GlobalAlloc and 
    // GlobalFree using the Marshal class.
    IntPtr hglobal = Marshal::AllocHGlobal(100);
    Marshal::FreeHGlobal(hglobal);

    // Demonstrate how to use the Marshal class to get the Win32
    // error code when a Win32 method fails.
    bool isCloseHandleSuccess = CloseHandle(IntPtr(-1));
    if (!isCloseHandleSuccess)
    {
        Console::WriteLine(
            "CloseHandle call failed with an error code of: {0}",
            Marshal::GetLastWin32Error());
    }
};

// This is a platform invoke prototype. SetLastError is true,
// which allows the GetLastWin32Error method of the Marshal class
// to work correctly.    
[DllImport("Kernel32", ExactSpelling = true, SetLastError = true)]
extern bool CloseHandle(IntPtr h);

// This code produces the following output.
// 
// SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
// Number of bytes needed by a Point object: 8
// Number of bytes needed by a Point object: 8
// CloseHandle call failed with an error code of: 6
using System;
using System.Text;
using System.Runtime.InteropServices;

public struct Point
{
    public Int32 x, y;
}

public sealed class App
{
    static void Main()
    {
        // Demonstrate the use of public static fields of the Marshal class.
        Console.WriteLine("SystemDefaultCharSize={0}, SystemMaxDBCSCharSize={1}",
            Marshal.SystemDefaultCharSize, Marshal.SystemMaxDBCSCharSize);

        // Demonstrate the use of the SizeOf method of the Marshal class.
        Console.WriteLine("Number of bytes needed by a Point object: {0}",
            Marshal.SizeOf(typeof(Point)));
        Point p = new Point();
        Console.WriteLine("Number of bytes needed by a Point object: {0}",
            Marshal.SizeOf(p));

        // Demonstrate how to call GlobalAlloc and
        // GlobalFree using the Marshal class.
        IntPtr hglobal = Marshal.AllocHGlobal(100);
        Marshal.FreeHGlobal(hglobal);

        // Demonstrate how to use the Marshal class to get the Win32 error
        // code when a Win32 method fails.
        Boolean f = CloseHandle(new IntPtr(-1));
        if (!f)
        {
            Console.WriteLine("CloseHandle call failed with an error code of: {0}",
                Marshal.GetLastWin32Error());
        }
    }

    // This is a platform invoke prototype. SetLastError is true, which allows
    // the GetLastWin32Error method of the Marshal class to work correctly.
    [DllImport("Kernel32", ExactSpelling = true, SetLastError = true)]
    static extern Boolean CloseHandle(IntPtr h);
}

// This code produces the following output.
//
// SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
// Number of bytes needed by a Point object: 8
// Number of bytes needed by a Point object: 8
// CloseHandle call failed with an error code of: 6
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Security.Permissions



Public Structure Point
    Public x, y As Int32
End Structure



Public NotInheritable Class App

    <SecurityPermission(SecurityAction.LinkDemand, Unrestricted:=True)> _
    Shared Sub Main()
        ' Demonstrate the use of public static fields of the Marshal class.
        Console.WriteLine("SystemDefaultCharSize={0}, SystemMaxDBCSCharSize={1}", Marshal.SystemDefaultCharSize, Marshal.SystemMaxDBCSCharSize)
        ' Demonstrate the use of the SizeOf method of the Marshal class.
        Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(GetType(Point)))
        Dim p As New Point()
        Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(p))
        ' Demonstrate how to call GlobalAlloc and 
        ' GlobalFree using the Marshal class.
        Dim hglobal As IntPtr = Marshal.AllocHGlobal(100)
        Marshal.FreeHGlobal(hglobal)
        ' Demonstrate how to use the Marshal class to get the Win32 error 
        ' code when a Win32 method fails.
        Dim f As [Boolean] = CloseHandle(New IntPtr(-1))
        If Not f Then
            Console.WriteLine("CloseHandle call failed with an error code of: {0}", Marshal.GetLastWin32Error())
        End If

    End Sub


    ' This is a platform invoke prototype. SetLastError is true, which allows 
    ' the GetLastWin32Error method of the Marshal class to work correctly.    
    <DllImport("Kernel32", ExactSpelling:=True, SetLastError:=True)> _
    Shared Function CloseHandle(ByVal h As IntPtr) As [Boolean]

    End Function
End Class


' This code produces the following output.
' 
' SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
' Number of bytes needed by a Point object: 8
' Number of bytes needed by a Point object: 8
' CloseHandle call failed with an error code of: 6

Comentários

Os static métodos definidos na Marshal classe são essenciais para trabalhar com código não gerenciado. A maioria dos métodos definidos nessa classe normalmente é usada por desenvolvedores que desejam fornecer uma ponte entre os modelos de programação gerenciados e não gerenciados. Por exemplo, o StringToHGlobalAnsi método copia caracteres ANSI de uma cadeia de caracteres especificada (no heap gerenciado) para um buffer no heap não gerenciado. Ele também aloca o heap de destino do tamanho certo.

O Common Language Runtime fornece recursos de marshaling específicos. Para obter detalhes sobre o comportamento de marshaling, consulte Marshaling de interoperabilidade.

Os Read métodos e Write na classe dão suporte ao Marshal acesso alinhado e não alinhado.

Campos

SystemDefaultCharSize

Representa o tamanho de caractere padrão do sistema; o padrão é 2 para sistemas Unicode e 1 para sistemas ANSI. Este campo é somente leitura.

SystemMaxDBCSCharSize

Representa o tamanho máximo de um tamanho DBCS (conjunto de caracteres de byte duplo), em bytes, para o sistema operacional atual. Este campo é somente leitura.

Métodos

AddRef(IntPtr)

Incrementa a contagem de referência na interface especificada.

AllocCoTaskMem(Int32)

Aloca um bloco de memória do tamanho especificado do alocador de memória de tarefas COM.

AllocHGlobal(Int32)

Aloca memória de memória não gerenciada do processo usando o número de bytes especificado.

AllocHGlobal(IntPtr)

Aloca memória de memória não gerenciada do processo usando o ponteiro para o número de bytes especificado.

AreComObjectsAvailableForCleanup()

Indica se RCWs (Runtime Callable Wrappers) de qualquer contexto estão disponíveis para limpeza.

BindToMoniker(String)

Obtém um ponteiro de interface identificado pelo moniker especificado.

ChangeWrapperHandleStrength(Object, Boolean)

Altera a intensidade do identificador CCW (COM Callable Wrapper) de um objeto.

CleanupUnusedObjectsInCurrentContext()

Notifica o tempo de execução para limpar todos os RCWs (Runtime Callable Wrappers) alocados no contexto atual.

Copy(Byte[], Int32, IntPtr, Int32)

Copia os dados de uma matriz de inteiro sem sinal unidimensional de 8 bits para um ponteiro de memória não gerenciado.

Copy(Char[], Int32, IntPtr, Int32)

Copia os dados de uma matriz de caracteres gerenciada unidimensional para um ponteiro de memória não gerenciada.

Copy(Double[], Int32, IntPtr, Int32)

Copia os dados de uma matriz de número de ponto flutuante de precisão dupla unidimensional gerenciada para um ponteiro de memória não gerenciada.

Copy(Int16[], Int32, IntPtr, Int32)

Copia os dados de uma matriz de inteiro com sinal unidimensional de 16 bits para um ponteiro de memória não gerenciada.

Copy(Int32[], Int32, IntPtr, Int32)

Copia os dados de uma matriz unidimensional de inteiro com sinal de 32 bits para um ponteiro de memória não gerenciada.

Copy(Int64[], Int32, IntPtr, Int32)

Copia os dados de uma matriz de inteiro com sinal unidimensional de 64 bits para um ponteiro de memória não gerenciada.

Copy(IntPtr, Byte[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciada para uma matriz gerenciada de inteiro sem sinal de 8 bits.

Copy(IntPtr, Char[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciada em uma matriz gerenciada de caracteres.

Copy(IntPtr, Double[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciada para uma matriz de número de ponto flutuante de precisão dupla gerenciada.

Copy(IntPtr, Int16[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciada em uma matriz gerenciada de inteiro com sinal de 16 bits.

Copy(IntPtr, Int32[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciado em uma matriz gerenciada de inteiro com sinal de 32 bits.

Copy(IntPtr, Int64[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciada em uma matriz gerenciada de inteiro com sinal de 64 bits.

Copy(IntPtr, IntPtr[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciada em uma matriz gerenciada IntPtr.

Copy(IntPtr, Single[], Int32, Int32)

Copia os dados de um ponteiro de memória não gerenciada para uma matriz de número de ponto flutuante de precisão simples gerenciada.

Copy(IntPtr[], Int32, IntPtr, Int32)

Copia os dados de uma matriz gerenciada unidimensional IntPtr para um ponteiro de memória não gerenciado.

Copy(Single[], Int32, IntPtr, Int32)

Copia os dados de uma matriz de número de ponto flutuante de precisão simples unidimensional gerenciada para um ponteiro de memória não gerenciada.

CreateAggregatedObject(IntPtr, Object)
Obsoleto.

Agrega um objeto gerenciado com o objeto COM especificado.

CreateAggregatedObject<T>(IntPtr, T)

Agrega um objeto gerenciado do tipo especificado com o objeto COM especificado.

CreateWrapperOfType(Object, Type)
Obsoleto.

Encapsula o objeto COM indicado em um objeto do tipo especificado.

CreateWrapperOfType<T,TWrapper>(T)

Encapsula o objeto COM indicado em um objeto do tipo especificado.

DestroyStructure(IntPtr, Type)
Obsoleto.

Libera todas as subestruturas para as quais o bloco de memória não gerenciada especificado aponta.

DestroyStructure<T>(IntPtr)

Libera todas as subestruturas de um tipo especificado para as quais o bloco de memória não gerenciado especificado aponta.

FinalReleaseComObject(Object)

Libera todas as referências a um RCW (Runtime Callable Wrapper) definindo sua contagem de referência como 0.

FreeBSTR(IntPtr)

Libera um BSTR usando a função SysFreeString do COM.

FreeCoTaskMem(IntPtr)

Libera um bloco de memória alocado pelo alocador de memória de tarefa COM não gerenciado.

FreeHGlobal(IntPtr)

Libera memória anteriormente alocada da memória não gerenciada do processo.

GenerateGuidForType(Type)

Retorna o GUID (identificador global exclusivo) para o tipo especificado ou gera um GUID usando o algoritmo usado pelo Exportador da Biblioteca de Tipos (Tlbexp.exe).

GenerateProgIdForType(Type)

Retorna um ProgID (identificador programático) para o tipo especificado.

GetActiveObject(String)

Obtém uma instância em execução do objeto especificado do ROT (tabela de objetos em execução).

GetComInterfaceForObject(Object, Type)
Obsoleto.

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado. O acesso à interface de consulta personalizada é habilitada por padrão.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Obsoleto.

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado. O acesso à interface de consulta personalizada é controlado pelo modo de personalização especificado.

GetComInterfaceForObject<T,TInterface>(T)

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada em um objeto do tipo especificado. O acesso à interface de consulta personalizada é habilitada por padrão.

GetComInterfaceForObjectInContext(Object, Type)

Retorna um ponteiro de interface que representa a interface especificada para um objeto, se o chamador estiver no mesmo contexto que o objeto.

GetComObjectData(Object, Object)

Recupera os dados que são referenciados pela chave especificada do objeto COM especificado.

GetComSlotForMethodInfo(MemberInfo)

Recupera o slot de tabela de função virtual (tabela v ou VTBL) para um tipo MemberInfo especificado quando esse tipo é exposto ao COM.

GetDelegateForFunctionPointer(IntPtr, Type)
Obsoleto.

Converte um ponteiro de função não gerenciada em um delegado.

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

Converte um ponteiro de função não gerenciada em um delegado de um tipo especificado.

GetEndComSlot(Type)

Recupera o último slot na tabela de função virtual (v-table ou VTBL) de um tipo quando exposto ao COM.

GetExceptionCode()
Obsoleto.

Recupera um código que identifica o tipo da exceção ocorrido.

GetExceptionForHR(Int32)

Converte o código de erro HRESULT especificado em um objeto Exception correspondente.

GetExceptionForHR(Int32, IntPtr)

Converte o código de erro HRESULT especificado em um objeto Exception correspondente, com informações de erro adicionais passadas em uma interface IErrorInfo para o objeto de exceção.

GetExceptionPointers()

Recupera uma descrição independente de computador de uma exceção e as informações sobre o estado que existia para o thread quando ocorreu a exceção.

GetFunctionPointerForDelegate(Delegate)
Obsoleto.

Converte um delegado em um ponteiro de função que pode ser chamado do código não gerenciado.

GetFunctionPointerForDelegate<TDelegate>(TDelegate)

Converte um delegado de um tipo especificado em um ponteiro de função que pode ser chamado do código não gerenciado.

GetHINSTANCE(Module)

Retorna o identificador de instância (HINSTANCE) do módulo especificado.

GetHRForException(Exception)

Converte a exceção especificada para um HRESULT.

GetHRForLastWin32Error()

Retorna o HRESULT que corresponde ao último erro incorrido pelo código Win32 executado usando Marshal.

GetIDispatchForObject(Object)

Retorna uma interface IDispatch de um objeto gerenciado.

GetIDispatchForObjectInContext(Object)

Retornará um ponteiro de interface IDispatch de um objeto gerenciado se o chamador estiver no mesmo contexto que o objeto.

GetITypeInfoForType(Type)

Retorna uma interface ITypeInfo de um tipo gerenciado.

GetIUnknownForObject(Object)

Retorna uma interface IUnknown de um objeto gerenciado.

GetIUnknownForObjectInContext(Object)

Retornará uma interface IUnknown de um objeto gerenciado se o chamador estiver no mesmo contexto que o objeto.

GetLastPInvokeError()

Obtenha o último erro de invocação de plataforma no thread atual.

GetLastPInvokeErrorMessage()

Obtém a mensagem de erro do sistema para o último código de erro PInvoke.

GetLastSystemError()

Obtém o último erro do sistema no thread atual.

GetLastWin32Error()

Retorna o código de erro retornado pela última função não gerenciada chamada com a invocação da plataforma que tem o sinalizador SetLastError definido.

GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32)
Obsoleto.

Obtém um ponteiro para uma função gerada pelo runtime que realiza marshaling de uma chamada de código gerenciado para não gerenciado.

GetMethodInfoForComSlot(Type, Int32, ComMemberType)

Recupera um objeto MemberInfo para o slot da tabela de função virtual (tabela v ou VTBL) especificado.

GetNativeVariantForObject(Object, IntPtr)
Obsoleto.

Converte um objeto em um COM VARIANT.

GetNativeVariantForObject<T>(T, IntPtr)
Obsoleto.

Converte um objeto de um tipo especificado em uma VARIANTE do COM.

GetObjectForIUnknown(IntPtr)

Retorna uma instância de um tipo que representa um objeto COM de um ponteiro para sua interface IUnknown.

GetObjectForNativeVariant(IntPtr)
Obsoleto.

Converte um COM VARIANT em um objeto.

GetObjectForNativeVariant<T>(IntPtr)
Obsoleto.

Converte uma VARIANTE do COM em um objeto de um tipo especificado.

GetObjectsForNativeVariants(IntPtr, Int32)
Obsoleto.

Converte uma matriz de VARIANTEs do COM em uma matriz de objetos.

GetObjectsForNativeVariants<T>(IntPtr, Int32)
Obsoleto.

Converte uma matriz de VARIANTEs do COM em uma matriz de um tipo especificado.

GetPInvokeErrorMessage(Int32)

Obtém a mensagem de erro do sistema para o código de erro fornecido.

GetStartComSlot(Type)

Obtém o primeiro slot na tabela de função virtual (v-table ou VTBL) que contém os métodos definidos pelo usuário.

GetThreadFromFiberCookie(Int32)
Obsoleto.

Converte um cookie de fibra na instância Thread correspondente.

GetTypedObjectForIUnknown(IntPtr, Type)

Retorna um objeto gerenciado de um tipo especificado que representa um objeto COM.

GetTypeForITypeInfo(IntPtr)

Converte um objeto ITypeInfo não gerenciado em um objeto gerenciado Type.

GetTypeFromCLSID(Guid)

Retorna o tipo associado ao CLSID (identificador de classe) especificado.

GetTypeInfoName(ITypeInfo)

Recupera o nome do tipo representado por um objeto ITypeInfo.

GetTypeInfoName(UCOMITypeInfo)
Obsoleto.

Recupera o nome do tipo representado por um objeto ITypeInfo.

GetTypeLibGuid(ITypeLib)

Recupera o LIBID (identificador de biblioteca) de uma biblioteca de tipos.

GetTypeLibGuid(UCOMITypeLib)
Obsoleto.

Recupera o LIBID (identificador de biblioteca) de uma biblioteca de tipos.

GetTypeLibGuidForAssembly(Assembly)

Recupera o LIBID (identificador de biblioteca) que é atribuído a uma biblioteca de tipos quando ela exportada do assembly especificado.

GetTypeLibLcid(ITypeLib)

Recupera o LCID de uma biblioteca de tipos.

GetTypeLibLcid(UCOMITypeLib)
Obsoleto.

Recupera o LCID de uma biblioteca de tipos.

GetTypeLibName(ITypeLib)

Recupera o nome de uma biblioteca de tipos.

GetTypeLibName(UCOMITypeLib)
Obsoleto.

Recupera o nome de uma biblioteca de tipos.

GetTypeLibVersionForAssembly(Assembly, Int32, Int32)

Recupera o número de versão de uma biblioteca de tipos que será exportada do assembly especificado.

GetUniqueObjectForIUnknown(IntPtr)

Cria um único objeto RCW (Runtime Callable Wrapper) para determinada interface IUnknown.

GetUnmanagedThunkForManagedMethodPtr(IntPtr, IntPtr, Int32)
Obsoleto.

Obtém um ponteiro para uma função gerada pelo runtime que realiza marshaling de uma chamada de código não gerenciado para gerenciado.

InitHandle(SafeHandle, IntPtr)

Inicializa o identificador subjacente de um recém-criado SafeHandle para o valor fornecido.

IsComObject(Object)

Indica se um objeto especificado representa um objeto COM.

IsTypeVisibleFromCom(Type)

Indica se um tipo é visível para clientes do COM.

NumParamBytes(MethodInfo)

Calcula o número de bytes na memória não gerenciada que são necessários para manter os parâmetros para o método especificado.

OffsetOf(Type, String)
Obsoleto.

Retorna o deslocamento de campo do formulário não gerenciado da classe gerenciada.

OffsetOf<T>(String)

Retorna o deslocamento de campo do formulário não gerenciado de uma classe gerenciada especificada.

Prelink(MethodInfo)

Executa tarefas de configuração de método de uso único sem chamar o método.

PrelinkAll(Type)

Executa uma verificação de pré-vínculo para todos os métodos em uma classe.

PtrToStringAnsi(IntPtr)

Copia todos os caracteres até o primeiro caractere nulo de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada para uma String gerenciada e amplia cada caractere para UTF-16.

PtrToStringAnsi(IntPtr, Int32)

Aloca uma String gerenciada, copia um número especificado de caracteres de uma cadeia de caracteres ANSI ou UTF-8 não gerenciada e amplia cada caractere para UTF-16.

PtrToStringAuto(IntPtr)

Aloca um String gerenciado e copia todos os caracteres até o primeiro caractere nulo de uma cadeia de caracteres armazenada na memória não gerenciada para ele.

PtrToStringAuto(IntPtr, Int32)

Aloca um String gerenciado e copia para ele o número especificado de caracteres de uma cadeia de caracteres armazenada na memória não gerenciada.

PtrToStringBSTR(IntPtr)

Aloca um String gerenciado e copia para ele uma BSTR (cadeia de caracteres binária) armazenada na memória não gerenciada.

PtrToStringUni(IntPtr)

Aloca uma String gerenciada e copia para ela todos os caracteres até o primeiro caractere nulo de uma cadeia de caracteres Unicode não gerenciada.

PtrToStringUni(IntPtr, Int32)

Aloca uma String gerenciada e copia nela um número especificado de caracteres de uma cadeia de caracteres Unicode não gerenciada.

PtrToStringUTF8(IntPtr)

Aloca uma String gerenciada e copia para ela todos os caracteres até o primeiro caractere nulo de uma cadeia de caracteres UTF-8 não gerenciada.

PtrToStringUTF8(IntPtr, Int32)

Aloca uma String gerenciada e copia para ela um número especificado de bytes de uma cadeia de caracteres UTF-8 não gerenciada.

PtrToStructure(IntPtr, Object)
Obsoleto.

Realizar o marshaling de dados de um bloco de memória não gerenciado para um objeto gerenciado.

PtrToStructure(IntPtr, Type)
Obsoleto.

Realiza marshal de dados de um bloco não gerenciado de memória para um objeto gerenciado recém-alocado do tipo especificado.

PtrToStructure<T>(IntPtr)

Realiza marshaling de dados de um bloco não gerenciado de memória para um objeto gerenciado recém-alocado do tipo especificado por um parâmetro de tipo genérico.

PtrToStructure<T>(IntPtr, T)

Realiza marshaling de dados de um bloco não gerenciado de memória para um objeto gerenciado do tipo especificado.

QueryInterface(IntPtr, Guid, IntPtr)

Solicita um ponteiro para uma interface especificada de um objeto COM.

ReadByte(IntPtr)

Lê um único byte da memória não gerenciada.

ReadByte(IntPtr, Int32)

Lê um único byte em um determinado deslocamento (ou índice) de memória não gerenciada.

ReadByte(Object, Int32)
Obsoleto.

Lê um único byte em um determinado deslocamento (ou índice) de memória não gerenciada.

ReadInt16(IntPtr)

Lê um inteiro com sinal de 16 bits da memória não gerenciada.

ReadInt16(IntPtr, Int32)

Lê um inteiro com sinal de 16 bits em um determinado deslocamento da memória não gerenciada.

ReadInt16(Object, Int32)
Obsoleto.

Lê um inteiro com sinal de 16 bits em um determinado deslocamento da memória não gerenciada.

ReadInt32(IntPtr)

Lê um inteiro com sinal de 32 bits da memória não gerenciada.

ReadInt32(IntPtr, Int32)

Lê um inteiro com sinal de 32 bits em um deslocamento fornecido na memória não gerenciada.

ReadInt32(Object, Int32)
Obsoleto.

Lê um inteiro com sinal de 32 bits em um deslocamento fornecido na memória não gerenciada.

ReadInt64(IntPtr)

Lê um inteiro com sinal de 64 bits da memória não gerenciada.

ReadInt64(IntPtr, Int32)

Lê um inteiro com sinal de 64 bits em um determinado deslocamento da memória não gerenciada.

ReadInt64(Object, Int32)
Obsoleto.

Lê um inteiro com sinal de 64 bits em um determinado deslocamento da memória não gerenciada.

ReadIntPtr(IntPtr)

Lê um inteiro de tamanho nativo de processador da memória não gerenciada.

ReadIntPtr(IntPtr, Int32)

Lê um inteiro de tamanho nativo de processador em um determinado deslocamento da memória não gerenciada.

ReadIntPtr(Object, Int32)
Obsoleto.

Lê um inteiro dimensionado nativo do processador da memória não gerenciada.

ReAllocCoTaskMem(IntPtr, Int32)

Redimensiona um bloco de memória alocado anteriormente com AllocCoTaskMem(Int32).

ReAllocHGlobal(IntPtr, IntPtr)

Redimensiona um bloco de memória alocado anteriormente com AllocHGlobal(IntPtr).

Release(IntPtr)

Diminui a contagem de referência na interface especificada.

ReleaseComObject(Object)

Diminui a contagem de referência do RCW (Runtime Callable Wrapper) associado ao objeto COM especificado.

ReleaseThreadCache()
Obsoleto.

Libera o cache de thread.

SecureStringToBSTR(SecureString)

Aloca uma BSTR (cadeia de caracteres binária) não gerenciada copia os conteúdos de um objeto SecureString gerenciado para ela.

SecureStringToCoTaskMemAnsi(SecureString)

Copia o conteúdo de um objeto SecureString gerenciado para um bloco de memória alocado do alocador de tarefas COM não gerenciado.

SecureStringToCoTaskMemUnicode(SecureString)

Copia o conteúdo de um objeto SecureString gerenciado para um bloco de memória alocado do alocador de tarefas COM não gerenciado.

SecureStringToGlobalAllocAnsi(SecureString)

Copia o conteúdo de um SecureString gerenciado para a memória não gerenciada, convertendo em formato ANSI durante a cópia.

SecureStringToGlobalAllocUnicode(SecureString)

Copia o conteúdo de um objeto SecureString gerenciado para uma memória não gerenciada.

SetComObjectData(Object, Object, Object)

Define os dados referenciados pela chave especificada no objeto COM especificado.

SetLastPInvokeError(Int32)

Define o último erro de invocação de plataforma no thread atual.

SetLastSystemError(Int32)

Define o último erro do sistema no thread atual.

SizeOf(Object)
Obsoleto.

Retorna o tamanho não gerenciado de um objeto em bytes.

SizeOf(Type)
Obsoleto.

Retorna o tamanho de um tipo não gerenciado em bytes.

SizeOf<T>()

Retorna o tamanho de um tipo não gerenciado em bytes.

SizeOf<T>(T)

Retorna o tamanho não gerenciado de um objeto de um tipo especificado em bytes.

StringToBSTR(String)

Aloca um BSTR e copia o conteúdo de um String gerenciado para ele.

StringToCoTaskMemAnsi(String)

Copia o conteúdo de um String gerenciado para um bloco de memória alocado do alocador de tarefas COM não gerenciado.

StringToCoTaskMemAuto(String)

Copia o conteúdo de um String gerenciado para um bloco de memória alocado do alocador de tarefas COM não gerenciado.

StringToCoTaskMemUni(String)

Copia o conteúdo de um String gerenciado para um bloco de memória alocado do alocador de tarefas COM não gerenciado.

StringToCoTaskMemUTF8(String)

Copia o conteúdo de um String gerenciado para um bloco de memória alocado do alocador de tarefas COM não gerenciado.

StringToHGlobalAnsi(String)

Copia o conteúdo de um String gerenciado para a memória não gerenciada, convertendo em formato ANSI durante a cópia.

StringToHGlobalAuto(String)

Copia o conteúdo de um String gerenciado para a memória não gerenciada, convertendo para formato ANSI, se necessário.

StringToHGlobalUni(String)

Copia o conteúdo de um String gerenciado para uma memória não gerenciada.

StructureToPtr(Object, IntPtr, Boolean)
Obsoleto.

Realizar o marshaling de dados de um objeto gerenciado para um bloco não gerenciado de memória.

StructureToPtr<T>(T, IntPtr, Boolean)

Realiza marshaling de dados de um objeto gerenciado de um tipo especificado para um bloco de memória não gerenciado.

ThrowExceptionForHR(Int32)

Aciona uma exceção com uma valor HRESULT de falha específico.

ThrowExceptionForHR(Int32, IntPtr)

Gera uma exceção com uma falha específica HRESULT com base na interface IErrorInfo especificada.

UnsafeAddrOfPinnedArrayElement(Array, Int32)
Obsoleto.

Obtém o endereço do elemento no índice especificado na matriz especificada.

UnsafeAddrOfPinnedArrayElement<T>(T[], Int32)

Obtém o endereço do elemento no índice especificado em uma matriz de um tipo especificado.

WriteByte(IntPtr, Byte)

Grava um valor de byte único na memória não gerenciada.

WriteByte(IntPtr, Int32, Byte)

Grava um valor de byte único na memória não gerenciada em um deslocamento especificado.

WriteByte(Object, Int32, Byte)
Obsoleto.

Grava um valor de byte único na memória não gerenciada em um deslocamento especificado.

WriteInt16(IntPtr, Char)

Grava um caractere como um valor inteiro de 16 bits na memória não gerenciada.

WriteInt16(IntPtr, Int16)

Grava um valor inteiro de 16 bits na memória não gerenciada.

WriteInt16(IntPtr, Int32, Char)

Grava um valor inteiro com sinal de 16 bits na memória não gerenciada em um deslocamento especificado.

WriteInt16(IntPtr, Int32, Int16)

Grava um valor inteiro com sinal de 16 bits na memória não gerenciada em um deslocamento especificado.

WriteInt16(Object, Int32, Char)
Obsoleto.

Grava um valor inteiro com sinal de 16 bits na memória não gerenciada em um deslocamento especificado.

WriteInt16(Object, Int32, Int16)
Obsoleto.

Grava um valor inteiro com sinal de 16 bits na memória não gerenciada em um deslocamento especificado.

WriteInt32(IntPtr, Int32)

Grava um valor inteiro com sinal de 32 bits na memória não gerenciada.

WriteInt32(IntPtr, Int32, Int32)

Grava um valor inteiro com sinal de 32 bits na memória não gerenciada em um deslocamento especificado.

WriteInt32(Object, Int32, Int32)
Obsoleto.

Grava um valor inteiro com sinal de 32 bits na memória não gerenciada em um deslocamento especificado.

WriteInt64(IntPtr, Int32, Int64)

Grava um valor inteiro com sinal de 64 bits na memória não gerenciada em um deslocamento especificado.

WriteInt64(IntPtr, Int64)

Grava um valor inteiro com sinal de 64 bits na memória não gerenciada.

WriteInt64(Object, Int32, Int64)
Obsoleto.

Grava um valor inteiro com sinal de 64 bits na memória não gerenciada em um deslocamento especificado.

WriteIntPtr(IntPtr, Int32, IntPtr)

Grava um valor de inteiro de tamanho nativo de processador na memória não gerenciada em um deslocamento especificado.

WriteIntPtr(IntPtr, IntPtr)

Grava um valor de inteiro de tamanho nativo de processador na memória não gerenciada.

WriteIntPtr(Object, Int32, IntPtr)
Obsoleto.

Grava um valor de inteiro de tamanho nativo de processador na memória não gerenciada.

ZeroFreeBSTR(IntPtr)

Libera um ponteiro BSTR que foi alocado usando o método SecureStringToBSTR(SecureString).

ZeroFreeCoTaskMemAnsi(IntPtr)

Libera um ponteiro de cadeia de caracteres não gerenciado alocado usando o método SecureStringToCoTaskMemAnsi(SecureString).

ZeroFreeCoTaskMemUnicode(IntPtr)

Libera um ponteiro de cadeia de caracteres não gerenciado alocado usando o método SecureStringToCoTaskMemUnicode(SecureString).

ZeroFreeCoTaskMemUTF8(IntPtr)

Libera um ponteiro de cadeia de caracteres não gerenciado alocado usando o método StringToCoTaskMemUTF8(String).

ZeroFreeGlobalAllocAnsi(IntPtr)

Libera um ponteiro de cadeia de caracteres não gerenciado alocado usando o método SecureStringToGlobalAllocAnsi(SecureString).

ZeroFreeGlobalAllocUnicode(IntPtr)

Libera um ponteiro de cadeia de caracteres não gerenciado alocado usando o método SecureStringToGlobalAllocUnicode(SecureString).

Aplica-se a