System.Runtime.InteropServices Namespace

Fornece uma ampla variedade de membros que dão 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 comde 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 ser empacotado usando o marshaler de Automação ou um proxy e stub personalizados.

BestFitMappingAttribute

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

BStrWrapper

Faz marshaling de dados do tipo VT_BSTR de código gerenciado para 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 gerada.

CoClassAttribute

Especifica o identificador de classe de uma coclass importada 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 para um parâmetro ou tipo de campo.

ComAwareEventInfo

Permite o registro de limite tardio 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 classes em uma versão anterior do assembly.

ComConversionLossAttribute

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

ComDefaultInterfaceAttribute

Especifica uma interface padrão a ser exposta 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 de evento gerados quando uma coclasse é importada de uma biblioteca de tipos COM.

ComEventsHelper

Fornece métodos que permitem que delegados do .NET que lidam com eventos sejam adicionados e removidos de objetos COM.

COMException

A exceção gerada quando um HRESULT não reconhecido é retornado de uma chamada de método COM.

ComImportAttribute

Indica que o tipo atribuído foi definido anteriormente em COM.

ComRegisterFunctionAttribute

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

ComSourceInterfacesAttribute

Identifica uma lista de interfaces expostas como fontes 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 do COM; isso permite a execução de código escrito pelo usuário durante o processo de cancelamento de registro.

ComVisibleAttribute

Controla a acessibilidade de um tipo ou membro gerenciado individual, ou de todos os tipos em um assembly, para COM.

ComWrappers

Classe para gerenciar wrappers de tipos COM IUnknown.

CriticalHandle

Representa uma classe wrapper para manipular recursos.

CurrencyWrapper

Encapsula objetos que o marshaler 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 usados para pesquisar DLLs que fornecem funções para invocações de plataforma.

DefaultParameterValueAttribute

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

DispatchWrapper

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

DispIdAttribute

