Freigeben über


Marshal.GetComInterfaceForObject-Methode: (Object, Type)

 

Veröffentlicht: Oktober 2016

Gibt einen Zeiger auf eine IUnknown -Schnittstelle, die die angegebene Schnittstelle für das angegebene Objekt darstellt. Der benutzerdefinierte Zugriff auf Abfrageschnittstellen ist standardmäßig aktiviert.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

Syntax

[SecurityCriticalAttribute]
public static IntPtr GetComInterfaceForObject(
    object o,
    Type T
)
public:
[SecurityCriticalAttribute]
static IntPtr GetComInterfaceForObject(
    Object^ o,
    Type^ T
)
[<SecurityCriticalAttribute>]
static member GetComInterfaceForObject : 
        o:Object *
        T:Type -> nativeint
<SecurityCriticalAttribute>
Public Shared Function GetComInterfaceForObject (
    o As Object,
    T As Type
) As IntPtr

Parameter

  • o
    Type: System.Object

    Das Objekt, das die Schnittstelle bereitstellt.

  • T
    Type: System.Type

    Der Typ der angeforderten Schnittstelle.

Rückgabewert

Type: System.IntPtr

Der Schnittstellenzeiger, der die angegebene Schnittstelle für das Objekt darstellt.

Ausnahmen

Exception Condition
ArgumentException

Die T Parameter ist keine Schnittstelle.

- oder -

Der Typ ist nicht für COM sichtbar.

- oder -

Die T Parameter ist ein generischer Typ.

InvalidCastException

Die o Parameter unterstützt die angeforderte Schnittstelle nicht.

ArgumentNullException

Der o-Parameter ist null.

- oder -

Der T-Parameter ist null.

Hinweise

Diese Methode gibt einen Schnittstellenzeiger, der die angeforderte Schnittstelle für das angegebene Objekt darstellt. Dies ist besonders nützlich, wenn Sie eine nicht verwaltete Methode verfügen, die einen Schnittstellenzeiger übergeben werden. Das Aufrufen eines Objekts mit dieser Methode bewirkt, dass den Verweiszähler für den Schnittstellenzeiger vor der Rückgabe des Zeigers inkrementiert wird. Verwenden Sie immer Marshal.Release um den Verweiszähler zu verringern, wenn Sie mit dem Mauszeiger beendet haben. Sie müssen die unformatierte COM-Schnittstellenzeigern mithilfe von COM definierten Regeln entsprechen.

GetComInterfaceForObject(Object, Type) ist nützlich, wenn eine Methode aufgerufen, die einen COM-Objektparameter als macht ein IntPtr Typ oder benutzerdefiniertes Marshalling geht. Obwohl weniger gebräuchlich, können Sie diese Methode für ein verwaltetes Objekt verwenden, um einen Zeiger auf das Objekt COM callable Wrapper abzurufen. Beispielsweise können Sie GetComInterfaceForObject(Object, Type) für ein verwaltetes Objekt, das für COM, um einen Schnittstellenzeiger für erhalten exportiert wird System.Runtime.InteropServices.UCOMIConnectionPointContainer. Sie können einen Zeiger auf eine Klassenschnittstelle abrufen, da eine Klassenschnittstelle verfügt nicht über die entsprechenden Typs für die Übergabe an den zweiten Parameter (t). Verwenden Sie stattdessen Marshal.GetIDispatchForObject die Member für die Standardschnittstelle des COM callable Wrapper, aufzurufen, der in der Regel eine Klassenschnittstelle für den automatischen Dispatch ist.

Die GetComInterfaceForObject(Object, Type) Überladung ermöglicht das Anpassen der Benutzeroberfläche Abfrage standardmäßig. Verwenden, um anzugeben, ob die Anpassung der Benutzeroberfläche Abfrage gelten die GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) Überladung.

Weitere Informationen finden Sie unter der COM Callable Wrapper, Runtime Callable Wrapper, und Einführung in die Klassenschnittstelle Themen.

Sicherheit

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1

Siehe auch

GetComInterfaceForObjectInContext
ComImportAttribute
Release
UCOMIConnectionPointContainer
GetIDispatchForObject
GetComInterfaceForObject Überladen
Marshal-Klasse
System.Runtime.InteropServices-Namespace

Zurück zum Anfang