Marshal.GetIUnknownForObject(Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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
In verwaltetem Code arbeiten Sie selten direkt mit der IUnknown
Schnittstelle. Ist jedoch nützlich beim Aufrufen einer Methode, GetIUnknownForObject die einen COM-Objektparameter als IntPtr Typ verfügbar macht, oder beim benutzerdefinierten Marshalling. Das Aufrufen eines Objekts mit dieser Methode bewirkt, dass die Verweisanzahl auf dem Schnittstellenzeiger erhöht wird, bevor der Zeiger zurückgegeben wird. Verwenden Sie Marshal.Release immer, um die Verweisanzahl zu dekrementieren, sobald Sie mit dem Zeiger fertig sind. Diese Methode stellt die entgegengesetzte Funktionalität der Marshal.GetObjectForIUnknown -Methode bereit.
Sie können diese Methode auch für ein verwaltetes Objekt verwenden, um einen Schnittstellenzeiger auf den COM-aufrufbaren Wrapper für das -Objekt abzurufen.