Compartilhar via


Método Marshal.GetComInterfaceForObject (Object, Type)

 

Dica

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

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

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Sintaxe

[SecurityCriticalAttribute]
public static IntPtr GetComInterfaceForObject(
    object o,
    Type T
)
public:
[SecurityCriticalAttribute]
static IntPtr GetComInterfaceForObject(
    Object^ o,
    Type^ T
)
[<SecurityCriticalAttribute>]
static member GetComInterfaceForObject : 
        o:Object *
        T:Type -> nativeint
<SecurityCriticalAttribute>
Public Shared Function GetComInterfaceForObject (
    o As Object,
    T As Type
) As IntPtr

Parâmetros

Valor Retornado

Type: System.IntPtr

O ponteiro da interface que representa a interface especificada para o objeto.

Exceções

Exception Condition
ArgumentException

O parâmetro T não é uma interface.

-ou-

O tipo não é visível para COM.

-ou-

O parâmetro T é um tipo genérico.

InvalidCastException

O parâmetro o não dá suporte à interface solicitada.

ArgumentNullException

O parâmetro o é null.

-ou-

O parâmetro T é null.

Comentários

Esse método retorna um ponteiro de interface que representa a interface solicitada no objeto especificado. É particularmente útil se você tiver um método não gerenciado que espera deve passar um ponteiro de interface. Chamando um objeto com esse método faz com que a contagem de referência incrementar o ponteiro de interface antes do ponteiro será retornado. Sempre use Marshal.Release para diminuir a contagem de referência quando tiver concluído com o ponteiro. Você deve aderir às regras definidas pelo COM ao usar ponteiros de interface COM bruto.

GetComInterfaceForObject(Object, Type)é útil ao chamar um método que expõe um parâmetro de objeto COM como uma IntPtr tipo, ou com empacotamento personalizado. Embora menos comum, você pode usar esse método em um objeto gerenciado para obter um ponteiro para invólucro do objeto. Por exemplo, você pode usar GetComInterfaceForObject(Object, Type) em um objeto gerenciado que é exportado para COM para obter um ponteiro de interface para System.Runtime.InteropServices.UCOMIConnectionPointContainer. Você não pode obter um ponteiro para uma interface de classe como uma interface de classe não tem o tipo correspondente para passar para o segundo parâmetro (t). Em vez disso, use Marshal.GetIDispatchForObject para invocar os membros na interface do padrão de invólucro, que geralmente é uma interface de classe de distribuição automática.

O GetComInterfaceForObject(Object, Type) sobrecarga do método permite a personalização da interface de consulta por padrão. Para especificar se deseja aplicar a personalização da interface de consulta, use o GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) sobrecarga do método.

Para obter informações adicionais, consulte o COM Callable Wrapper, RCW (Runtime Callable Wrapper), e introduzindo a Interface de classe tópicos.

Segurança

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

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
Windows Phone Silverlight
Disponível desde 8.0
Windows Phone
Disponível desde 8.1

Confira Também

GetComInterfaceForObjectInContext
ComImportAttribute
Release
UCOMIConnectionPointContainer
GetIDispatchForObject
GetComInterfaceForObject Sobrecarga
Classe Marshal
Namespace System.Runtime.InteropServices

Retornar ao início