Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt eine Instanz eines Typs zurück, der ein COM-Objekt mithilfe eines Zeigers auf seine IUnknown-Schnittstelle darstellt.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Function GetObjectForIUnknown ( _
pUnk As IntPtr _
) As Object
'Usage
Dim pUnk As IntPtr
Dim returnValue As Object
returnValue = Marshal.GetObjectForIUnknown(pUnk)
public static Object GetObjectForIUnknown (
IntPtr pUnk
)
public:
static Object^ GetObjectForIUnknown (
IntPtr pUnk
)
public static Object GetObjectForIUnknown (
IntPtr pUnk
)
public static function GetObjectForIUnknown (
pUnk : IntPtr
) : Object
Parameter
- pUnk
Ein Zeiger auf die IUnknown-Schnittstelle.
Rückgabewert
Ein Objekt, das das angegebene nicht verwaltete COM-Objekt darstellt.
Hinweise
Diese Methode fungiert als Wrapper von IUnknown in einem verwalteten Objekt. Das führt dazu, dass der Verweiszähler der COM-Komponente inkrementiert wird. Der Verweiszähler wird dekrementiert, wenn zur Laufzeit die Garbage Collection für das verwaltete Objekt ausgeführt wird, das das COM-Objekt darstellt.
Der erste Parameter, pUnk, stellt einen IUnknown-Schnittstellenzeiger dar. Da jedoch alle COM-Schnittstellen direkt oder indirekt von IUnknown abgeleitet sind, können Sie eine beliebige COM-Schnittstelle an diese Methode übergeben. Das von GetObjectForIUnknown zurückgegebene Objekt ist ein RCW (Runtime Callable Wrapper), der von der Common Language Runtime wie alle anderen verwalteten Objekte verwaltet wird. Der Typ dieses Wrappers ist häufig ein generischer System.__ComObject-Typ. Dies ist ein verborgener Typ, der verwendet wird, wenn der Wrappertyp nicht eindeutig ist. Sie können weiterhin spät gebundene Aufrufe eines solchen generischen Typs ausführen, solange das COM-Objekt die IDispatch-Schnittstelle implementiert. Ebenso können Sie das zurückgegebene Objekt in eine entsprechende COM-Schnittstelle umwandeln. Weitere Informationen finden Sie unter Runtime Callable Wrapper (RCW).
Für ein Objekt, das mit einem bestimmten Typ einer verwalteten Klasse gewrappt werden soll (und nicht mit einem generischen Wrappertyp), müssen die folgenden Anforderungen erfüllt sein:
Implementieren Sie die IProvideClassInfo-Schnittstelle für das COM-Objekt.
Registrieren Sie die enthaltende Assembly mit dem Assembly Registration-Tool (Regasm.exe).
Sie können diese Anforderungen auch umgehen und dennoch ein Objekt abrufen, das mit einem bestimmten Typ einer verwalteten Klasse gewrappt ist, indem Sie die Marshal.GetTypedObjectForIUnknown-Methode verwenden.
Hinweis
Diese Methode verwendet SecurityAction.LinkDemand, um einen Aufruf aus nicht vertrauenswürdigem Code zu verhindern. Nur der direkte Aufrufer muss über die SecurityPermissionAttribute.UnmanagedCode-Berechtigung verfügen. Wenn der Code aus teilweise vertrauenswürdigem Code aufgerufen werden kann, dürfen Benutzereingaben nicht ohne Validierung an Methoden der Marshal-Klasse übergeben werden. Wichtige Einschränkungen bei der Verwendung des LinkDemand-Members finden Sie unter "Demand" und "LinkDemand".
.NET Framework-Sicherheit
- SecurityPermission für die Berechtigung zum Aufrufen von nicht verwaltetem Code. Zugeordnete Enumeration: UnmanagedCode Sicherheitsaktion: LinkDemand
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0
Siehe auch
Referenz
Marshal-Klasse
Marshal-Member
System.Runtime.InteropServices-Namespace
AddRef
Release
GetTypedObjectForIUnknown