Especifica o DISPID (identificador de expedição 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 marshaler 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 base para todas as exceções de interoperabilidade COM e exceções de SEH (tratamento de exceção estruturada).

FieldOffsetAttribute

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

GuidAttribute

Fornece uma Guid explícita quando um GUID automático é indesejável.

HandleCollector

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

IDispatchImplAttribute

Indica qual IDispatch implementação que o common language runtime usa ao expor interfaces duplas e dispinterfaces ao COM.

ImmutableCollectionsMarshal

Uma classe não segura 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 em um assembly foram originalmente definidos em uma biblioteca de tipos.

InAttribute

Indica que os dados devem ser empacotados do chamador para o destinatário, mas não de volta para o chamador.

InterfaceTypeAttribute

Indica se uma interface gerenciada é dupla, somente expedição ou IUnknown -only quando exposta ao COM.

InvalidComObjectException

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

InvalidOleVariantTypeException

A exceção gerada pelo marshaler quando ele encontra um argumento de um tipo variante que não pode ser marshaled para o código gerenciado.

JsonMarshal

Fornece uma ampla variedade de membros que dão 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 comde código não gerenciado.

LCIDConversionAttribute

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

LibraryImportAttribute

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

ManagedToNativeComInteropStubAttribute

Fornece suporte para a personalização do usuário de stubs de interoperabilidade em cenários de interoperabilidade gerenciados para COM.

Marshal

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.

MarshalAsAttribute

Indica como fazer marshaling dos dados entre código gerenciado e não gerenciado.

MarshalDirectiveException

A exceção gerada pelo marshaler quando ele encontra um MarshalAsAttribute ele não dá 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 usados principalmente para gerenciar a memória nativa.

OptionalAttribute

Indica que um parâmetro é opcional.

OutAttribute

Indica que os dados devem ser empacotados do destinatário do chamador de volta para o chamador.

PosixSignalContext

Fornece dados para um evento de PosixSignalRegistration.

PosixSignalRegistration

Manipula um PosixSignal.

PreserveSigAttribute

Indica que a transformação de assinatura HRESULT que ocorre durante 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 do .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 do 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 (subexecuções e excessos) geram exceções.

SafeHandle

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

SEHException

Representa erros de SEH (tratamento de exceção estruturado).

SequenceMarshal

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

SetWin32ContextInIDispatchAttribute

Esse atributo foi preterido.

StandardOleMarshalObject

Substitui o marshaler de thread livre clr (common language runtime) padrão 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 deve ser ignorada quando uma chamada de função não gerenciada é feita.

TypeIdentifierAttribute

Fornece suporte para 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 os FUNCFLAGS que foram originalmente importados 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 os TYPEFLAGS que foram importados originalmente para esse tipo da biblioteca de tipos COM.

TypeLibVarAttribute

Contém os VARFLAGS que foram originalmente importados 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 marshaler 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

Qualquer método marcado com UnmanagedCallersOnlyAttribute pode ser chamado diretamente do código nativo. O token de função pode ser carregado em uma variável local usando o operador de endereço de em C# e passado como um retorno de chamada para um método nativo.

UnmanagedFunctionPointerAttribute

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

VariantWrapper

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

WasmImportLinkageAttribute

Especifica que o P/Invoke marcado com esse atributo deve ser vinculado como uma importação WASM.

Estruturas

ArrayWithOffset

Encapsula uma matriz e um deslocamento dentro da matriz especificada.

BIND_OPTS

Em vez disso, use BIND_OPTS.

BINDPTR

Em vez disso, use BINDPTR.

CLong

CLong é um tipo de valor imutável que representa o tipo long 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 tipo long. 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 VTable de destino.

CONNECTDATA

Em vez disso, use CONNECTDATA.

CULong

CULong é um tipo de valor imutável que representa o tipo unsigned long 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 tipo unsigned long. 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

Em vez disso, use DISPPARAMS.

ELEMDESC

Em vez disso, use ELEMDESC.

ELEMDESC.DESCUNION

Em vez disso, use ELEMDESC.DESCUNION.

EXCEPINFO

Em vez disso, use EXCEPINFO.

FILETIME

Em vez disso, use FILETIME.

FUNCDESC

Em vez disso, use FUNCDESC.

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

Em vez disso, use IDLDESC.

NFloat

NFloat é um tipo de valor imutável que representa um tipo flutuante que tem o mesmo tamanho do 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 float de C ou C++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

Em vez disso, use PARAMDESC.

STATSTG

Em vez disso, use STATSTG.

TYPEATTR

Em vez disso, use TYPEATTR.

TYPEDESC

Em vez disso, use TYPEDESC.

TYPELIBATTR

Em vez disso, use TYPELIBATTR.

VARDESC

Em vez disso, use VARDESC.

VARDESC.DESCUNION

Em vez disso, use VARDESC.DESCUNION.

Interfaces

_Activator

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

_Assembly

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

_AssemblyBuilder

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

_AssemblyName

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

_Attribute

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

_ConstructorBuilder

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

_ConstructorInfo

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

_CustomAttributeBuilder

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

_EnumBuilder

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

_EventBuilder

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

_EventInfo

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

_Exception

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

_FieldBuilder

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

_FieldInfo

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

_ILGenerator

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

_LocalBuilder

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

_MemberInfo

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

_MethodBase

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

_MethodBuilder

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

_MethodInfo

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

_MethodRental

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

_Module

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

_ModuleBuilder

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

_ParameterBuilder

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

_ParameterInfo

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

_PropertyBuilder

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

_PropertyInfo

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

_SignatureHelper

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

_Thread

Expõe a classe Thread ao 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 ao código não gerenciado.

ICustomAdapter

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

ICustomFactory

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

ICustomMarshaler

Fornece wrappers personalizados para lidar com chamadas de método.

ICustomQueryInterface

Permite que os desenvolvedores forneçam uma implementação gerenciada personalizada 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 de nomes quando exportados para uma biblioteca de tipos.

ITypeLibExporterNotifySink

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

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 envolver o chamador no próprio processo de conversão.

UCOMIBindCtx

Em vez disso, use BIND_OPTS.

UCOMIConnectionPoint

Em vez disso, use IConnectionPoint.

UCOMIConnectionPointContainer

Em vez disso, use IConnectionPointContainer.

UCOMIEnumConnectionPoints

Em vez disso, use IEnumConnectionPoints.

UCOMIEnumConnections

Em vez disso, use IEnumConnections.

UCOMIEnumMoniker

Em vez disso, use IEnumMoniker.

UCOMIEnumString

Em vez disso, use IEnumString.

UCOMIEnumVARIANT

Em vez disso, use IEnumVARIANT.

UCOMIMoniker

Em vez disso, use IMoniker.

UCOMIPersistFile

Em vez disso, use IPersistFile.

UCOMIRunningObjectTable

Em vez disso, use IRunningObjectTable.

UCOMIStream

Em vez disso, use IStream.

UCOMITypeComp

Em vez disso, use ITypeComp.

UCOMITypeInfo

Em vez disso, use ITypeInfo.

UCOMITypeLib

Em vez disso, use ITypeLib.

Enumerações

Architecture

Indica a arquitetura do processador.

AssemblyRegistrationFlags

Define um conjunto de sinalizadores usados ao registrar assemblies.

CALLCONV

Em vez disso, use CALLCONV.

CallingConvention

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

CharSet

Determina qual conjunto de caracteres as cadeias de caracteres marshaled devem usar.

ClassInterfaceType

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

ComInterfaceType

Identifica como expor uma interface ao COM.

ComMemberType

Descreve o tipo de membro COM.

CreateComInterfaceFlags

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

CreateObjectFlags

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

CustomQueryInterfaceMode

Indica se as chamadas do método IUnknown::QueryInterface podem usar a interface .

CustomQueryInterfaceResult

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

DESCKIND

Em vez disso, use DESCKIND.

DllImportSearchPath

Especifica os caminhos usados para pesquisar DLLs que fornecem funções para invocações de plataforma.

ExporterEventKind

Descreve os retornos de chamada que o exportador da biblioteca de tipos faz ao exportar uma biblioteca de tipos.

FUNCFLAGS

Em vez disso, use FUNCFLAGS.

FUNCKIND

Em vez disso, use FUNCKIND.

GCHandleType

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

IDispatchImplType

Indica qual IDispatch implementação a ser usada para uma determinada classe.

IDLFLAG

Em vez disso, use IDLFLAG.

IMPLTYPEFLAGS

Em vez disso, use IMPLTYPEFLAGS.

ImporterEventKind

Descreve os retornos de chamada que o importador de biblioteca de tipos faz ao importar uma biblioteca de tipos.

INVOKEKIND

Em vez disso, use INVOKEKIND.

LayoutKind

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

LIBFLAGS

Em vez disso, use LIBFLAGS.

PARAMFLAG

Em vez disso, use PARAMFLAG.

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 construir instâncias.

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

Em vez disso, use SYSKIND.

TYPEFLAGS

Em vez disso, use TYPEFLAGS.

TYPEKIND

Em vez disso, use TYPEKIND.

TypeLibExporterFlags

Indica como uma biblioteca de tipos deve ser produzida.

TypeLibFuncFlags

Descreve as configurações originais do FUNCFLAGS na biblioteca de tipos COM de onde 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 o tipo foi importado.

TypeLibVarFlags

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

UnmanagedType

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

VarEnum

Indica como fazer marshaling dos elementos da matriz quando uma matriz é marshalada de código gerenciado para não gerenciado como um SafeArray.

VARFLAGS

Em vez disso, use VARFLAGS.

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