Marshal.GetComInterfaceForObject Methode

Definition

Gibt einen Schnittstellenzeiger zurück, der eine Schnittstelle für ein Objekt darstellt.Returns an interface pointer that represents an interface for an object.

Überlädt

GetComInterfaceForObject(Object, Type)

Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das angegebene Objekt darstellt.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Der benutzerdefinierte Zugriff auf Abfrageschnittstellen ist standardmäßig aktiviert.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das angegebene Objekt darstellt.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Der benutzerdefinierte Zugriff auf die Abfrageschnittstelle wird vom angegebenen Anpassungsmodus gesteuert.Custom query interface access is controlled by the specified customization mode.

GetComInterfaceForObject<T,TInterface>(T)

[Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt][Supported in the .NET Framework 4.5.1 and later versions] Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das Objekt des angegebenen Typs darstellt.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. Der benutzerdefinierte Zugriff auf Abfrageschnittstellen ist standardmäßig aktiviert.Custom query interface access is enabled by default.

GetComInterfaceForObject(Object, Type)

Warnung

Diese API ist jetzt veraltet.

Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das angegebene Objekt darstellt.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Der benutzerdefinierte Zugriff auf Abfrageschnittstellen ist standardmäßig aktiviert.Custom query interface access is enabled by default.

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 https://go.microsoft.com/fwlink/?LinkID=296509")]
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
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.The object that provides the interface.

T
Type

Der Typ der angeforderten Schnittstelle.The type of interface that is requested.

Gibt zurück

Der Schnittstellenzeiger, der die angegebene Schnittstelle für das Objekt darstellt.The interface pointer that represents the specified interface for the object.

Attribute

Ausnahmen

Der T-Parameter ist keine Schnittstelle.The T parameter is not an interface.

- oder --or- Der Typ ist für COM nicht sichtbar.The type is not visible to COM.

- oder --or- Der T-Parameter ist eine generische Typdefinition.The T parameter is a generic type definition.

Der o-Parameter unterstützt die angeforderte Schnittstelle nicht.The o parameter does not support the requested interface.

Der o-Parameter ist null.The o parameter is null.

- oder --or- Der T-Parameter ist null.The T parameter is null.

Hinweise

Diese Methode gibt einen Schnittstellen Zeiger zurück, der die angeforderte Schnittstelle für das angegebene Objekt darstellt.This method returns an interface pointer that represents the requested interface on the specified object. Dies ist besonders nützlich, wenn Sie über eine nicht verwaltete Methode verfügen, die davon ausgeht, dass ein Schnittstellen Zeiger an Sie übermittelt wird.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. Wenn Sie ein Objekt mit dieser Methode aufrufen, erhöht sich der Verweis Zähler auf den Schnittstellen Zeiger, bevor der Zeiger zurückgegeben wird.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Verwenden Sie immer Marshal.Release, um den Verweis Zähler zu verringern, sobald Sie mit dem-Zeiger fertig sind.Always use Marshal.Release to decrement the reference count once you have finished with the pointer. Bei Verwendung von unformatierten COM-Schnittstellen Zeigern müssen die von com definierten Regeln befolgt werden.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject(Object, Type) ist nützlich, wenn eine Methode aufgerufen wird, die einen COM-Objekt Parameter als IntPtr Typ oder mit benutzerdefiniertem Marshalling verfügbar macht.GetComInterfaceForObject(Object, Type) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. Obwohl Sie weniger häufig verwenden, können Sie diese Methode für ein verwaltetes Objekt verwenden, um einen Zeiger auf das COM Callable Wrapper des Objekts abzurufen.Although less common, you can use this method on a managed object to obtain a pointer to the object's COM callable wrapper. Beispielsweise können Sie GetComInterfaceForObject(Object, Type) für ein verwaltetes Objekt verwenden, das nach com exportiert wird, um einen Schnittstellen Zeiger für System.Runtime.InteropServices.UCOMIConnectionPointContainerzu erhalten.For example, you can use GetComInterfaceForObject(Object, Type) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer. Ein Zeiger auf eine Klassen Schnittstelle kann nicht abgerufen werden, da eine Klassen Schnittstelle nicht den entsprechenden Typ hat, der an den zweiten Parameter (t) übergeben werden soll.You cannot obtain a pointer to a class interface since a class interface lacks the corresponding type to pass to the second parameter (t). Verwenden Sie stattdessen Marshal.GetIDispatchForObject, um die Elemente auf der Standardschnittstelle des COM Callable Wrapper aufzurufen, bei der es sich normalerweise um eine Schnittstelle für die automatische Dispatch-Klasse handelt.Instead, use Marshal.GetIDispatchForObject to invoke the members on the default interface of the COM callable wrapper, which is usually an auto-dispatch class interface.

