Marshal.GetComInterfaceForObject Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve um ponteiro de interface que representa uma interface para um objeto.
Sobrecargas
| Name | Description |
|---|---|
| GetComInterfaceForObject(Object, Type) |
Obsoleto.
Devolve um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado. O acesso personalizado à interface de consulta está ativado por defeito. |
| GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) |
Obsoleto.
Devolve 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) |
Devolve um ponteiro para uma interface IUnknown que representa a interface especificada num objeto do tipo especificado. O acesso personalizado à interface de consulta está ativado por defeito. |
GetComInterfaceForObject(Object, Type)
Atenção
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
Devolve um ponteiro para uma interface IUnknown que representa a interface especificada no objeto especificado. O acesso personalizado à interface de consulta está ativado por defeito.
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);
public static IntPtr GetComInterfaceForObject(object o, Type T);
[System.Security.SecurityCritical]
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
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Security.SecurityCritical>]
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 que é pedido.
Devoluções
nativeint
O ponteiro de interface que representa a interface especificada para o objeto.
- Atributos
Exceções
O T parâmetro não é uma interface.
-ou-
O tipo não é visível para o COM.
-ou-
O T parâmetro é uma definição de tipo genérica.
O o parâmetro não suporta a interface solicitada.
Observações
Este método devolve um ponteiro de interface que representa a interface solicitada no objeto especificado. É particularmente útil se tiveres um método não gerido que espera receber um ponteiro de interface. Chamar um objeto com este método faz com que a contagem de referências aumente no ponteiro da interface antes de este ser devolvido. Usa Marshal.Release sempre para diminuir a contagem de referências depois de terminares com o apontador. Deve cumprir 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 menos comum, pode usar este método num objeto gerido para obter um ponteiro para o wrapper COM chamável do objeto. Por exemplo, pode usar GetComInterfaceForObject(Object, Type) num objeto gerido que é exportado para COM para obter um ponteiro de interface para System.Runtime.InteropServices.UCOMIConnectionPointContainer. Não pode obter um ponteiro para uma interface de classe porque uma interface de classe não tem o tipo correspondente para passar ao segundo parâmetro (t). Em vez disso, use Marshal.GetIDispatchForObject para invocar os membros na interface padrão do wrapper chamável COM, que normalmente é uma interface de classe de auto-dispatch.
A GetComInterfaceForObject(Object, Type) sobrecarga de métodos permite a personalização da interface de consulta por defeito. Para especificar se deve aplicar a personalização da interface de consulta, use a GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) sobrecarga de métodos.
Para informações adicionais, consulte os artigos sobre o COM Callable Wrapper e o Runtime Callable Wrapper .
Ver também
- GetComInterfaceForObjectInContext(Object, Type)
- ComImportAttribute
- Release(IntPtr)
- UCOMIConnectionPointContainer
- GetIDispatchForObject(Object)
Aplica-se a
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Atenção
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.
Devolve 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.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.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 que é pedido.
Um dos valores de enumeração que indica se deve aplicar uma IUnknown::QueryInterface personalização fornecida por um ICustomQueryInterface.
Devoluções
nativeint
O ponteiro de interface que representa a interface do objeto.
- Atributos
Exceções
O T parâmetro não é uma interface.
-ou-
O tipo não é visível para o COM.
-ou-
O T parâmetro é uma definição de tipo genérica.
O objeto o não suporta a interface solicitada.
Observações
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) Permite-lhe especificar se deve aplicar a personalização da interface de consulta. Use a GetComInterfaceForObject(Object, Type) sobrecarga para aplicar a personalização da interface de consulta por defeito.
Aplica-se a
GetComInterfaceForObject<T,TInterface>(T)
Devolve um ponteiro para uma interface IUnknown que representa a interface especificada num objeto do tipo especificado. O acesso personalizado à interface de consulta está ativado por defeito.
public:
generic <typename T, typename TInterface>
static IntPtr GetComInterfaceForObject(T o);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface>(T o);
public static IntPtr GetComInterfaceForObject<T,TInterface>(T o);
[<System.Security.SecurityCritical>]
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 Genérico
- T
O tipo de o.
- TInterface
O tipo de interface para voltar.
Parâmetros
- o
- T
O objeto que fornece a interface.
Devoluções
nativeint
O ponteiro da interface que representa a TInterface interface.
- Atributos
Exceções
O TInterface parâmetro não é uma interface.
-ou-
O tipo não é visível para o COM.
-ou-
O T parâmetro é um tipo genérico aberto.
O o parâmetro não suporta a TInterface interface.
O o parâmetro é null.
Observações
Este método devolve um ponteiro de interface que representa a TInterface interface no objeto especificado. É particularmente útil se tiveres um método não gerido que espera receber um ponteiro de interface. Chamar um objeto com este método faz com que a contagem de referências aumente no ponteiro da interface antes de este ser devolvido. Usa sempre o Marshal.Release método para diminuir a contagem de referências quando terminares com o apontador. Deve cumprir 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. Também pode usar este método num objeto gerido para obter um ponteiro para o wrapper COM chamável do objeto, embora isto seja menos comum. Por exemplo, pode usar GetComInterfaceForObject<T,TInterface>(T) num objeto gerido que é exportado para COM para obter um ponteiro de interface para System.Runtime.InteropServices.UCOMIConnectionPointContainer.
A GetComInterfaceForObject<T,TInterface>(T) sobrecarga de métodos permite a personalização da interface de consulta por defeito. Para especificar se deve aplicar a personalização da interface de consulta, use a GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) sobrecarga de métodos.
Para informações adicionais, consulte os artigos sobre o COM Callable Wrapper e o Runtime Callable Wrapper .