System.Runtime.InteropServices Namespace

Fornece uma ampla variedade de membros que oferecem suporte a serviços de invocação de plataforma e interoperabilidade COM. Se você não estiver familiarizado com esses serviços, consulte Interoperação com código não gerenciado.

Classes

AllowReversePInvokeCallsAttribute

Permite que um método não gerenciado chame um método gerenciado.

AutomationProxyAttribute

Especifica se o tipo deve ter o marshaling realizado usando o marshaler de Automação ou um proxy e stub personalizados.

BestFitMappingAttribute

Controla se os caracteres Unicode são convertidos em caracteres ANSI correspondentes mais próximos.

BStrWrapper

Realiza marshaling de dados do tipo VT_BSTR de código gerenciado para código não gerenciado. Essa classe não pode ser herdada.

ClassInterfaceAttribute

Indica o tipo de interface de classe a ser gerado para uma classe exposta ao COM, se uma interface for de fato gerada.

CoClassAttribute

Especifica o identificador de classe de coclass importado de uma biblioteca de tipos.

CollectionsMarshal

Uma classe não segura que fornece um conjunto de métodos para acessar as representações de dados subjacentes de coleções.

ComAliasNameAttribute

Indica o alias COM de um parâmetro ou tipo de campo.

ComAwareEventInfo

Permite o registro de associação tardia de um manipulador de eventos.

ComCompatibleVersionAttribute

Indica a um cliente COM que todas as classes na versão atual de um assembly são compatíveis com as classes em uma versão anterior do assembly.

ComConversionLossAttribute

Indica que informações sobre uma classe ou interface foram perdidas quando foram importadas de uma biblioteca de tipos para um assembly.

ComDefaultInterfaceAttribute

Especifica uma interface padrão para expor ao COM. Essa classe não pode ser herdada.

ComEventInterfaceAttribute

Identifica a interface de origem e a classe que implementa os métodos da interface do evento é gerado quando uma coclass é importada de uma biblioteca de tipos COM.

ComEventsHelper

Fornece métodos que permitem que os delegados do .NET que tratam os eventos sejam adicionados e removidos dos objetos COM.

COMException

A exceção é lançada quando um HRESULT não reconhecido retorna de uma chamada de método COM.

ComImportAttribute

Indica que o tipo de atributo foi definido anteriormente na COM.

ComRegisterFunctionAttribute

Especifica o método a ser chamado quando você registra um assembly para ser usado de COM. Isso habilita a execução de código escrito pelo usuário durante o processo de registro.

ComSourceInterfacesAttribute

Identifica uma lista de interfaces que são expostas como origens de evento COM para a classe atribuída.

ComUnregisterFunctionAttribute

Especifica o método a ser chamado quando você cancela o registro de um assembly para uso de COM. Isso possibilita a execução de código escrito pelo usuário durante o processo de cancelamento do registro.

ComVisibleAttribute

Controla a acessibilidade de um tipo gerenciado individual ou membro, ou então de todos os tipos em um assembly, ao COM.

ComWrappers

Classe para gerenciar wrappers de tipos COM IUnknown.

CriticalHandle

Representa uma classe wrapper para os recursos do identificador.

CurrencyWrapper

Encapsula objetos que o empacotador deve realizar marshaling como um VT_CY.

DefaultCharSetAttribute

Especifica o valor da enumeração CharSet. Essa classe não pode ser herdada.

DefaultDllImportSearchPathsAttribute

Especifica os caminhos que são usados para procurar DLLs que fornecem funções para invocações de plataforma.

DefaultParameterValueAttribute

Define o valor padrão de um parâmetro, quando chamado de uma linguagem que dá suporte a parâmetros padrão. Essa classe não pode ser herdada.

DispatchWrapper

Encapsula objetos que o empacotador deve realizar marshaling como um VT_DISPATCH.

DispIdAttribute

Especifica o identificador de distribuição (DISPID) COM de um método, campo ou propriedade.

DllImportAttribute