Die GetComInterfaceForObject(Object, Type)-Methoden Überladung ermöglicht standardmäßig die Anpassung von Abfrageschnittstellen.The GetComInterfaceForObject(Object, Type) method overload allows query interface customization by default. Verwenden Sie die GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)-Methoden Überladung, um anzugeben, ob die Anpassung der Abfrage Schnittstelle angewendet werden soll.To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Weitere Informationen finden Sie in den Artikeln COM Callable Wrapper und Runtime Callable Wrapper .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

Siehe auch

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

Warnung

Diese API ist jetzt veraltet.

Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das angegebene Objekt darstellt.Returns a pointer to an IUnknown interface that represents the specified interface on the specified object. Der benutzerdefinierte Zugriff auf die Abfrageschnittstelle wird vom angegebenen Anpassungsmodus gesteuert.Custom query interface access is controlled by the specified customization mode.

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);
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.The object that provides the interface.

T
Type

Der Typ der angeforderten Schnittstelle.The type of interface that is requested.

mode
CustomQueryInterfaceMode

Einer der Enumerationswerte, die angeben, ob eine IUnknown::QueryInterface-Anpassung übernommen werden soll, die von einer ICustomQueryInterface angegeben wird.One of the enumeration values that indicates whether to apply an IUnknown::QueryInterface customization that is supplied by an ICustomQueryInterface.

Gibt zurück

Der Schnittstellenzeiger, der die Schnittstelle für das Objekt darstellt.The interface pointer that represents the interface for the object.

Attribute

Ausnahmen

Der T-Parameter ist keine Schnittstelle.The T parameter is not an interface.

- oder --or- Der Typ ist für COM nicht sichtbar.The type is not visible to COM.

- oder --or- Der T-Parameter ist eine generische Typdefinition.The T parameter is a generic type definition.

Das Objekt o unterstützt die angeforderte Schnittstelle nicht.The object o does not support the requested interface.

Der o-Parameter ist null.The o parameter is null.

- oder --or- Der T-Parameter ist null.The T parameter is null.

Hinweise

mit GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) können Sie angeben, ob die Anpassung der Abfrage Schnittstelle angewendet werden soll.GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) lets you specify whether to apply query interface customization. Verwenden Sie die GetComInterfaceForObject(Object, Type) Überladung, um die Anpassung der Abfrage Schnittstelle standardmäßig anzuwenden.Use the GetComInterfaceForObject(Object, Type) overload to apply query interface customization by default.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

GetComInterfaceForObject<T,TInterface>(T)

[Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt][Supported in the .NET Framework 4.5.1 and later versions] Gibt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die die angegebene Schnittstelle für das Objekt des angegebenen Typs darstellt.Returns a pointer to an IUnknown interface that represents the specified interface on an object of the specified type. Der benutzerdefinierte Zugriff auf Abfrageschnittstellen ist standardmäßig aktiviert.Custom query interface access is enabled by default.

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

Typparameter

T

Der o-Typ.The type of o.

TInterface

Der Typ der zurückzugebenden Schnittstelle.The type of interface to return.

Parameter

o
T

Das Objekt, das die Schnittstelle bereitstellt.The object that provides the interface.

