Compartir a través de


Marshal.GetComInterfaceForObject Método

Definición

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

IntPtr

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.

El parámetro o es null.

o bien

El parámetro T es null.

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

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.

mode
CustomQueryInterfaceMode

Uno de los valores de enumeración que indica si se aplica una personalización IUnknown::QueryInterface proporcionada por ICustomQueryInterface.

Devoluciones

IntPtr

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.

El parámetro o es null.

o bien

El parámetro T es null.

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

IntPtr

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 .

Se aplica a