Indica que o método atribuído é exposto por uma DLL (biblioteca de vínculo dinâmico) não gerenciada como um ponto de entrada estático.

DynamicInterfaceCastableImplementationAttribute

Atributo exigido por qualquer tipo retornado por GetInterfaceImplementation(RuntimeTypeHandle).

ErrorWrapper

Encapsula objetos que o empacotador deve realizar marshaling como um VT_ERROR.

ExtensibleClassFactory

Permite a personalização de objetos gerenciados que se estendem de objetos não gerenciados durante a criação.

ExternalException

O tipo de exceção de base para todas as exceções de interoperabilidade COM e exceções estruturadas de manipulação de exceção (SEH).

FieldOffsetAttribute

Indica a posição física dos campos dentro de representação não gerenciada de uma classe ou estrutura.

GuidAttribute

Fornece um Guid explícito quando um GUID automático for indesejável.

HandleCollector

Rastreia identificadores pendentes e força uma coleta de lixo quando é atingido o limite especificado.

IDispatchImplAttribute

Indica qual implementação de IDispatch o Common Language Runtime usa ao expor interfaces duplas e dispinterfaces ao COM.

ImmutableCollectionsMarshal

Uma classe insegura que fornece um conjunto de métodos para acessar as representações de dados subjacentes de coleções imutáveis.

ImportedFromTypeLibAttribute

Indica que os tipos definidos dentro de um assembly foram originalmente definidos em uma biblioteca de tipos.

InAttribute

Indica que os dados devem passar por marshaling pelo chamador para o receptor, mas não de volta para o chamador.

InterfaceTypeAttribute

Indica se uma interface gerenciada é dupla, somente de expedição ou somente de IUnknown quando exposta à COM.

InvalidComObjectException

A exceção lançada quando um objeto COM inválido é usado.

InvalidOleVariantTypeException

A exceção gerada pelo marshaler quando este encontra um argumento de um tipo variante que não pode ter o marshaling realizado no código gerenciado.

LCIDConversionAttribute

Indica que a assinatura não gerenciada do método espera um parâmetro LCID (identificador de localidade).

LibraryImportAttribute

Indica que um gerador de origem deve criar uma função para argumentos de marshalling em vez de depender do runtime para gerar uma função de marshalling equivalente em tempo de execução.

ManagedToNativeComInteropStubAttribute

Dá suporte para personalização do usuário de stubs de interoperabilidade em cenários de interoperabilidade gerenciada para COM.

Marshal

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.

MarshalAsAttribute

Indica como realizar marshaling de dados entre código gerenciado e não gerenciado.

MarshalDirectiveException

A exceção que é lançada pelo marshaler quando este encontra um MarshalAsAttribute ao qual não oferece suporte.

MemoryMarshal

Fornece métodos para interoperar com Memory<T>, ReadOnlyMemory<T>, Span<T>e ReadOnlySpan<T>.

NativeLibrary

Fornece APIs para gerenciar bibliotecas nativas.

NativeMemory

Essa classe contém métodos que são usados principalmente para gerenciar a memória nativa.

OptionalAttribute

Indica que um parâmetro é opcional.

OutAttribute

Indica que os dados devem passar por marshaling do receptor de volta ao chamador.

PosixSignalContext

Fornece dados para um PosixSignalRegistration evento.

PosixSignalRegistration

Manipula um PosixSignal.

PreserveSigAttribute

Indica que a transformação de assinatura HRESULT que ocorre durante as chamadas de interoperabilidade COM deve ser suprimida.

PrimaryInteropAssemblyAttribute

Indica que o assembly atribuído é um assembly de interoperabilidade primário.

ProgIdAttribute

Permite que o usuário especifique o ProgID de uma classe.

RegistrationServices

Fornece um conjunto de serviços para registrar e cancelar o registro de assemblies gerenciados para uso do COM.

RuntimeEnvironment

Fornece uma coleção de métodos static que retornam informações sobre o ambiente de Common Language Runtime.

RuntimeInformation

Fornece informações sobre a instalação do runtime .NET.

