Marshal.GetComInterfaceForObject 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 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) |
[Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] 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)
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.
Hinweise
Diese Methode gibt einen Schnittstellenzeiger zurück, der die angeforderte Schnittstelle für das angegebene Objekt darstellt. Es ist besonders nützlich, wenn Sie über eine nicht verwaltete Methode verfügen, die erwartet, dass ein Schnittstellenzeiger übergeben wird. Durch Aufrufen eines Objekts mit dieser Methode wird die Referenzanzahl für den Schnittstellenzeiger ausgelöst, bevor der Zeiger zurückgegeben wird. Verwenden Marshal.Release Sie immer, um die Referenzanzahl zu erhöhen, 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 oder mit benutzerdefiniertem Marshaling verfügbar macht. Obwohl weniger häufig, können Sie diese Methode auf einem verwalteten 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 in COM exportiert wird, um einen Schnittstellenzeiger für System.Runtime.InteropServices.UCOMIConnectionPointContainer. Sie können keinen Zeiger auf eine Klassenschnittstelle abrufen, da eine Klassenschnittstelle den entsprechenden Typ fehlt, um an den zweiten Parameter (t) zu übergeben. Verwenden Sie Marshal.GetIDispatchForObject stattdessen das Aufrufen der Member auf der Standardschnittstelle des COM-aufrufbaren Wrappers, was in der Regel eine Automatische Verteilerklasse-Schnittstelle ist.
Die Methodenüberladung ermöglicht standardmäßig die Anpassung der GetComInterfaceForObject(Object, Type) Abfrageschnittstelle. Um anzugeben, ob die Anpassung der Abfrageschnittstelle angewendet werden soll, verwenden Sie die GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) Methodenüberladung.
Weitere Informationen finden Sie in den Artikeln "COM Callable Wrapper " und " Callable Wrapper ".
Siehe auch
- GetComInterfaceForObjectInContext(Object, Type)
- ComImportAttribute
- Release(IntPtr)
- UCOMIConnectionPointContainer
- GetIDispatchForObject(Object)
Gilt für:
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
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.
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.
Hinweise
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) Mit dieser Option können Sie angeben, ob die Anpassung der Abfrageschnittstelle angewendet werden soll. Verwenden Sie die Überladung, um die Anpassung der GetComInterfaceForObject(Object, Type) Abfrageschnittstelle standardmäßig anzuwenden.
Gilt für:
GetComInterfaceForObject<T,TInterface>(T)
[Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt]
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. Es 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 Referenzanzahl auf dem Schnittstellenzeiger erhöht wird, bevor der Zeiger zurückgegeben wird. Verwenden Sie immer die Marshal.Release Methode, um die Referenzanzahl zu erhöhen, 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, wenn eine Methode aufgerufen wird, die einen COM-Objektparameter als IntPtr Typ oder mit benutzerdefiniertem Marshaling verfügbar macht. 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 ist. Sie können z. B. für ein verwaltetes Objekt, GetComInterfaceForObject<T,TInterface>(T) das in COM exportiert wird, verwenden, um einen Schnittstellenzeiger für System.Runtime.InteropServices.UCOMIConnectionPointContainer.
Die Methodenüberladung ermöglicht standardmäßig die Anpassung der GetComInterfaceForObject<T,TInterface>(T) 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 ".