Marshal Classe

Definição

Fornece uma coleção de métodos para alocar memória não gerenciada, copiar blocos de memória não gerenciados e converter gerenciados em tipos não gerenciados, bem como outros métodos diversos 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 classe Marshal.

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 métodos static definidos na classe Marshal 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 método StringToHGlobalAnsi 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 de marshaling de interoperabilidade.

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

Campos

SystemDefaultCharSize

Representa o tamanho do caractere padrão no 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 bytes 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 de tamanho especificado do alocador de memória da tarefa COM.

AllocHGlobal(Int32)

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

AllocHGlobal(IntPtr)

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

AreComObjectsAvailableForCleanup()

Indica se os wrappers callable (RCWs) de runtime 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 força do CCW (Com Callable Wrapper) de de um objeto.

CleanupUnusedObjectsInCurrentContext()

Notifica o runtime para limpar todos os RCWs (Wrappers Callable Wrappers) do Runtime alocados no contexto atual.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 especificado em um objeto do tipo especificado.

CreateWrapperOfType<T,TWrapper>(T)

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

DestroyStructure(IntPtr, Type)
Obsoleto.

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

DestroyStructure<T>(IntPtr)

Libera todas as subestruturas de um tipo especificado para o qual 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 usando a função com SysFreeString.

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 alocada anteriormente 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 de 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 da ROT (tabela de objetos em execução).

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Obsoleto.

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

GetComInterfaceForObject(Object, Type)
Obsoleto.

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado. O acesso personalizado à interface de consulta está habilitado por padrão.

GetComInterfaceForObject<T,TInterface>(T)

Retorna um ponteiro para uma interface IUnknown que representa a interface especificada em um objeto do tipo especificado. O acesso personalizado à interface de consulta está habilitado 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 esse objeto.

GetComObjectData(Object, Object)

Recupera dados referenciados pela chave especificada do objeto COM especificado.

GetComSlotForMethodInfo(MemberInfo)

Recupera o slot da tabela de funções virtuais (v-table ou VTBL) para um tipo de MemberInfo especificado quando esse tipo é exposto ao COM.

GetDelegateForFunctionPointer(IntPtr, Type)
Obsoleto.

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

GetDelegateForFunctionPointer<TDelegate>(IntPtr)

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

GetEndComSlot(Type)

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

GetExceptionCode()
Obsoleto.

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

GetExceptionForHR(Int32, IntPtr)

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

GetExceptionForHR(Int32)

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

GetExceptionPointers()

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

GetFunctionPointerForDelegate(Delegate)
Obsoleto.

Converte um delegado em um ponteiro de função que pode ser chamado de 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 de código não gerenciado.

GetHINSTANCE(Module)

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

GetHRForException(Exception)

Converte a exceção especificada em um HRESULT.

GetHRForLastWin32Error()

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

GetIDispatchForObject(Object)

Retorna uma interface IDispatch de um objeto gerenciado.

GetIDispatchForObjectInContext(Object)

Retorna um IDispatch ponteiro de interface de um objeto gerenciado, se o chamador estiver no mesmo contexto que esse objeto.

GetITypeInfoForType(Type)

Retorna uma interface ITypeInfo de um tipo gerenciado.

GetIUnknownForObject(Object)

Retorna uma interface IUnknown de um objeto gerenciado.

GetIUnknownForObjectInContext(Object)

Retorna uma interface IUnknown de um objeto gerenciado, se o chamador estiver no mesmo contexto que esse 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 que foi chamada usando a invocação de plataforma que tem o sinalizador SetLastError definido.

GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32)
Obsoleto.

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

GetMethodInfoForComSlot(Type, Int32, ComMemberType)

Recupera um objeto MemberInfo da tabela de funções virtuais especificada (v-table ou VTBL).

GetNativeVariantForObject(Object, IntPtr)
Obsoleto.

Converte um objeto em um COM VARIANT.

GetNativeVariantForObject<T>(T, IntPtr)
Obsoleto.

Converte um objeto de um tipo especificado em um COM VARIANT.

GetObjectForIUnknown(IntPtr)

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

GetObjectForNativeVariant(IntPtr)
Obsoleto.

Converte um COM VARIANT em um objeto.

GetObjectForNativeVariant<T>(IntPtr)
Obsoleto.

Converte um COM VARIANT em um objeto de um tipo especificado.

GetObjectsForNativeVariants(IntPtr, Int32)
Obsoleto.

Converte uma matriz de VARIANTs COM em uma matriz de objetos.

GetObjectsForNativeVariants<T>(IntPtr, Int32)
Obsoleto.

