Marshal.GetComInterfaceForObject Método

Definición

Devuelve un puntero de interfaz que representa una interfaz para un objeto.Returns an interface pointer that represents an interface for an object.

Sobrecargas

GetComInterfaceForObject(Object, Type)
Obsoleto.

Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Obsoleto.

Devuelve un puntero a una interfaz IUnknown que representa la interfaz especificada en el objeto indicado.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. El modo de personalización especificado controla el acceso a la interfaz de consulta personalizada.Custom query interface access is controlled by the specified customization mode.

GetComInterfaceForObject<T,TInterface>(T)

[Compatible con .NET Framework 4.5.1 y versiones posteriores][Supported in the .NET Framework 4.5.1 and later versions] Devuelve un puntero a una interfaz IUnknown que representa la interfaz en un objeto del tipo especificado.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type)

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.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.Custom query interface access is enabled by default.

public:
 static IntPtr GetComInterfaceForObject(System::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]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
static member GetComInterfaceForObject : obj * Type -> nativeint
[<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.Security.SecurityCritical>]
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.The object that provides the interface.

T
Type

Tipo de interfaz que se solicita.The type of interface that is requested.

Devoluciones

IntPtr

Puntero de interfaz que representa la interfaz especificada para el objeto.The interface pointer that represents the specified interface for the object.

Atributos

Excepciones

El parámetro T no es una interfaz.The T parameter is not an interface.

o bien-or- El tipo no es visible para COM.The type is not visible to COM.

o bien-or- El parámetro T es una definición de tipo genérico.The T parameter is a generic type definition.

El parámetro o no admite la interfaz solicitada.The o parameter does not support the requested interface.

El parámetro o es null.The o parameter is null.

o bien-or- El parámetro T es null.The T parameter is null.

Comentarios

Este método devuelve un puntero de interfaz que representa la interfaz solicitada en el objeto especificado.This method returns an interface pointer that represents the requested interface on the specified object. Es especialmente útil si tiene un método no administrado que espera que se pase un puntero de interfaz.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. La llamada 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.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Use siempre Marshal.Release para reducir el recuento de referencias una vez que haya terminado con el puntero.Always use Marshal.Release to decrement the reference count once you have finished with the pointer. Debe cumplir las reglas definidas por COM al utilizar punteros de interfaz COM sin formato.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject(Object, Type) resulta útil cuando se llama a un método que expone un parámetro de objeto COM como un IntPtr tipo o con cálculo de referencias personalizado.GetComInterfaceForObject(Object, Type) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. Aunque es menos común, puede usar este método en un objeto administrado para obtener un puntero al contenedor COM al que se puede llamar del objeto.Although less common, you can use this method on a managed object to obtain a pointer to the object's COM callable wrapper. Por ejemplo, puede usar GetComInterfaceForObject(Object, Type) en un objeto administrado que se exporte a com para obtener un puntero de interfaz para System.Runtime.InteropServices.UCOMIConnectionPointContainer .For example, you can use GetComInterfaceForObject(Object, Type) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer. No se puede obtener un puntero a una interfaz de clase, ya que la interfaz de clase no tiene el tipo correspondiente para pasar al segundo parámetro ( t ).You cannot obtain a pointer to a class interface since a class interface lacks the corresponding type to pass to the second parameter (t). En su lugar, use Marshal.GetIDispatchForObject para invocar a los miembros de la interfaz predeterminada del contenedor com al que se puede llamar, que suele ser una interfaz de clase de distribución automática.Instead, use Marshal.GetIDispatchForObject to invoke the members on the default interface of the COM callable wrapper, which is usually an auto-dispatch class interface.

La GetComInterfaceForObject(Object, Type) sobrecarga del método permite la personalización de la interfaz de consulta de forma predeterminada.The GetComInterfaceForObject(Object, Type) method overload allows query interface customization by default. Para especificar si se va a aplicar la personalización de la interfaz de consulta, use la GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) sobrecarga del método.To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Para obtener más información, consulte los artículos sobre contenedores a los que se puede llamar en tiempo de ejecución y de contenedor com .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Consulte también

Se aplica a

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

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.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. El modo de personalización especificado controla el acceso a la interfaz de consulta personalizada.Custom query interface access is controlled by the specified customization mode.

public:
 static IntPtr GetComInterfaceForObject(System::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]
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);
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<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
Public Shared Function GetComInterfaceForObject (o As Object, T As Type, mode As CustomQueryInterfaceMode) As IntPtr

Parámetros

o
Object

Objeto que proporciona la interfaz.The object that provides the interface.

T
Type

