Evaluar y enviar comentarios
MSDN
MSDN Library
 GetIUnknownForObject (Método)
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
Marshal.GetIUnknownForObject (Método)

Devuelve una interfaz IUnknown de un objeto administrado.

Espacio de nombres: System.Runtime.InteropServices
Ensamblado: mscorlib (en mscorlib.dll)

Visual Basic (Declaración)
Public Shared Function GetIUnknownForObject ( _
    o As Object _
) As IntPtr
Visual Basic (Uso)
Dim o As Object
Dim returnValue As IntPtr

returnValue = Marshal.GetIUnknownForObject(o)
C#
public static IntPtr GetIUnknownForObject (
    Object o
)
C++
public:
static IntPtr GetIUnknownForObject (
    Object^ o
)
J#
public static IntPtr GetIUnknownForObject (
    Object o
)
JScript
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.

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.

NotaNota

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.

En el ejemplo de código siguiente se muestra cómo recuperar una interfaz IUnknown para un objeto administrado utilizando el método GetIUnknownForObject.

Visual Basic
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

C#
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();
    }
}

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.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2012 Microsoft. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker