Marshal.GetIUnknownForObject(Object) Metoda

Definice

Vrátí rozhraní IUnknown ze spravovaného objektu.

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

Parametry

o
Object

Objekt, jehož IUnknown rozhraní je požadováno.

Návraty

IntPtr

nativeint

Ukazatel IUnknown parametru o .

Atributy

Příklady

Následující příklad ukazuje, jak pomocí metody načíst rozhraní IUnknown pro spravovaný objekt GetIUnknownForObject .

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

Poznámky

Ve spravovaném kódu zřídka pracujete přímo s rozhraním IUnknown . Je však užitečné při GetIUnknownForObject volání metody, která zveřejňuje parametr objektu MODELU COM jako IntPtr typ nebo vlastní zařazování. Volání objektu pomocí této metody způsobí zvýšení počtu odkazů na ukazatel rozhraní před vrácením ukazatele myši. Jakmile s ukazatelem skončíte, vždy ho používejte Marshal.Release k dekrementování počtu odkazů. Tato metoda poskytuje opačnou funkci Marshal.GetObjectForIUnknown metody.

Tuto metodu můžete použít také u spravovaného objektu k získání ukazatele rozhraní na volatelný obálku modelu COM pro objekt.

Platí pro

Viz také