SafeArrayRankMismatchException

A exceção gerada quando a classificação de um SAFEARRAY de entrada não corresponde à classificação especificada na assinatura gerenciada.

SafeArrayTypeMismatchException

A exceção gerada quando o tipo de SAFEARRAY de entrada não corresponde ao tipo especificado na assinatura gerenciada.

SafeBuffer

Fornece um buffer de memória controlado que pode ser usado para leitura e gravação. Tentativas de acessar a memória fora do buffer controlado (falhas e estouros) geram exceções.

SafeHandle

Representa uma classe wrapper para identificadores do sistema operacional. Essa classe deve ser herdada.

SEHException

Representa erros de SEH (Manipulação de Exceção Estruturada).

SequenceMarshal

Fornece uma coleção de métodos para interoperar com o ReadOnlySequence<T>.

SetWin32ContextInIDispatchAttribute

Esse atributo foi substituído.

StandardOleMarshalObject

Substitui o marshaler free-thread padrão do CLR (Common Language Runtime) pelo marshaler OLE STA padrão.

StructLayoutAttribute

Permite controlar o layout físico dos campos de dados de uma classe ou estrutura na memória.

SuppressGCTransitionAttribute

Indica que uma transição de coleta de lixo deverá ser ignorada quando uma chamada de função não gerenciada for feita.

TypeIdentifierAttribute

Dá suporte à equivalência de tipo.

TypeLibConverter

Fornece um conjunto de serviços que convertem um assembly gerenciado em uma biblioteca de tipos COM e vice-versa.

TypeLibFuncAttribute

Contém o FUNCFLAGS que foi originalmente importado para esse método da biblioteca de tipos COM.

TypeLibImportClassAttribute

Especifica qual Type usa exclusivamente uma interface. Essa classe não pode ser herdada.

TypeLibTypeAttribute

Contém o TYPEFLAGS que foi originalmente importado para esse tipo da biblioteca de tipos COM.

TypeLibVarAttribute

Contém o VARFLAGS que foi originalmente importado para esse campo da biblioteca de tipos COM.

TypeLibVersionAttribute

Especifica o número de versão de uma biblioteca de tipos exportada.

UnknownWrapper

Encapsula objetos que o empacotador deve realizar marshaling como um VT_UNKNOWN.

UnmanagedCallConvAttribute

Especifica a convenção de chamada necessária para chamar métodos P/Invoke implementados em código não gerenciado.

UnmanagedCallersOnlyAttribute

Métodos marcados com UnmanagedCallersOnlyAttribute podem ser chamados diretamente do código nativo. É possível carregar o token de função em uma variável local usando o operador address-of no C# e transmiti-lo como um retorno de chamada para um método nativo.

UnmanagedFunctionPointerAttribute

Controla o comportamento de marshaling de uma assinatura do delegado passado como um ponteiro de função não gerenciada de ou para código não gerenciado. Essa classe não pode ser herdada.

VariantWrapper

Realiza marshaling de dados do tipo VT_VARIANT | VT_BYREF de código gerenciado para código não gerenciado. Essa classe não pode ser herdada.

WasmImportLinkageAttribute

Fornece uma ampla variedade de membros que oferecem suporte a serviços de invocação de plataforma e interoperabilidade COM. Se você não estiver familiarizado com esses serviços, consulte Interoperação com código não gerenciado.

Estruturas

ArrayWithOffset

Encapsula uma matriz e um deslocamento dentro da matriz especificada.

BIND_OPTS

Use BIND_OPTS em vez disso.

BINDPTR

Use BINDPTR em vez disso.

CLong

CLong é um tipo de valor imutável que representa o long tipo em C e C++. Ele deve ser usado como um tipo de troca no limite gerenciado/não gerenciado para representar com precisão em APIs não gerenciadas de código gerenciado que usam o long tipo. Esse tipo tem 32 bits de armazenamento em todas as plataformas Windows e plataformas baseadas em Unix de 32 bits. Ele tem 64 bits de armazenamento em plataformas Unix de 64 bits.

