Marshal.GetComInterfaceForObject Methode

Definition

Gibt einen Schnittstellenzeiger zurück, der eine Schnittstelle für ein Objekt darstellt.

Überlädt

GetComInterfaceForObject(Object, Type)
Veraltet.

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

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
Veraltet.

Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das angegebene Objekt darstellt. Der benutzerdefinierte Zugriff auf die Abfrageschnittstelle wird vom angegebenen Anpassungsmodus gesteuert.

GetComInterfaceForObject<T,TInterface>(T)

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

GetComInterfaceForObject(Object, Type)

Quelle:
Marshal.NoCom.cs
Quelle:
Marshal.NoCom.cs
Quelle:
Marshal.NoCom.cs

Achtung

GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509

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

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T);
[System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
public static IntPtr GetComInterfaceForObject (object o, Type T);
[<System.Obsolete("GetComInterfaceForObject(Object, Type) may be unavailable in future releases. Instead, use GetComInterfaceForObject<T,T2>(T). For more info, go to http://go.microsoft.com/fwlink/?LinkID=296509")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

Parameter

o
Object

Das Objekt, das die Schnittstelle bereitstellt.

T
Type

Der Typ der angeforderten Schnittstelle.

Gibt zurück

IntPtr

nativeint

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

Attribute

Ausnahmen

Der T-Parameter ist keine Schnittstelle.

- oder -

Der Typ ist für COM nicht sichtbar.

- oder -

Der T-Parameter ist eine generische Typdefinition.

Der o-Parameter unterstützt die angeforderte Schnittstelle nicht.

Der o-Parameter ist null.

- oder -

Der T-Parameter ist null.

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 erwartet, dass ein Schnittstellenzeiger übergeben wird. Das Aufrufen eines Objekts mit dieser Methode bewirkt, dass die Verweisanzahl auf dem Schnittstellenzeiger erhöht wird, bevor der Zeiger zurückgegeben wird. Verwenden Sie Marshal.Release immer, um die Verweisanzahl zu dekrementieren, sobald Sie mit dem Zeiger fertig sind. Sie müssen die von COM definierten Regeln einhalten, wenn Sie unformatierte COM-Schnittstellenzeiger verwenden.

GetComInterfaceForObject(Object, Type) ist nützlich beim Aufrufen einer Methode, die einen COM-Objektparameter als IntPtr Typ verfügbar macht, oder beim benutzerdefinierten Marshalling. Wenn auch weniger häufig, können Sie diese Methode für ein verwaltetes Objekt verwenden, um einen Zeiger auf den COM-aufrufbaren Wrapper des Objekts abzurufen. Sie können beispielsweise ein verwaltetes Objekt verwenden GetComInterfaceForObject(Object, Type) , das nach COM exportiert wird, um einen Schnittstellenzeiger für System.Runtime.InteropServices.UCOMIConnectionPointContainerabzurufen. Sie können keinen Zeiger auf eine Klassenschnittstelle abrufen, da einer Klassenschnittstelle der entsprechende Typ fehlt, der an den zweiten Parameter (t) übergeben werden kann. Verwenden Sie Marshal.GetIDispatchForObject stattdessen, um die Member auf der Standardschnittstelle des COM-aufrufbaren Wrappers aufzurufen, bei dem es sich in der Regel um eine Auto-Dispatch-Klassenschnittstelle handelt.

Die GetComInterfaceForObject(Object, Type) Methodenüberladung ermöglicht standardmäßig die Anpassung der Abfrageschnittstelle. Verwenden Sie die Methodenüberladung, um anzugeben, ob die Anpassung der GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) Abfrageschnittstelle angewendet werden soll.

Weitere Informationen finden Sie in den Artikeln COM Callable Wrapper und Runtime Callable Wrapper .

Weitere Informationen

Gilt für:

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Quelle:
Marshal.NoCom.cs
Quelle:
Marshal.NoCom.cs
Quelle:
Marshal.NoCom.cs

Achtung

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.

Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das angegebene Objekt darstellt. Der benutzerdefinierte Zugriff auf die Abfrageschnittstelle wird vom angegebenen Anpassungsmodus gesteuert.

public:
 static IntPtr GetComInterfaceForObject(System::Object ^ o, Type ^ T, System::Runtime::InteropServices::CustomQueryInterfaceMode mode);
[System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
[<System.Obsolete("GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) and support for ICustomQueryInterface may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
static member GetComInterfaceForObject : obj * Type * System.Runtime.InteropServices.CustomQueryInterfaceMode -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type, mode As CustomQueryInterfaceMode) As IntPtr

Parameter

o
Object

Das Objekt, das die Schnittstelle bereitstellt.

T
Type

Der Typ der angeforderten Schnittstelle.

mode
CustomQueryInterfaceMode

Einer der Enumerationswerte, die angeben, ob eine IUnknown::QueryInterface-Anpassung übernommen werden soll, die von einer ICustomQueryInterface angegeben wird.

Gibt zurück

IntPtr

nativeint

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

Attribute

Ausnahmen

Der T-Parameter ist keine Schnittstelle.

- oder -

Der Typ ist für COM nicht sichtbar.

- oder -

Der T-Parameter ist eine generische Typdefinition.

Das Objekt o unterstützt die angeforderte Schnittstelle nicht.

Der o-Parameter ist null.

- oder -

Der T-Parameter ist null.

Hinweise

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) können Sie angeben, ob die Anpassung der Abfrageschnittstelle angewendet werden soll. Verwenden Sie die GetComInterfaceForObject(Object, Type) Überladung, um standardmäßig die Anpassung der Abfrageschnittstelle anzuwenden.

Gilt für:

GetComInterfaceForObject<T,TInterface>(T)

Quelle:
Marshal.NoCom.cs
Quelle:
Marshal.NoCom.cs
Quelle:
Marshal.NoCom.cs

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

public:
generic <typename T, typename TInterface>
 static IntPtr GetComInterfaceForObject(T o);
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : 'T -> nativeint
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
static member GetComInterfaceForObject : 'T -> nativeint
static member GetComInterfaceForObject : 'T -> nativeint
Public Shared Function GetComInterfaceForObject(Of T, TInterface) (o As T) As IntPtr

Typparameter

T

Der o-Typ.

TInterface

Der Typ der zurückzugebenden Schnittstelle.

Parameter

o
T

Das Objekt, das die Schnittstelle bereitstellt.

Gibt zurück

IntPtr

nativeint

Der Schnittstellenzeiger, der die TInterface-Schnittstelle darstellt.

Attribute

Ausnahmen

Der TInterface-Parameter ist keine Schnittstelle.

- oder -

Der Typ ist für COM nicht sichtbar.

- oder -

Der T-Parameter ist ein offener generischer Typ.

Der o-Parameter unterstützt die angeforderte TInterface Schnittstelle nicht.

Der o-Parameter ist null.

Hinweise

Diese Methode gibt einen Schnittstellenzeiger zurück, der die TInterface Schnittstelle für das angegebene Objekt darstellt. Dies ist besonders nützlich, wenn Sie über eine nicht verwaltete Methode verfügen, die erwartet, dass ein Schnittstellenzeiger übergeben wird. Das Aufrufen eines Objekts mit dieser Methode bewirkt, dass die Verweisanzahl auf dem Schnittstellenzeiger erhöht wird, bevor der Zeiger zurückgegeben wird. Verwenden Sie immer die Marshal.Release -Methode, um die Verweisanzahl zu verringern, wenn Sie mit dem Zeiger fertig sind. Sie müssen die von COM definierten Regeln einhalten, wenn Sie unformatierte COM-Schnittstellenzeiger verwenden.

GetComInterfaceForObject<T,TInterface>(T) ist nützlich beim Aufrufen einer Methode, die einen COM-Objektparameter als IntPtr Typ verfügbar macht, oder beim benutzerdefinierten Marshalling. Sie können diese Methode auch für ein verwaltetes Objekt verwenden, um einen Zeiger auf den COM-aufrufbaren Wrapper des Objekts abzurufen, obwohl dies weniger häufig vorkommt. Sie können beispielsweise ein verwaltetes Objekt verwenden GetComInterfaceForObject<T,TInterface>(T) , das nach COM exportiert wird, um einen Schnittstellenzeiger für System.Runtime.InteropServices.UCOMIConnectionPointContainerabzurufen.

Die GetComInterfaceForObject<T,TInterface>(T) Methodenüberladung ermöglicht standardmäßig die Anpassung der Abfrageschnittstelle. Verwenden Sie die Methodenüberladung, um anzugeben, ob die Anpassung der GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) Abfrageschnittstelle angewendet werden soll.

Weitere Informationen finden Sie in den Artikeln COM Callable Wrapper und Runtime Callable Wrapper .

Gilt für: