Classe Marshal
Publicado: março de 2016
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.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (em mscorlib.dll)
Hierarquia de Herança
System.Object
System.Runtime.InteropServices.Marshal
Sintaxe
public static class Marshal
public ref class Marshal abstract sealed
[<AbstractClass>]
[<Sealed>]
type Marshal = class end
Public NotInheritable Class Marshal
Métodos
Nome | Descrição | |
---|---|---|
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 o runtime callable wrappers (RCWs) em qualquer contexto estão disponíveis para limpeza. |
|
BindToMoniker(String) | Obtém um ponteiro de interface identificado pelo moniker especificado. |
|
ChangeWrapperHandleStrength(Object, Boolean) | Altera o nível de um objeto COM Callable Wrapper identificador (CCW). |
|
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) | Agrega um objeto gerenciado com o objeto COM especificado. |
|
CreateAggregatedObject<T>(IntPtr, T) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Agrega um objeto gerenciado do tipo especificado com o objeto COM especificado. |
|
CreateWrapperOfType(Object, Type) | Encapsula o objeto COM indicado em um objeto do tipo especificado. |
|
CreateWrapperOfType<T, TWrapper>(T) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Encapsula o objeto COM especificado em um objeto do tipo especificado. |
|
DestroyStructure(IntPtr, Type) | Libera todas as subestruturas para as quais o bloco de memória não gerenciada especificado aponta. |
|
DestroyStructure<T>(IntPtr) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Libera todos os subestruturas de um tipo especificado que o bloco de memória não gerenciado especificado aponta para. |
|
FinalReleaseComObject(Object) | Libera todas as referências a um RCW (Runtime Callable Wrapper) (RCW), definindo sua contagem de referência como 0. |
|
FreeBSTR(IntPtr) | Libera um BSTR usando o COM SysFreeString função. |
|
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 identificador global exclusivo (GUID) para o tipo especificado ou gera um GUID usando o algoritmo usado pelo Exportador da biblioteca (Tlbexp.exe). |
|
GenerateProgIdForType(Type) | Retorna um identificador programático (ProgID) 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) | Retorna um ponteiro para uma interface IUnknown que representa a interface indicada no objeto especificado. O acesso à interface de consulta personalizada é habilitada por padrão. |
|
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) | Retorna um ponteiro para um IUnknown interface que representa a interface especificada no objeto especificado. Acesso à interface de consulta personalizada é controlado pelo modo de personalização especificado. |
|
GetComInterfaceForObject<T, TInterface>(T) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Retorna um ponteiro para um IUnknown interface que representa a interface especificada em um objeto do tipo especificado. Acesso à interface de consulta personalizada é 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 de 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 (tabela v ou VTBL) de função virtual para um System.Reflection.MemberInfo Digite quando o tipo é exposto para COM. |
|
GetDelegateForFunctionPointer(IntPtr, Type) | Converte um ponteiro de função não gerenciada em um delegado. |
|
GetDelegateForFunctionPointer<TDelegate>(IntPtr) | [Suporte somente no .NET Framework 4.5.1 e versões posteriores] 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 (tabela v ou VTBL) de um tipo quando exposto para COM. |
|
GetExceptionCode() | 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 para um correspondente Exception objeto, com informações adicionais sobre erros passado um IErrorInfo interface 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) | Converte um delegado em um ponteiro de função que pode ser chamado do código não gerenciado. |
|
GetFunctionPointerForDelegate<TDelegate>(TDelegate) | [Suporte somente no .NET Framework 4.5.1 e versões posteriores] 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 correspondente ao último erro gerado pelo código do Win32 executado usando Marshal. |
|
GetIDispatchForObject(Object) | Retorna um IDispatch interface de um objeto gerenciado. |
|
GetIDispatchForObjectInContext(Object) | Retorna um IDispatch interface ponteiro de um objeto gerenciado, se o chamador estiver no mesmo contexto de objeto. |
|
GetITypeInfoForType(Type) | Retorna um System.Runtime.InteropServices.ComTypes.ITypeInfo interface a partir de um tipo gerenciado. |
|
GetIUnknownForObject(Object) | Retorna uma interface IUnknown de um objeto gerenciado. |
|
GetIUnknownForObjectInContext(Object) | Retorna um IUnknown de interface de um objeto gerenciado, se o chamador estiver no mesmo contexto de objeto. |
|
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 DllImportAttribute.SetLastError definido. |
|
GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32) | Obsoleto. Obtém um ponteiro para uma função gerados pelo tempo de execução que realiza marshaling de uma chamada do código gerenciado para não gerenciado. |
|
GetMethodInfoForComSlot(Type, Int32, ComMemberType) | Recupera um MemberInfo objeto para o slot de tabela (tabela v ou VTBL) de função virtual especificado. |
|
GetNativeVariantForObject(Object, IntPtr) | Converte um objeto em um COM VARIANT. |
|
GetNativeVariantForObject<T>(T, IntPtr) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Converte um objeto de um tipo especificado em uma VARIANTE COM. |
|
GetObjectForIUnknown(IntPtr) | Retorna uma instância de um tipo que representa um objeto COM de um ponteiro para sua interface IUnknown. |
|
GetObjectForNativeVariant(IntPtr) | Converte um COM VARIANT em um objeto. |
|
GetObjectForNativeVariant<T>(IntPtr) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Converte uma VARIANTE COM um objeto de um tipo especificado. |
|
GetObjectsForNativeVariants(IntPtr, Int32) | Converte uma matriz de COM VARIANTs para uma matriz de objetos. |
|
GetObjectsForNativeVariants<T>(IntPtr, Int32) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Converte uma matriz de variantes de COM em uma matriz de um tipo especificado. |
|
GetStartComSlot(Type) | Obtém o primeiro slot a tabela de função virtual (tabela v ou VTBL) que contém os métodos definidos pelo usuário. |
|
GetThreadFromFiberCookie(Int32) | Obsoleto. Converte um cookie de fibra em correspondente System.Threading.Thread instância. |
|
GetTypedObjectForIUnknown(IntPtr, Type) | Retorna um objeto gerenciado de um tipo especificado que representa um objeto COM. |
|
GetTypeForITypeInfo(IntPtr) | Converte um não-gerenciado ITypeInfo o objeto para um gerenciado System.Type objeto. |
|
GetTypeFromCLSID(Guid) | Retorna o tipo associado ao CLSID (identificador de classe) especificado. |
|
GetTypeInfoName(ITypeInfo) | Recupera o nome do tipo representado por um ITypeInfo objeto. |
|
GetTypeInfoName(UCOMITypeInfo) | Obsoleto. Recupera o nome do tipo representado por um ITypeInfo objeto. |
|
GetTypeLibGuid(ITypeLib) | Recupera o identificador de biblioteca (ID da biblioteca) de uma biblioteca de tipos. |
|
GetTypeLibGuid(UCOMITypeLib) | Obsoleto. Recupera o identificador de biblioteca (ID da biblioteca) de uma biblioteca de tipos. |
|
GetTypeLibGuidForAssembly(Assembly) | Recupera o identificador de biblioteca (LIBID) que é atribuído a uma biblioteca de tipos, quando 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á exportado do assembly especificado. |
|
GetUniqueObjectForIUnknown(IntPtr) | Cria um único RCW (Runtime Callable Wrapper) objeto (RCW) para um determinado IUnknown interface. |
|
GetUnmanagedThunkForManagedMethodPtr(IntPtr, IntPtr, Int32) | Obsoleto. Obtém um ponteiro para uma função gerados pelo tempo de execução que realiza marshaling de uma chamada de não gerenciado para código gerenciado. |
|
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 de memória não gerenciada que são necessárias para manter os parâmetros para o método especificado. |
|
OffsetOf(Type, String) | Retorna o deslocamento de campo do formulário não gerenciado da classe gerenciada. |
|
OffsetOf<T>(String) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] Retorna o deslocamento de campo do formulário não gerenciado de uma classe gerenciada especificada. |
|
Prelink(MethodInfo) | Executa tarefas de configuração do 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) | Copia todos os caracteres até o primeiro caractere nulo de uma cadeia de caracteres ANSI não gerenciada para um String gerenciado e amplia cada caractere ANSI para Unicode. |
|
PtrToStringAnsi(IntPtr, Int32) | Aloca um String gerenciado, copia um número especificado de caracteres de uma cadeia de caracteres ANSI não gerenciada para ele e amplia cada caractere ANSI para Unicode. |
|
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 gerenciado String e copia o número especificado de caracteres de uma cadeia de caracteres armazenada na memória não gerenciada para ele. |
|
PtrToStringBSTR(IntPtr) | Aloca um gerenciado String e copia um binary string (BSTR) armazenados em memória não gerenciada para ele. |
|
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. |
|
PtrToStructure(IntPtr, Object) | Realizar o marshaling de dados de um bloco de memória não gerenciado para um objeto gerenciado. |
|
PtrToStructure(IntPtr, Type) | 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) | [Suporte somente no .NET Framework 4.5.1 e versões posteriores] 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) | [Suporte somente no .NET Framework 4.5.1 e versões posteriores] 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) | Lê um byte em um determinado deslocamento (ou índice) de memória não gerenciada. |
|
ReadInt16(IntPtr) | Lê um inteiro assinado de 16 bits de memória não gerenciada. |
|
ReadInt16(IntPtr, Int32) | Lê um inteiro assinado de 16 bits em um determinado deslocamento de memória não gerenciada. |
|
ReadInt16(Object, Int32) | Lê um inteiro assinado de 16 bits em um determinado deslocamento de 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) | Lê um inteiro assinado de 32 bits em um determinado deslocamento de memória não gerenciada. |
|
ReadInt64(IntPtr) | Lê um inteiro assinado de 64 bits de memória não gerenciada. |
|
ReadInt64(IntPtr, Int32) | Lê um inteiro assinado de 64 bits em um determinado deslocamento de memória não gerenciada. |
|
ReadInt64(Object, Int32) | Lê um inteiro assinado de 64 bits em um determinado deslocamento de 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 de memória não gerenciada. |
|
ReadIntPtr(Object, Int32) | Lê um inteiro de tamanho nativo de processador de memória não gerenciada. |
|
ReAllocCoTaskMem(IntPtr, Int32) | Redimensiona um bloco de memória alocado anteriormente com AllocCoTaskMem. |
|
ReAllocHGlobal(IntPtr, IntPtr) | Redimensiona um bloco de memória alocado anteriormente com AllocHGlobal. |
|
Release(IntPtr) | Diminui a contagem de referência na interface especificada. |
|
ReleaseComObject(Object) | Diminui a contagem de referência do RCW (Runtime Callable Wrapper) (RCW) associado ao objeto COM especificado. |
|
ReleaseThreadCache() | Obsoleto. Libera o cache de thread. |
|
SecureStringToBSTR(SecureString) | Aloca uma cadeira de caracteres binária não gerenciada (BSTR) e copia os conteúdos de um objeto SecureString gerenciado para ela. |
|
SecureStringToCoTaskMemAnsi(SecureString) | Copia o conteúdo de um gerenciado SecureString objeto para um bloco de memória alocada 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. |
|
SizeOf(Object) | Retorna o tamanho não gerenciado de um objeto em bytes. |
|
SizeOf(Type) | Retorna o tamanho de um tipo não gerenciado em bytes. |
|
SizeOf<T>() | [Suporte somente no .NET Framework 4.5.1 e versões posteriores] Retorna o tamanho de um tipo não gerenciado em bytes. |
|
SizeOf<T>(T) | [Suporte somente no .NET Framework 4.5.1 e versões posteriores] 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 gerenciado String para um bloco de memória alocada 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. |
|
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) | Realizar o marshaling de dados de um objeto gerenciado para um bloco não gerenciado de memória. |
|
StructureToPtr<T>(T, IntPtr, Boolean) | [Suporte somente no .NET Framework 4.5.1 e versões posteriores] 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) | Obtém o endereço do elemento no índice especificado na matriz especificada. |
|
UnsafeAddrOfPinnedArrayElement<T>(T[], Int32) | [Com suporte no .NET Framework 4.5.1 e versões posteriores] 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) | Grava um valor de byte único memória não gerenciada em um deslocamento especificado. |
|
WriteInt16(IntPtr, Char) | Grava um caractere como um valor inteiro de 16 bits em memória não gerenciada. |
|
WriteInt16(IntPtr, Int16) | Grava um valor inteiro de 16 bits em memória não gerenciada. |
|
WriteInt16(IntPtr, Int32, Char) | Grava um valor inteiro assinado de 16 bits em memória não gerenciada em um deslocamento especificado. |
|
WriteInt16(IntPtr, Int32, Int16) | Grava um valor inteiro assinado de 16 bits na memória não gerenciada em um deslocamento especificado. |
|
WriteInt16(Object, Int32, Char) | Grava um valor inteiro assinado de 16 bits em memória não gerenciada em um deslocamento especificado. |
|
WriteInt16(Object, Int32, Int16) | Grava um valor inteiro assinado de 16 bits em 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 assinado de 32 bits na memória não gerenciada em um deslocamento especificado. |
|
WriteInt32(Object, Int32, Int32) | Grava um valor inteiro assinado de 32 bits em memória não gerenciada em um deslocamento especificado. |
|
WriteInt64(IntPtr, Int32, Int64) | Grava um valor inteiro assinado de 64 bits em memória não gerenciada em um deslocamento especificado. |
|
WriteInt64(IntPtr, Int64) | Grava um valor inteiro assinado de 64 bits em memória não gerenciada. |
|
WriteInt64(Object, Int32, Int64) | Grava um valor inteiro assinado de 64 bits em memória não gerenciada em um deslocamento especificado. |
|
WriteIntPtr(IntPtr, Int32, IntPtr) | Grava um valor inteiro em tamanho nativo de processador para memória não gerenciada em um deslocamento especificado. |
|
WriteIntPtr(IntPtr, IntPtr) | Grava um valor de inteiro dimensionados nativo de processador na memória não gerenciada. |
|
WriteIntPtr(Object, Int32, IntPtr) | Grava um valor de inteiro dimensionados nativo de processador para memória não gerenciada. |
|
ZeroFreeBSTR(IntPtr) | Libera um BSTR ponteiro que foi alocado usando o SecureStringToBSTR método. |
|
ZeroFreeCoTaskMemAnsi(IntPtr) | Libera um ponteiro não gerenciado de cadeia de caracteres que foi alocado usando o SecureStringToCoTaskMemAnsi método. |
|
ZeroFreeCoTaskMemUnicode(IntPtr) | Libera um ponteiro não gerenciado de cadeia de caracteres que foi alocado usando o SecureStringToCoTaskMemUnicode método. |
|
ZeroFreeGlobalAllocAnsi(IntPtr) | Libera um ponteiro não gerenciado de cadeia de caracteres que foi alocado usando o SecureStringToGlobalAllocAnsi método. |
|
ZeroFreeGlobalAllocUnicode(IntPtr) | Libera um ponteiro não gerenciado de cadeia de caracteres que foi alocado usando o SecureStringToGlobalAllocUnicode método. |
Campos
Nome | Descrição | |
---|---|---|
SystemDefaultCharSize | Representa o tamanho de caractere padrão no sistema; o padrão é 2 para sistemas Unicode e 1 para sistemas de ANSI. Este campo é somente leitura. |
|
SystemMaxDBCSCharSize | Representa o tamanho máximo de um tamanho DBCS (conjunto) de caractere de byte duplo, em bytes, para o sistema operacional atual. Este campo é somente leitura. |
Comentários
The static methods defined on the T:System.Runtime.InteropServices.Marshal class are essential to working with unmanaged code. Most methods defined in this class are typically used by developers who want to provide a bridge between the managed and unmanaged programming models. For example, the M:System.Runtime.InteropServices.Marshal.StringToHGlobalAnsi(System.String) method copies ANSI characters from a specified string (in the managed heap) to a buffer in the unmanaged heap. It also allocates the target heap of the right size.
The common language runtime provides specific marshaling capabilities. For details on marshaling behavior, see Interop Marshaling.
The Read and Write methods in the T:System.Runtime.InteropServices.Marshal class support both aligned and unaligned access.
Exemplos
The following example shows how to use various methods defined by the T:System.Runtime.InteropServices.Marshal class.
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
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
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
Informações de Versão
Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1
Acesso thread-safe
Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.
Confira Também
Namespace System.Runtime.InteropServices
Retornar ao início