Tipo de interfaz que se solicita.The type of interface that is requested.

mode
CustomQueryInterfaceMode

Uno de los valores de enumeración que indica si se aplica una personalización IUnknown::QueryInterface proporcionada por ICustomQueryInterface.One of the enumeration values that indicates whether to apply an IUnknown::QueryInterface customization that is supplied by an ICustomQueryInterface.

Devoluciones

IntPtr

Puntero de interfaz que representa la interfaz para el objeto.The interface pointer that represents the interface for the object.

Atributos

Excepciones

El parámetro T no es una interfaz.The T parameter is not an interface.

o bien-or- El tipo no es visible para COM.The type is not visible to COM.

o bien-or- El parámetro T es una definición de tipo genérico.The T parameter is a generic type definition.

El objeto o no admite la interfaz solicitada.The object o does not support the requested interface.

El parámetro o es null.The o parameter is null.

o bien-or- El parámetro T es null.The T parameter is null.

Comentarios

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) permite especificar si se va a aplicar la personalización de la interfaz de consulta.GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) lets you specify whether to apply query interface customization. Use la GetComInterfaceForObject(Object, Type) sobrecarga para aplicar la personalización de la interfaz de consulta de forma predeterminada.Use the GetComInterfaceForObject(Object, Type) overload to apply query interface customization by default.

Se aplica a

GetComInterfaceForObject<T,TInterface>(T)

[Compatible con .NET Framework 4.5.1 y versiones posteriores][Supported in the .NET Framework 4.5.1 and later versions] Devuelve un puntero a una interfaz IUnknown que representa la interfaz en un objeto del tipo especificado.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. El acceso a la interfaz de consulta personalizada está habilitado de forma predeterminada.Custom query interface access is enabled by default.

public:
generic <typename T, typename TInterface>
 static IntPtr GetComInterfaceForObject(T o);
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
public static IntPtr GetComInterfaceForObject<T,TInterface> (T? o);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
static member GetComInterfaceForObject : 'T -> nativeint
[<System.Security.SecurityCritical>]
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.The type of o.

TInterface

Tipo de interfaz que se va a devolver.The type of interface to return.

Parámetros

o
T

Objeto que proporciona la interfaz.The object that provides the interface.

Devoluciones

IntPtr

Puntero de interfaz que representa la interfaz TInterface.The interface pointer that represents the TInterface interface.

Atributos

Excepciones

El parámetro TInterface no es una interfaz.The TInterface parameter is not an interface.

o bien-or- El tipo no es visible para COM.The type is not visible to COM.

o bien-or- El parámetro T es un tipo genérico abierto.The T parameter is an open generic type.

El parámetro o no admite la interfaz TInterface.The o parameter does not support the TInterface interface.

El parámetro o es null.The o parameter is null.

Comentarios

Este método devuelve un puntero de interfaz que representa la TInterface interfaz en el objeto especificado.This method returns an interface pointer that represents the TInterface interface on the specified object. Es especialmente útil si tiene un método no administrado que espera que se pase un puntero de interfaz.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. La llamada 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.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Use siempre el Marshal.Release método para reducir el recuento de referencias cuando haya terminado con el puntero.Always use the Marshal.Release method to decrement the reference count when you have finished with the pointer. Debe cumplir las reglas definidas por COM al utilizar punteros de interfaz COM sin formato.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject<T,TInterface>(T) resulta útil cuando se llama a un método que expone un parámetro de objeto COM como un IntPtr tipo o con cálculo de referencias personalizado.GetComInterfaceForObject<T,TInterface>(T) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. También puede utilizar este método en un objeto administrado para obtener un puntero al contenedor COM al que se puede llamar del objeto, aunque es menos frecuente.You can also use this method on a managed object to obtain a pointer to the object's COM callable wrapper, although this is less common. Por ejemplo, puede usar GetComInterfaceForObject<T,TInterface>(T) en un objeto administrado que se exporte a com para obtener un puntero de interfaz para System.Runtime.InteropServices.UCOMIConnectionPointContainer .For example, you can use GetComInterfaceForObject<T,TInterface>(T) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer.

La GetComInterfaceForObject<T,TInterface>(T) sobrecarga del método permite la personalización de la interfaz de consulta de forma predeterminada.The GetComInterfaceForObject<T,TInterface>(T) method overload allows query interface customization by default. Para especificar si se va a aplicar la personalización de la interfaz de consulta, use la GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) sobrecarga del método.To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Para obtener más información, consulte los artículos sobre contenedores a los que se puede llamar en tiempo de ejecución y de contenedor com .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Se aplica a