Freigeben über


Marshal.GetObjectForIUnknown(IntPtr) Methode

Definition

Gibt eine Instanz eines Typs zurück, die ein COM-Objekt durch einen Zeiger auf die IUnknown-Schnittstelle darstellt.

public:
 static System::Object ^ GetObjectForIUnknown(IntPtr pUnk);
[System.Security.SecurityCritical]
public static object GetObjectForIUnknown(IntPtr pUnk);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static object GetObjectForIUnknown(IntPtr pUnk);
public static object GetObjectForIUnknown(IntPtr pUnk);
[<System.Security.SecurityCritical>]
static member GetObjectForIUnknown : nativeint -> obj
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetObjectForIUnknown : nativeint -> obj
static member GetObjectForIUnknown : nativeint -> obj
Public Shared Function GetObjectForIUnknown (pUnk As IntPtr) As Object

Parameter

pUnk
IntPtr

nativeint

Ein Zeiger auf die IUnknown-Schnittstelle.

Gibt zurück

Ein Objekt, das das angegebene nicht verwaltete COM-Objekt darstellt.

Attribute

Ausnahmen

Hinweise

Diese Methode umschließt ein verwaltetes IUnknown Objekt. Dadurch wird die Referenzanzahl der COM-Komponente erhöht. Die Verweisanzahl wird verringert, wenn die Laufzeit die Garbage Collection für das verwaltete Objekt ausführt, das das COM-Objekt darstellt.

Der pUnk Parameter stellt einen IUnknown Schnittstellenzeiger dar. Da jedoch alle COM-Schnittstellen direkt oder indirekt von IUnknowndieser Methode abgeleitet sind, können Sie eine beliebige COM-Schnittstelle an diese Methode übergeben. Das von GetObjectForIUnknown diesem Objekt zurückgegebene Objekt ist ein Runtime Callable Wrapper, der von der Common Language Runtime wie jedes andere verwaltete Objekt verwaltet wird. Der Typ dieses Wrappers ist häufig ein Basistyp System.__ComObject , der als ausgeblendeter Typ verwendet wird, wenn der Wrappertyp mehrdeutig ist. Sie können weiterhin spät gebundene Aufrufe an einen solchen Basistyp vornehmen, solange das COM-Objekt die IDispatch-Schnittstelle implementiert. Ebenso können Sie das zurückgegebene Objekt in eine entsprechende COM-Schnittstelle umwandeln.

Damit ein Objekt mit einem bestimmten verwalteten Klassentyp (und nicht einem generischen Wrappertyp) umschlossen werden kann, müssen Sie die folgenden Anforderungen erfüllen:

Alternativ können Sie diese Anforderungen vermeiden und trotzdem ein Objekt abrufen, das mit einem bestimmten verwalteten Klassentyp umschlossen wird, indem Sie die Marshal.GetTypedObjectForIUnknown Methode verwenden.

Gilt für:

Weitere Informationen