Marshal.GetIUnknownForObject(Object) Methode

Definition

Gibt eine IUnknown-Schnittstelle von einem verwalteten Objekt zurück.

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

Parameter

o
Object

Das Objekt, dessen IUnknown-Schnittstelle angefordert wird.

Gibt zurück

IntPtr

nativeint

Der IUnknown-Zeiger für den o-Parameter.

Attribute

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Eine IUnknown-Schnittstelle für ein verwaltetes Objekt mithilfe der GetIUnknownForObject Methode abgerufen wird.

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

Hinweise

Im verwalteten Code arbeiten Sie selten direkt mit der IUnknown Schnittstelle. GetIUnknownForObject Beim Aufrufen einer Methode, die einen COM-Objektparameter als IntPtr Typ oder mit benutzerdefiniertem Marshaling verfügbar macht, ist jedoch nützlich. Durch Aufrufen eines Objekts mit dieser Methode wird die Referenzanzahl für den Schnittstellenzeiger ausgelöst, bevor der Zeiger zurückgegeben wird. Verwenden Marshal.Release Sie immer, um die Referenzanzahl zu erhöhen, sobald Sie mit dem Zeiger fertig sind. Diese Methode stellt die gegenteilige Funktionalität der Marshal.GetObjectForIUnknown Methode bereit.

Sie können diese Methode auch auf einem verwalteten Objekt verwenden, um einen Schnittstellenzeiger auf den COM Callable Wrapper für das Objekt abzurufen.

Gilt für

Siehe auch