Marshal.GetObjectForIUnknown(IntPtr) 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 Instanz eines Typs zurück, der ein COM-Objekt mit einem 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
pUnk
ist Zero
Hinweise
Diese Methode wird in ein verwaltetes Objekt umgebrochen IUnknown
. Dies hat zur Folge, dass die Verweisanzahl der COM-Komponente erhöht wird. Die Verweisanzahl wird verringert, wenn die Runtime eine 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 IUnknown
abgeleitet werden, können Sie jede COM-Schnittstelle an diese Methode übergeben. Das von GetObjectForIUnknown zurückgegebene Objekt ist ein Runtime Callable Wrapper, den die Common Language Runtime wie jedes andere verwaltete Objekt verwaltet. Der Typ dieses Wrappers ist häufig ein Basistyp System.__ComObject
, bei dem es sich um einen ausgeblendeten Typ handelt, der verwendet wird, wenn der Wrappertyp mehrdeutig ist. Sie können weiterhin spät gebundene Aufrufe an einen solchen Basistyp durchführen, 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 keinem generischen Wrappertyp) umschlossen wird, müssen Sie die folgenden Anforderungen erfüllen:
Implementieren Sie die IProvideClassInfo-Schnittstelle für das COM-Objekt.
Registrieren Sie die enthaltende Assembly beim Regasm.exe (AssemblyRegistrierungstool).
Alternativ können Sie diese Anforderungen vermeiden und trotzdem ein Objekt abrufen, das mit einem bestimmten verwalteten Klassentyp umschlossen ist, indem Sie die Marshal.GetTypedObjectForIUnknown -Methode verwenden.
Gilt für:
Weitere Informationen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für