Marshal.GetComInterfaceForObject Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve un puntero de interfaz que representa una interfaz para un objeto.
Sobrecargas
GetComInterfaceForObject(Object, Type) |
Obsoletos.
Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada. |
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) |
Obsoletos.
Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado. El modo de personalización especificado controla el acceso a la interfaz de consulta personalizada. |
GetComInterfaceForObject<T,TInterface>(T) |
Devuelve un puntero a una interfaz IUnknown que representa la interfaz en un objeto del tipo especificado. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada. |
GetComInterfaceForObject(Object, Type)
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
Precaución
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
Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.
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
Objeto que proporciona la interfaz.
- T
- Type
Tipo de interfaz que se solicita.
Devoluciones
nativeint
Puntero de interfaz que representa la interfaz especificada para el objeto.
- Atributos
Excepciones
El parámetro T
no es una interfaz.
o bien
El tipo no es visible para COM.
o bien
El parámetro T
es una definición de tipo genérico.
El parámetro o
no admite la interfaz solicitada.
Comentarios
Este método devuelve un puntero de interfaz que representa la interfaz solicitada en el objeto especificado. Resulta especialmente útil si tiene un método no administrado que espera pasar un puntero de interfaz. Llamar a un objeto con este método hace que el recuento de referencias aumente en el puntero de interfaz antes de que se devuelva el puntero. Marshal.Release Use siempre para disminuir el recuento de referencias una vez que haya terminado con el puntero. Debe cumplir las reglas definidas por COM al usar punteros de interfaz COM sin formato.
GetComInterfaceForObject(Object, Type) resulta útil al llamar a un método que expone un parámetro de objeto COM como un IntPtr tipo o con serialización personalizada. Aunque es menos común, puede usar este método en un objeto administrado para obtener un puntero al contenedor al que se puede llamar COM del objeto. Por ejemplo, puede usar GetComInterfaceForObject(Object, Type) en un objeto administrado que se exporta a COM para obtener un puntero de interfaz para System.Runtime.InteropServices.UCOMIConnectionPointContainer. No se puede obtener un puntero a una interfaz de clase, ya que una interfaz de clase carece del tipo correspondiente para pasar al segundo parámetro (t
). En su lugar, use Marshal.GetIDispatchForObject para invocar a los miembros en la interfaz predeterminada del contenedor al que se puede llamar COM, que suele ser una interfaz de clase de distribución automática.
La sobrecarga del método permite la GetComInterfaceForObject(Object, Type) personalización de la interfaz de consulta de forma predeterminada. Para especificar si se va a aplicar la personalización de la interfaz de consulta, use la sobrecarga del GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) método .
Para obtener más información, consulte los artículos Contenedor al que se puede llamar COM y Contenedor que se puede llamar en tiempo de ejecución .
Consulte también
- GetComInterfaceForObjectInContext(Object, Type)
- ComImportAttribute
- Release(IntPtr)
- UCOMIConnectionPointContainer
- GetIDispatchForObject(Object)
Se aplica a
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
Precaución
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.
Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado. El modo de personalización especificado controla el acceso a la interfaz de consulta personalizada.
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
Objeto que proporciona la interfaz.
- T
- Type
Tipo de interfaz que se solicita.
Uno de los valores de enumeración que indica si se aplica una personalización IUnknown::QueryInterface
proporcionada por ICustomQueryInterface.
Devoluciones
nativeint
Puntero de interfaz que representa la interfaz para el objeto.
- Atributos
Excepciones
El parámetro T
no es una interfaz.
o bien
El tipo no es visible para COM.
o bien
El parámetro T
es una definición de tipo genérico.
El objeto o
no admite la interfaz solicitada.
Comentarios
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) permite especificar si se va a aplicar la personalización de la interfaz de consulta. Use la sobrecarga para aplicar la GetComInterfaceForObject(Object, Type) personalización de la interfaz de consulta de forma predeterminada.
Se aplica a
GetComInterfaceForObject<T,TInterface>(T)
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
- Source:
- Marshal.NoCom.cs
Devuelve un puntero a una interfaz IUnknown que representa la interfaz en un objeto del tipo especificado. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.
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
Tipo de o
.
- TInterface
Tipo de interfaz que se va a devolver.
Parámetros
- o
- T
Objeto que proporciona la interfaz.
Devoluciones
nativeint
Puntero de interfaz que representa la interfaz TInterface
.
- Atributos
Excepciones
El parámetro TInterface
no es una interfaz.
o bien
El tipo no es visible para COM.
o bien
El parámetro T
es un tipo genérico abierto.
El parámetro o
no admite la interfaz TInterface
.
El parámetro o
es null
.
Comentarios
Este método devuelve un puntero de interfaz que representa la TInterface
interfaz en el objeto especificado. Resulta especialmente útil si tiene un método no administrado que espera pasar un puntero de interfaz. Llamar a un objeto con este método hace que el recuento de referencias aumente en el puntero de interfaz antes de que se devuelva el puntero. Use siempre el método para reducir el Marshal.Release recuento de referencias cuando haya terminado con el puntero. Debe cumplir las reglas definidas por COM al usar punteros de interfaz COM sin formato.
GetComInterfaceForObject<T,TInterface>(T) resulta útil al llamar a un método que expone un parámetro de objeto COM como un IntPtr tipo o con serialización personalizada. También puede usar este método en un objeto administrado para obtener un puntero al contenedor al que se puede llamar COM del objeto, aunque esto es menos común. Por ejemplo, puede usar GetComInterfaceForObject<T,TInterface>(T) en un objeto administrado que se exporta a COM para obtener un puntero de interfaz para System.Runtime.InteropServices.UCOMIConnectionPointContainer.
La sobrecarga del método permite la GetComInterfaceForObject<T,TInterface>(T) personalización de la interfaz de consulta de forma predeterminada. Para especificar si se va a aplicar la personalización de la interfaz de consulta, use la sobrecarga del GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) método .
Para obtener más información, consulte los artículos Contenedor al que se puede llamar COM y Contenedor que se puede llamar en tiempo de ejecución .