Converte uma matriz de VARIANTs 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ções virtuais (v-table ou VTBL) que contém métodos definidos pelo usuário.

GetThreadFromFiberCookie(Int32)
Obsoleto.

Converte um cookie de fibra na instância de 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.

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) atribuído a uma biblioteca de tipos quando ele foi exportado 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 objeto RCW (Callable Wrapper) exclusivo para uma determinada interface IUnknown .

GetUnmanagedThunkForManagedMethodPtr(IntPtr, IntPtr, Int32)
Obsoleto.

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

InitHandle(SafeHandle, IntPtr)

Inicializa o identificador subjacente de um SafeHandle recém-criado 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 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 da forma não gerenciada da classe gerenciada.

OffsetOf<T>(String)

Retorna o deslocamento de campo da forma não gerenciada de uma classe gerenciada especificada.

Prelink(MethodInfo)

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

PrelinkAll(Type)

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

PtrToStringAnsi(IntPtr, Int32)

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

PtrToStringAnsi(IntPtr)

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

PtrToStringAuto(IntPtr, Int32)

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

PtrToStringAuto(IntPtr)

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

PtrToStringBSTR(IntPtr)

Aloca um String gerenciado e copia um bstr (cadeia de caracteres binária) armazenado na memória não gerenciada nele.

PtrToStringUni(IntPtr, Int32)

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

PtrToStringUni(IntPtr)

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

PtrToStringUTF8(IntPtr, Int32)

Aloca um String gerenciado e copia um número especificado de bytes de uma cadeia de caracteres UTF8 não gerenciada para ele.

PtrToStringUTF8(IntPtr)

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

PtrToStructure(IntPtr, Object)
Obsoleto.

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

PtrToStructure(IntPtr, Type)
Obsoleto.

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

PtrToStructure<T>(IntPtr, T)

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

PtrToStructure<T>(IntPtr)

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

QueryInterface(IntPtr, Guid, IntPtr)

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

ReadByte(IntPtr, Int32)

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

ReadByte(IntPtr)

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

ReadByte(Object, Int32)
Obsoleto.

Lê um único byte em um determinado deslocamento (ou índice) 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(IntPtr)

Lê um inteiro com sinal de 16 bits 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, Int32)

Lê um inteiro com sinal de 32 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(Object, Int32)
Obsoleto.

Lê um inteiro com sinal de 32 bits em um determinado deslocamento 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(IntPtr)

Lê um inteiro com sinal de 64 bits 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, Int32)

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

ReadIntPtr(IntPtr)

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

ReadIntPtr(Object, Int32)
Obsoleto.

Lê um inteiro de tamanho 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 threads.

SecureStringToBSTR(SecureString)

Aloca um BSTR (cadeia de caracteres binária) não gerenciada e copia o conteúdo de um objeto gerenciado nele.

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 em memória não gerenciada, convertendo em formato ANSI conforme ele copia.

SecureStringToGlobalAllocUnicode(SecureString)

Copia o conteúdo de um objeto SecureString gerenciado na 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 nele.

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 em memória não gerenciada, convertendo em formato ANSI conforme ele copia.

StringToHGlobalAuto(String)

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

StringToHGlobalUni(String)

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

StructureToPtr(Object, IntPtr, Boolean)
Obsoleto.

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

StructureToPtr<T>(T, IntPtr, Boolean)

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

ThrowExceptionForHR(Int32, IntPtr)

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

ThrowExceptionForHR(Int32)

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

UnsafeAddrOfPinnedArrayElement(Array, Int32)
Obsoleto.

Obtém o endereço do elemento no índice especificado dentro da 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 único valor de byte na memória não gerenciada.

WriteByte(IntPtr, Int32, Byte)

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

WriteByte(Object, Int32, Byte)
Obsoleto.

Grava um único valor de byte 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, Int32)

Grava um valor inteiro com sinal de 32 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(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 inteiro de tamanho nativo do processador na memória não gerenciada em um deslocamento especificado.

WriteIntPtr(IntPtr, IntPtr)

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

WriteIntPtr(Object, Int32, IntPtr)
Obsoleto.

Grava um valor inteiro de tamanho nativo do 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 que foi alocado usando o método SecureStringToCoTaskMemAnsi(SecureString).

ZeroFreeCoTaskMemUnicode(IntPtr)

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

ZeroFreeCoTaskMemUTF8(IntPtr)

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

ZeroFreeGlobalAllocAnsi(IntPtr)

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

ZeroFreeGlobalAllocUnicode(IntPtr)

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

Aplica-se a