Gibt zurück

Der Schnittstellenzeiger, der die TInterface-Schnittstelle darstellt.The interface pointer that represents the TInterface interface.

Attribute

Ausnahmen

Der TInterface-Parameter ist keine Schnittstelle.The TInterface parameter is not an interface.

- oder --or- Der Typ ist für COM nicht sichtbar.The type is not visible to COM.

- oder --or- Der T-Parameter ist ein offener generischer Typ.The T parameter is an open generic type.

Der o-Parameter unterstützt die angeforderte TInterface Schnittstelle nicht.The o parameter does not support the TInterface interface.

Der o-Parameter ist null.The o parameter is null.

Hinweise

Diese Methode gibt einen Schnittstellen Zeiger zurück, der die TInterface-Schnittstelle für das angegebene Objekt darstellt.This method returns an interface pointer that represents the TInterface interface on the specified object. Dies ist besonders nützlich, wenn Sie über eine nicht verwaltete Methode verfügen, die davon ausgeht, dass ein Schnittstellen Zeiger an Sie übermittelt wird.It is particularly useful if you have an unmanaged method that expects to be passed an interface pointer. Wenn Sie ein Objekt mit dieser Methode aufrufen, erhöht sich der Verweis Zähler auf den Schnittstellen Zeiger, bevor der Zeiger zurückgegeben wird.Calling an object with this method causes the reference count to increment on the interface pointer before the pointer is returned. Verwenden Sie immer die Marshal.Release-Methode, um den Verweis Zähler zu Dekrementen, wenn Sie mit dem-Zeiger fertig sind.Always use the Marshal.Release method to decrement the reference count when you have finished with the pointer. Bei Verwendung von unformatierten COM-Schnittstellen Zeigern müssen die von com definierten Regeln befolgt werden.You must adhere to the rules defined by COM when using raw COM interface pointers.

GetComInterfaceForObject<T,TInterface>(T) ist nützlich, wenn eine Methode aufgerufen wird, die einen COM-Objekt Parameter als IntPtr Typ oder mit benutzerdefiniertem Marshalling verfügbar macht.GetComInterfaceForObject<T,TInterface>(T) is useful when calling a method that exposes a COM object parameter as an IntPtr type, or with custom marshaling. Sie können diese Methode auch für ein verwaltetes Objekt verwenden, um einen Zeiger auf das COM Callable Wrapper des Objekts zu erhalten, obwohl dies weniger häufig ist.You can also use this method on a managed object to obtain a pointer to the object's COM callable wrapper, although this is less common. Beispielsweise können Sie GetComInterfaceForObject<T,TInterface>(T) für ein verwaltetes Objekt verwenden, das nach com exportiert wird, um einen Schnittstellen Zeiger für System.Runtime.InteropServices.UCOMIConnectionPointContainerzu erhalten.For example, you can use GetComInterfaceForObject<T,TInterface>(T) on a managed object that is exported to COM to obtain an interface pointer for System.Runtime.InteropServices.UCOMIConnectionPointContainer.

Die GetComInterfaceForObject<T,TInterface>(T)-Methoden Überladung ermöglicht standardmäßig die Anpassung von Abfrageschnittstellen.The GetComInterfaceForObject<T,TInterface>(T) method overload allows query interface customization by default. Verwenden Sie die GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)-Methoden Überladung, um anzugeben, ob die Anpassung der Abfrage Schnittstelle angewendet werden soll.To specify whether to apply query interface customization, use the GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) method overload.

Weitere Informationen finden Sie in den Artikeln COM Callable Wrapper und Runtime Callable Wrapper .For additional information, see the COM Callable Wrapper and Runtime Callable Wrapper articles.

Sicherheit

SecurityCriticalAttribute
Erfordert volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer.requires full trust for the immediate caller. Dieser Member kann nicht von teilweise vertrauenswürdigem oder transparentem Code verwendet werden.This member cannot be used by partially trusted or transparent code.

Gilt für: