Marshal.GetComInterfaceForObject Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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)
- Origem:
- Marshal.NoCom.cs
- Origem:
- Marshal.NoCom.cs
- Origem:
- Marshal.NoCom.cs
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
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.
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 seja incrementada no ponteiro da interface antes que o ponteiro seja retornado. Sempre use Marshal.Release para diminuir a contagem de referência 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
- GetComInterfaceForObjectInContext(Object, Type)
- ComImportAttribute
- Release(IntPtr)
- UCOMIConnectionPointContainer
- GetIDispatchForObject(Object)
Aplica-se a
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
- Origem:
- Marshal.NoCom.cs
- Origem:
- Marshal.NoCom.cs
- Origem:
- Marshal.NoCom.cs
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.
Um dos valores de enumeração que indica se é necessário aplicar uma personalização IUnknown::QueryInterface
fornecida por um ICustomQueryInterface.
Retornos
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.
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)
- Origem:
- Marshal.NoCom.cs
- Origem:
- Marshal.NoCom.cs
- Origem:
- Marshal.NoCom.cs
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
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 seja incrementada 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.