Comparteix a través de


Marshal.GetIUnknownForObject(Object) Método

Definición

Devuelve una interfaz IUnknown desde un objeto administrado.

public:
 static IntPtr GetIUnknownForObject(System::Object ^ o);
[System.Security.SecurityCritical]
public static IntPtr GetIUnknownForObject (object o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetIUnknownForObject (object o);
public static IntPtr GetIUnknownForObject (object o);
[<System.Security.SecurityCritical>]
static member GetIUnknownForObject : obj -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetIUnknownForObject : obj -> nativeint
static member GetIUnknownForObject : obj -> nativeint
Public Shared Function GetIUnknownForObject (o As Object) As IntPtr

Parámetros

o
Object

Objeto cuya interfaz IUnknown se solicita.

Devoluciones

IntPtr

nativeint

Puntero IUnknown para el parámetro o.

Atributos

Ejemplos

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

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

Comentarios

En el código administrado, rara vez se trabaja directamente con la IUnknown interfaz . Sin embargo, GetIUnknownForObject es útil al llamar a un método que expone un parámetro de objeto COM como un IntPtr tipo o con serialización personalizada. 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. Este método proporciona la funcionalidad opuesta del Marshal.GetObjectForIUnknown método .

También puede usar este método en un objeto administrado para obtener un puntero de interfaz al contenedor al que se puede llamar COM para el objeto .

Se aplica a

Consulte también