ComWrappers.ComInterfaceDispatch

Uma interface binária de aplicativo para expedição de função de uma interface COM.

ComWrappers.ComInterfaceEntry

Tipo de interface e ponteiro para a Vtable de destino.

CONNECTDATA

Use CONNECTDATA em vez disso.

CULong

CULong é um tipo de valor imutável que representa o unsigned long tipo em C e C++. Ele deve ser usado como um tipo de troca no limite gerenciado/não gerenciado para representar com precisão em APIs não gerenciadas de código gerenciado que usam o unsigned long tipo. Esse tipo tem 32 bits de armazenamento em todas as plataformas Windows e plataformas baseadas em Unix de 32 bits. Ele tem 64 bits de armazenamento em plataformas Unix de 64 bits.

DISPPARAMS

Use DISPPARAMS em vez disso.

ELEMDESC

Use ELEMDESC em vez disso.

ELEMDESC.DESCUNION

Use ELEMDESC.DESCUNION em vez disso.

EXCEPINFO

Use EXCEPINFO em vez disso.

FILETIME

Use FILETIME em vez disso.

FUNCDESC

Use FUNCDESC em vez disso.

GCHandle

Fornece uma maneira de acessar um objeto gerenciado de memória não gerenciada.

HandleRef

Encapsula um objeto gerenciado que contém um identificador para um recurso que é passado para código não gerenciado usando a invocação de plataforma.

IDLDESC

Use IDLDESC em vez disso.

NFloat

NFloat é um tipo de valor imutável que representa um tipo flutuante que tem o mesmo tamanho que o tamanho inteiro nativo. Ele deve ser usado como um tipo de troca no limite gerenciado/não gerenciado para representar com precisão em APIs não gerenciadas de código gerenciado que usam um alias de tipo para C ou C++'s float em plataformas de 32 bits ou double em plataformas de 64 bits, como o tipo CGFloat em bibliotecas fornecidas pela Apple.

OSPlatform

Representa uma plataforma do sistema operacional.

PARAMDESC

Use PARAMDESC em vez disso.

STATSTG

Use STATSTG em vez disso.

TYPEATTR

Use TYPEATTR em vez disso.

TYPEDESC

Use TYPEDESC em vez disso.

TYPELIBATTR

Use TYPELIBATTR em vez disso.

VARDESC

Use VARDESC em vez disso.

VARDESC.DESCUNION

Use VARDESC.DESCUNION em vez disso.

Interfaces

_Activator

Expõe a classe Activator para código não gerenciado.

_Assembly

Expõe os membros públicos da classe Assembly a código não gerenciado.

_AssemblyBuilder

Expõe a classe AssemblyBuilder para código não gerenciado.

_AssemblyName

Expõe a classe AssemblyName para código não gerenciado.

_Attribute

Expõe a classe Attribute para código não gerenciado.

_ConstructorBuilder

Expõe a classe ConstructorBuilder para código não gerenciado.

_ConstructorInfo

Expõe os membros públicos da classe ConstructorInfo a código não gerenciado.

_CustomAttributeBuilder

Expõe a classe CustomAttributeBuilder para código não gerenciado.

_EnumBuilder

Expõe a classe EnumBuilder para código não gerenciado.

_EventBuilder

Expõe a classe EventBuilder para código não gerenciado.

_EventInfo

Expõe os membros públicos da classe EventInfo a código não gerenciado.

_Exception

Expõe os membros públicos da classe Exception a código não gerenciado.

_FieldBuilder

Expõe a classe FieldBuilder para código não gerenciado.

_FieldInfo

Expõe os membros públicos da classe FieldInfo a código não gerenciado.

_ILGenerator

Expõe a classe ILGenerator para código não gerenciado.

_LocalBuilder

Expõe a classe LocalBuilder para código não gerenciado.

_MemberInfo

Expõe os membros públicos da classe MemberInfo a código não gerenciado.

_MethodBase

Expõe os membros públicos da classe MethodBase a código não gerenciado.

