Devuelve una interfaz
IUnknown de un objeto administrado.
Espacio de nombres: System.Runtime.InteropServices
Ensamblado: mscorlib (en mscorlib.dll)

Sintaxis
Visual Basic (Declaración)
Public Shared Function GetIUnknownForObject ( _
o As Object _
) As IntPtr
Dim o As Object
Dim returnValue As IntPtr
returnValue = Marshal.GetIUnknownForObject(o)
public static IntPtr GetIUnknownForObject (
Object o
)
public:
static IntPtr GetIUnknownForObject (
Object^ o
)
public static IntPtr GetIUnknownForObject (
Object o
)
public static function GetIUnknownForObject (
o : Object
) : IntPtr
Parámetros
- o
Objeto cuya interfaz IUnknown se solicita.
Valor devuelto
Puntero
IUnknown para el parámetro
o.

Comentarios
En código administrado, rara vez se trabaja directamente con la interfaz IUnknown. No obstante, GetIUnknownForObject 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. 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. Este método proporciona la funcionalidad opuesta a la del método Marshal.GetObjectForIUnknown.
También puede utilizar este método en un objeto administrado para obtener un puntero de interfaz al contenedor COM del objeto al que se puede llamar. Para obtener más información, vea Contenedor COM al que se puede llamar.

Ejemplo
En el ejemplo de código siguiente se muestra cómo recuperar una interfaz IUnknown para un objeto administrado utilizando el método GetIUnknownForObject.
Imports System.Runtime.InteropServices
Module Program
Sub Run()
' Dim an Integer object
Dim IntegerObject As Integer = 1
' Dim a pointer
Dim pointer As IntPtr
Console.WriteLine("Calling Marshal.GetIUnknownForObject...")
' Get the IUnKnown pointer for the Integer object
pointer = Marshal.GetIUnknownForObject(IntegerObject)
Console.WriteLine("Calling Marshal.Release...")
' Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer)
End Sub
Sub Main(ByVal args() As String)
Run()
End Sub
End Module
using System;
using System.Runtime.InteropServices;
class Program
{
static void Run()
{
// Create an int object
int obj = 1;
Console.WriteLine("Calling Marshal.GetIUnknownForObject...");
// Get the IUnKnown pointer for the Integer object
IntPtr pointer = Marshal.GetIUnknownForObject(obj);
Console.WriteLine("Calling Marshal.Release...");
// Always call Marshal.Release to decrement the reference count.
Marshal.Release(pointer);
}
static void Main(string[] args)
{
Run();
}
}

Seguridad de .NET Framework

Plataformas
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.

Información de versión
.NET Framework
Compatible con: 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0

Vea también