Marshal.GetComInterfaceForObject Método

Definição

Retorna um ponteiro de interface que representa uma interface para um objeto.

Sobrecargas

GetComInterfaceForObject(Object, Type)
Obsoleto.

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

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Obsoleto.

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

GetComInterfaceForObject<T,TInterface>(T)

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

GetComInterfaceForObject(Object, Type)

Cuidado

GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509

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

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T);
[System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
public static IntPtr GetComInterfaceForObject (object o, Type T);
[<System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

Parâmetros

o
Object

O objeto que fornece a interface.

T
Type

O tipo de interface solicitado.

Retornos

IntPtr

nativeint

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

Atributos

Exceções

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

- ou -

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

- ou -

O parâmetro T é uma definição de tipo genérico.

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

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 ser passado um ponteiro de interface. Chamar um objeto com esse método faz com que a contagem de referência incremente no ponteiro da interface antes que o ponteiro seja retornado. Sempre use Marshal.Release para diminuir a contagem de referências depois de terminar com o ponteiro. Você deve seguir as regras definidas pelo COM ao usar ponteiros de interface COM brutos.

GetComInterfaceForObject(Object, Type) é útil ao chamar um método que expõe um parâmetro de objeto COM como um IntPtr tipo ou com marshaling personalizado. Embora seja menos comum, você pode usar esse método em um objeto gerenciado para obter um ponteiro para o wrapper callable COM 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, pois 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 padrão do wrapper callable COM, que geralmente é uma interface de classe de expedição automática.

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

Para obter informações adicionais, consulte os artigos Wrapper Callable Wrapper e Runtime Callable Wrapper do COM.

Confira também

Aplica-se a

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Cuidado

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.

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

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T, System::Runtime::InteropServices::CustomQueryInterfaceMode mode);
[System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[<System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type, mode As CustomQueryInterfaceMode) As IntPtr

Parâmetros

o
Object

O objeto que fornece a interface.

T
Type

O tipo de interface solicitado.

mode
CustomQueryInterfaceMode

Um dos valores de enumeração que indica se é necessário aplicar uma personalização IUnknown::QueryInterface fornecida por um ICustomQueryInterface.

Retornos

IntPtr

nativeint

O ponteiro de interface que representa a interface para o objeto.

Atributos

Exceções

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

- ou -

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

- ou -

O parâmetro T é uma definição de tipo genérico.

O objeto o não dá suporte à interface solicitada.

O parâmetro o é null.

- ou -

O parâmetro T é null.

Comentários

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) permite que você especifique se deseja aplicar a personalização da interface de consulta. Use a GetComInterfaceForObject(Object, Type) sobrecarga para aplicar a personalização da interface de consulta por padrão.

Aplica-se a

GetComInterfaceForObject<T,TInterface>(T)

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

public:
generic <typename T, typename TInterface>
 static IntPtr GetComInterfaceForObject(T o);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : 'T -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : 'T -> nativeint
static member GetComInterfaceForObject : 'T -> nativeint
Public Shared Function GetComInterfaceForObject(Of T, TInterface) (o As T) As IntPtr

Parâmetros de tipo

T

O tipo de o.

TInterface

O tipo de interface a ser retornado.

Parâmetros

o
T

O objeto que fornece a interface.

Retornos

IntPtr

nativeint

O ponteiro de interface que representa a interface TInterface.

Atributos

Exceções

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

- ou -

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

- ou -

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

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

O parâmetro o é null.

Comentários

Esse método retorna um ponteiro de interface que representa a TInterface interface no objeto especificado. É particularmente útil se você tiver um método não gerenciado que espera ser passado um ponteiro de interface. Chamar um objeto com esse método faz com que a contagem de referência incremente no ponteiro da interface antes que o ponteiro seja retornado. Sempre use o Marshal.Release método para diminuir a contagem de referência quando terminar de usar o ponteiro. Você deve seguir as regras definidas pelo COM ao usar ponteiros de interface COM brutos.

GetComInterfaceForObject<T,TInterface>(T) é útil ao chamar um método que expõe um parâmetro de objeto COM como um IntPtr tipo ou com marshaling personalizado. Você também pode usar esse método em um objeto gerenciado para obter um ponteiro para o wrapper callable COM do objeto, embora isso seja menos comum. Por exemplo, você pode usar GetComInterfaceForObject<T,TInterface>(T) em um objeto gerenciado que é exportado para COM para obter um ponteiro de interface para System.Runtime.InteropServices.UCOMIConnectionPointContainer.

A GetComInterfaceForObject<T,TInterface>(T) sobrecarga do método permite a personalização da interface de consulta por padrão. Para especificar se a personalização da interface de consulta deve ser aplicada, use a sobrecarga do GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) método.

Para obter informações adicionais, consulte os artigos Wrapper Callable Wrapper e Runtime Callable Wrapper do COM.

Aplica-se a