_MethodBuilder

Expõe a classe MethodBuilder para código não gerenciado.

_MethodInfo

Expõe os membros públicos da classe MethodInfo a código não gerenciado.

_MethodRental

Expõe a classe MethodRental para código não gerenciado.

_Module

Expõe a classe Module para código não gerenciado.

_ModuleBuilder

Expõe a classe ModuleBuilder para código não gerenciado.

_ParameterBuilder

Expõe a classe ParameterBuilder para código não gerenciado.

_ParameterInfo

Expõe a classe ParameterInfo para código não gerenciado.

_PropertyBuilder

Expõe a classe PropertyBuilder para código não gerenciado.

_PropertyInfo

Expõe os membros públicos da classe PropertyInfo a código não gerenciado.

_SignatureHelper

Expõe a classe SignatureHelper para código não gerenciado.

_Thread

Expõe a classe Thread para código não gerenciado.

_Type

Expõe os membros públicos da classe Type ao código não gerenciado.

_TypeBuilder

Expõe a classe TypeBuilder para código não gerenciado.

ICustomAdapter

Fornece uma maneira para que os clientes acessem o objeto real, em vez do objeto adaptador entregue por um marshaler personalizado.

ICustomFactory

Permite que usuários gravem o código de ativação para os objetos gerenciados que estendem MarshalByRefObject.

ICustomMarshaler

Fornece wrappers personalizados para manipular chamadas de método.

ICustomQueryInterface

Habilita os desenvolvedores a fornecerem uma implementação personalizada gerenciada do método IUnknown::QueryInterface(REFIID riid, void **ppvObject).

IDynamicInterfaceCastable

Interface usada para participar de uma falha de conversão de tipo.

IRegistrationServices

Fornece um conjunto de serviços para registrar e cancelar o registro de assemblies gerenciados para uso do COM.

ITypeLibConverter

Fornece um conjunto de serviços que convertem um assembly gerenciado em uma biblioteca de tipos COM e vice-versa.

ITypeLibExporterNameProvider

Fornece controle sobre o uso de maiúsculas e minúsculas dos nomes quando exportado para uma biblioteca de tipos.

ITypeLibExporterNotifySink

Fornece um mecanismo de retorno de chamada para o conversor de assembly para informar o chamador do status da conversão e envolver o chamador no processo de conversão em si.

ITypeLibImporterNotifySink

Fornece um mecanismo de retorno de chamada para o conversor de biblioteca de tipos para informar o chamador do status da conversão e envolve o chamador no processo de conversão em si.

UCOMIBindCtx

Use BIND_OPTS em vez disso.

UCOMIConnectionPoint

Use IConnectionPoint em vez disso.

UCOMIConnectionPointContainer

Use IConnectionPointContainer em vez disso.

UCOMIEnumConnectionPoints

Use IEnumConnectionPoints em vez disso.

UCOMIEnumConnections

Use IEnumConnections em vez disso.

UCOMIEnumMoniker

Use IEnumMoniker em vez disso.

UCOMIEnumString

Use IEnumString em vez disso.

UCOMIEnumVARIANT

Use IEnumVARIANT em vez disso.

UCOMIMoniker

Use IMoniker em vez disso.

UCOMIPersistFile

Use IPersistFile em vez disso.

UCOMIRunningObjectTable

Use IRunningObjectTable em vez disso.

UCOMIStream

Use IStream em vez disso.

UCOMITypeComp

Use ITypeComp em vez disso.

UCOMITypeInfo

Use ITypeInfo em vez disso.

UCOMITypeLib

Use ITypeLib em vez disso.

Enumerações

Architecture

Indica a arquitetura do processador.

AssemblyRegistrationFlags

Define um conjunto de sinalizadores usados ao registrar assemblies.

CALLCONV

Use CALLCONV em vez disso.

CallingConvention

Especifica a convenção de chamada necessária para chamar os métodos implementados em código não gerenciado.

CharSet

Impõe qual conjunto de caracteres as cadeias de caracteres com marshaling devem usar.

ClassInterfaceType

Identifica o tipo de interface de classe que é gerado para uma classe.

ComInterfaceType

Identifica como expor uma interface a COM.

ComMemberType

Descreve o tipo de um membro de COM.

CreateComInterfaceFlags

Especifica os sinalizadores para o método GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags).

CreateObjectFlags

Especifica os sinalizadores para o método GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags).

CustomQueryInterfaceMode

Indica se as chamadas de IUnknown::QueryInterface do método GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) podem usar a interface ICustomQueryInterface.

CustomQueryInterfaceResult

Fornece valores retornados para o método GetInterface(Guid, IntPtr).

DESCKIND

Use DESCKIND em vez disso.

DllImportSearchPath

Especifica os caminhos que são usados para procurar DLLs que fornecem funções para invocações de plataforma.

ExporterEventKind

Descreve os retornos de chamada feitos pelo exportador da biblioteca ao exportar uma biblioteca de tipos.

FUNCFLAGS

Use FUNCFLAGS em vez disso.

FUNCKIND

Use FUNCKIND em vez disso.

GCHandleType

Representa os tipos de identificadores que o GCHandle tipo pode alocar.

IDispatchImplType

Indica qual implementação de IDispatch usar para uma determinada classe.

IDLFLAG

Use IDLFLAG em vez disso.

IMPLTYPEFLAGS

Use IMPLTYPEFLAGS em vez disso.

ImporterEventKind

Descreve os retornos de chamada feitos pelo importador da biblioteca ao importar uma biblioteca de tipos.

INVOKEKIND

Use INVOKEKIND em vez disso.

LayoutKind

Controla o layout de um objeto quando exportado para o código não gerenciado.

LIBFLAGS

Use LIBFLAGS em vez disso.

PARAMFLAG

Use PARAMFLAG em vez disso.

PosixSignal

Especifica um número de sinal POSIX.

RegistrationClassContext

Especifica o conjunto de contextos de execução nos quais um objeto de classe será disponibilizado para solicitações para instâncias de constructo.

RegistrationConnectionType

Define os tipos de conexões com um objeto de classe.

StringMarshalling

Especifica como as cadeias de caracteres devem ser empacotadas para p/invokes gerados

SYSKIND

Use SYSKIND em vez disso.

TYPEFLAGS

Use TYPEFLAGS em vez disso.

TYPEKIND

Use TYPEKIND em vez disso.

TypeLibExporterFlags

Indica como uma biblioteca de tipos deve ser produzida.

TypeLibFuncFlags

Descreve as configurações originais do FUNCFLAGS na biblioteca de tipos COM da qual esse método foi importado.

TypeLibImporterFlags

Indica como um assembly deve ser produzido.

TypeLibTypeFlags

Descreve as configurações originais do TYPEFLAGS na biblioteca de tipos COM da qual esse tipo foi importado.

TypeLibVarFlags

Descreve as configurações originais do VARFLAGS na biblioteca de tipos COM de que a variável foi importada.

UnmanagedType

Identifica como realizar marshaling de parâmetros ou campos para código não gerenciado.

VarEnum

Indica como realizar marshaling dos elementos da matriz quando uma matriz passa por marshaling do código gerenciado para não gerenciado como um SafeArray.

VARFLAGS

Use VARFLAGS em vez disso.

Delegados

DllImportResolver

Fornece um delegado usado para resolver bibliotecas nativas por meio de retorno de chamada.

ObjectCreationDelegate

Cria um objeto COM.

Comentários

Os membros desse namespace fornecem várias categorias de funcionalidade, conforme mostrado na tabela a seguir. Atributos controlam o comportamento de marshaling, como organizar estruturas ou como representar cadeias de caracteres. Os atributos mais importantes são DllImportAttribute, que você usa para definir métodos de invocação de plataforma para acessar APIs não gerenciadas e MarshalAsAttribute, que você usa para especificar como os dados são empacotados entre memória gerenciada e não gerenciada.