Public Shared Function GetComInterfaceForObject ( _ o As Object, _ T As Type _ ) As IntPtr
Dim o As Object Dim T As Type Dim returnValue As IntPtr returnValue = Marshal.GetComInterfaceForObject(o, T)
public static IntPtr GetComInterfaceForObject ( Object o, Type T )
public: static IntPtr GetComInterfaceForObject ( Object^ o, Type^ T )
public static function GetComInterfaceForObject ( o : Object, T : Type ) : IntPtr
Objeto que proporciona la interfaz.
Type de interfaz que se solicita.
ArgumentException
El parámetro T no es una interfaz.
O bien
El tipo no es visible para COM.
O bien,
El parámetro T es un tipo genérico.
InvalidCastException
El parámetro o no admite la interfaz solicitada.
ArgumentNullException
El parámetro o es referencia de objeto null (Nothing en Visual Basic)
El parámetro T es referencia de objeto null (Nothing en Visual Basic)
Este método devuelve un puntero de interfaz que representa la interfaz solicitada en el objeto especificado. Es particularmente útil si tiene un método no administrado al que se espera que se le pase un puntero de interfaz. Al llamar a un objeto con este método, el contador de referencia aumenta en el puntero de interfaz antes de que se devuelva el puntero. Utilice siempre Marshal.Release para disminuir el recuento de referencias cuando haya terminado con el puntero. Debe cumplir las reglas definidas por COM cuando utilice los punteros de interfaz COM sin formato.
GetComInterfaceForObject resulta útil cuando se llama a un método que expone un parámetro de objeto COM como un tipo IntPtr o con el cálculo de referencias personalizado. Aunque es una práctica menos común, puede utilizar este método en un objeto administrado para obtener un puntero al contenedor COM del objeto al que se puede llamar. Puede utilizar, por ejemplo, GetComInterfaceForObject en un objeto administrado que se exporte a COM con el fin de obtener un puntero de interfaz para System.Runtime.InteropServices.UCOMIConnectionPointContainer. No puede obtener un puntero a una interfaz de clase, ya que ésta no contiene el tipo correspondiente que se pasa al segundo parámetro (t). En su lugar, utilice Marshal.GetIDispatchForObject para invocar a los miembros en la interfaz predeterminada del contenedor COM al que se puede llamar, la cual suele ser una interfaz de clase de distribución automática.
Para obtener más información sobre los contenedores a los que se puede llamar en tiempo de ejecución y los contenedores COM a los que se puede llamar, vea Contenedores COM. Para obtener más información sobre las interfaces de clase, vea Presentar la interfaz de clase.
Este método utiliza SecurityAction.LinkDemand para evitar que se le llame desde código que no sea de confianza; sólo el llamador inmediato debe disponer del permiso SecurityPermissionAttribute.UnmanagedCode. Si se puede llamar al código desde código de confianza parcial, no pase ninguna entrada de usuario a los métodos de la clase Marshal sin validación. Para conocer las limitaciones importantes que existen a la hora de utilizar el miembro LinkDemand, vea Demand frente a LinkDemand.
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.