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 einen Schnittstellenzeiger zurück, der die angegebene Schnittstelle für ein Objekt darstellt.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Shared Function GetComInterfaceForObject ( _
o As Object, _
T As Type _
) As IntPtr
'Usage
Dim o As Object
Dim T As Type
Dim returnValue As IntPtr
returnValue = Marshal.GetComInterfaceForObject(o, T)
public static IntPtr GetComInterfaceForObject (
Object o,
Type T
)
public:
static IntPtr GetComInterfaceForObject (
Object^ o,
Type^ T
)
public static IntPtr GetComInterfaceForObject (
Object o,
Type T
)
public static function GetComInterfaceForObject (
o : Object,
T : Type
) : IntPtr
Parameter
- o
Das Objekt, das die Schnittstelle bereitstellt.
- T
Der Type der angeforderten Schnittstelle.
Rückgabewert
Der Schnittstellenzeiger, der die Schnittstelle für das Objekt darstellt.
Ausnahmen
| Ausnahmetyp | Bedingung |
|---|---|
Der T-Parameter ist keine Schnittstelle. - oder - Der Typ ist für COM nicht sichtbar. - oder - Der T-Parameter ist ein generischer Typ. |
|
Der o-Parameter unterstützt die angeforderte Schnittstelle nicht. |
|
Der o-Parameter ist NULL (Nothing in Visual Basic). - oder - Der T-Parameter ist NULL (Nothing in Visual Basic). |
Hinweise
Diese Methode gibt einen Schnittstellenzeiger zurück, der die angeforderte Schnittstelle für das angegebene Objekt darstellt. Dies ist besonders nützlich, wenn Sie über eine nicht verwaltete Methode verfügen, die an einen Schnittstellenzeiger übergeben werden soll. Das Aufrufen eines Objekts mit dieser Methode bewirkt, dass der Verweiszähler für den Schnittstellenzeiger vor der Rückgabe des Zeigers inkrementiert wird. Verwenden Sie immer Marshal.Release, um den Verweiszähler zu dekrementieren, nachdem die Verarbeitung des Zeigers abgeschlossen ist. Bei der Verwendung von unformatierten COM-Schnittstellenzeigern müssen die von COM definierten Regeln eingehalten werden.
GetComInterfaceForObject ist hilfreich beim Aufrufen einer Methode, die einen COM-Objektparameter als IntPtr-Typ verfügbar macht, sowie beim benutzerdefinierten Marshalling. Obwohl weniger gebräuchlich, können Sie diese Methode für ein verwaltetes Objekt verwenden, um einen Zeiger abzurufen, der auf den COM-Aufrufwrapper des Objekts zeigt. Beispielsweise können Sie einen GetComInterfaceForObject für ein nach COM exportiertes verwaltetes Objekt verwenden, um einen Schnittstellenzeiger für System.Runtime.InteropServices.UCOMIConnectionPointContainer abzurufen. Sie können keinen Zeiger auf eine Klassenschnittstelle abrufen, da für eine Klassenschnittstelle der entsprechende Typ nicht vorhanden ist, der an den zweiten Parameter (t) übergeben werden muss. Verwenden Sie stattdessen Marshal.GetIDispatchForObject zum Aufrufen der Member für die Standardschnittstelle des COM-Aufrufwrappers, bei der es sich in der Regel eine Klassenschnittstelle für den automatischen Dispatch handelt.
Weitere Informationen zu RCWs (Runtime Callable Wrapper) und COM-Aufrufwrappern finden Sie unter COM-Wrapper. Weitere Informationen zu Klassenschnittstellen finden Sie unter Einführung in die Klassenschnittstelle.
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
GetComInterfaceForObjectInContext
ComImportAttribute-Klasse
Release
UCOMIConnectionPointContainer
GetIDispatchForObject