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.ObjectDas 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
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