Marshal.GetIUnknownForObject-Methode: (Object)

 

Veröffentlicht: Oktober 2016

Gibt eine IUnknown -Schnittstelle aus einem verwalteten Objekt.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Syntax

[SecurityCriticalAttribute]
public static IntPtr GetIUnknownForObject(
    object o
)
public:
[SecurityCriticalAttribute]
static IntPtr GetIUnknownForObject(
    Object^ o
)
[<SecurityCriticalAttribute>]
static member GetIUnknownForObject : 
        o:Object -> nativeint
<SecurityCriticalAttribute>
Public Shared Function GetIUnknownForObject (
    o As Object
) As IntPtr

Parameter

  • o
    Type: System.Object

    Das Objekt, dessen IUnknown-Schnittstelle angefordert wird.

Rückgabewert

Type: System.IntPtr

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

Hinweise

In verwaltetem Code nur in seltenen Fällen arbeiten Sie direkt mit der IUnknown Schnittstelle. Allerdings GetIUnknownForObject ist nützlich, wenn eine Methode aufgerufen, die einen COM-Objektparameter als macht ein IntPtr Typ oder mit benutzerdefinierten Marshalling. Das Aufrufen eines Objekts mit dieser Methode bewirkt, dass den Verweiszähler für den Schnittstellenzeiger vor der Rückgabe des Zeigers inkrementiert wird. Verwenden Sie immer Marshal.Release um den Verweiszähler zu verringern, wenn Sie mit dem Mauszeiger beendet haben. Diese Methode stellt die Umkehrfunktionen von der Marshal.GetObjectForIUnknown Methode.

Sie können auch diese Methode für ein verwaltetes Objekt erhalten einen Schnittstellenzeiger auf die COM Callable Wrapper für das Objekt.

Beispiele

Das folgende Beispiel veranschaulicht das Abrufen einer IUnknown -Schnittstelle für ein verwaltetes Objekt mit der GetIUnknownForObject Methode.

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

Sicherheit

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1

Siehe auch

Release
GetObjectForIUnknown
Marshal-Klasse
System.Runtime.InteropServices-Namespace

Zurück zum Anfang