Marshal.GetComInterfaceForObject メソッド

定義

オブジェクトのインターフェイスを表すインターフェイス ポインターを返します。

オーバーロード

名前 説明
GetComInterfaceForObject(Object, Type)
古い.

指定したオブジェクトの指定したインターフェイスを表す IUnknown インターフェイスへのポインターを返します。 カスタム クエリ インターフェイス アクセスは、既定で有効になっています。

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
古い.

指定したオブジェクトの指定したインターフェイスを表す IUnknown インターフェイスへのポインターを返します。 カスタム クエリ インターフェイスへのアクセスは、指定されたカスタマイズ モードによって制御されます。

GetComInterfaceForObject<T,TInterface>(T)

指定した型のオブジェクトの指定したインターフェイスを表す IUnknown インターフェイスへのポインターを返します。 カスタム クエリ インターフェイス アクセスは、既定で有効になっています。

GetComInterfaceForObject(Object, Type)

注意事項

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

指定したオブジェクトの指定したインターフェイスを表す IUnknown インターフェイスへのポインターを返します。 カスタム クエリ インターフェイス アクセスは、既定で有効になっています。

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);
public static IntPtr GetComInterfaceForObject(object o, Type T);
[System.Security.SecurityCritical]
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
static member GetComInterfaceForObject : obj * Type -> nativeint
[<System.Security.SecurityCritical>]
static member GetComInterfaceForObject : obj * Type -> nativeint
Public Shared Function GetComInterfaceForObject (o As Object, T As Type) As IntPtr

パラメーター

o
Object

インターフェイスを提供するオブジェクト。

T
Type

要求されるインターフェイスの種類。

返品

IntPtr

nativeint

オブジェクトの指定したインターフェイスを表すインターフェイス ポインター。

属性

例外

T パラメーターはインターフェイスではありません。

-または-

この型は COM には表示されません。

-または-

T パラメーターはジェネリック型定義です。

o パラメーターは、要求されたインターフェイスをサポートしていません。

o パラメーターはnull

-または-

T パラメーターはnull

注釈

このメソッドは、指定したオブジェクトで要求されたインターフェイスを表すインターフェイス ポインターを返します。 これは、インターフェイス ポインターが渡されることを期待するアンマネージ メソッドがある場合に特に便利です。 このメソッドを使用してオブジェクトを呼び出すと、ポインターが返される前に、インターフェイス ポインターで参照カウントがインクリメントされます。 ポインターが終了したら、常に Marshal.Release を使用して参照カウントを減らします。 生の COM インターフェイス ポインターを使用する場合は、COM で定義されている規則に従う必要があります。

GetComInterfaceForObject(Object, Type) は、COM オブジェクト パラメーターを IntPtr 型として、またはカスタム マーシャリングを使用して公開するメソッドを呼び出すときに便利です。 あまり一般的ではありませんが、マネージド オブジェクトでこのメソッドを使用して、オブジェクトの COM 呼び出し可能ラッパーへのポインターを取得できます。 たとえば、COM にエクスポートされるマネージド オブジェクトで GetComInterfaceForObject(Object, Type) を使用して、 System.Runtime.InteropServices.UCOMIConnectionPointContainerのインターフェイス ポインターを取得できます。 クラス インターフェイスには、2 番目のパラメーター (t) に渡す対応する型がないため、クラス インターフェイスへのポインターを取得できません。 代わりに、 Marshal.GetIDispatchForObject を使用して、COM 呼び出し可能ラッパーの既定のインターフェイス (通常は自動ディスパッチ クラス インターフェイス) でメンバーを呼び出します。

GetComInterfaceForObject(Object, Type) メソッドのオーバーロードでは、既定でクエリ インターフェイスをカスタマイズできます。 クエリ インターフェイスのカスタマイズを適用するかどうかを指定するには、 GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) メソッドのオーバーロードを使用します。

詳細については、 COM 呼び出し可能ラッパーとランタイム呼び出可能ラッパー に関する記事を参照してください。

こちらもご覧ください

適用対象

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

注意事項

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

指定したオブジェクトの指定したインターフェイスを表す IUnknown インターフェイスへのポインターを返します。 カスタム クエリ インターフェイスへのアクセスは、指定されたカスタマイズ モードによって制御されます。

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.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.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

パラメーター

o
Object

インターフェイスを提供するオブジェクト。

T
Type

要求されるインターフェイスの種類。

mode
CustomQueryInterfaceMode

ICustomQueryInterfaceによって提供されるIUnknown::QueryInterfaceカスタマイズを適用するかどうかを示す列挙値の 1 つ。

返品

IntPtr

nativeint

オブジェクトのインターフェイスを表すインターフェイス ポインター。

属性

例外

T パラメーターはインターフェイスではありません。

-または-

この型は COM には表示されません。

-または-

T パラメーターはジェネリック型定義です。

oオブジェクトは、要求されたインターフェイスをサポートしていません。

o パラメーターはnull

-または-

T パラメーターはnull

注釈

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) では、クエリ インターフェイスのカスタマイズを適用するかどうかを指定できます。 GetComInterfaceForObject(Object, Type) オーバーロードを使用して、クエリ インターフェイスのカスタマイズを既定で適用します。

適用対象

GetComInterfaceForObject<T,TInterface>(T)

指定した型のオブジェクトの指定したインターフェイスを表す IUnknown インターフェイスへのポインターを返します。 カスタム クエリ インターフェイス アクセスは、既定で有効になっています。

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

型パラメーター

T

o の型。

TInterface

返すインターフェイスの型。

パラメーター

o
T

インターフェイスを提供するオブジェクト。

返品

IntPtr

nativeint

TInterface インターフェイスを表すインターフェイス ポインター。

属性

例外

TInterface パラメーターはインターフェイスではありません。

-または-

この型は COM には表示されません。

-または-

T パラメーターはオープン ジェネリック型です。

o パラメーターは、TInterface インターフェイスをサポートしていません。

o パラメーターはnull

注釈

このメソッドは、指定したオブジェクトの TInterface インターフェイスを表すインターフェイス ポインターを返します。 これは、インターフェイス ポインターが渡されることを期待するアンマネージ メソッドがある場合に特に便利です。 このメソッドを使用してオブジェクトを呼び出すと、ポインターが返される前に、インターフェイス ポインターで参照カウントがインクリメントされます。 ポインターが終了したら、常に Marshal.Release メソッドを使用して参照カウントを減らします。 生の COM インターフェイス ポインターを使用する場合は、COM で定義されている規則に従う必要があります。

GetComInterfaceForObject<T,TInterface>(T) は、COM オブジェクト パラメーターを IntPtr 型として、またはカスタム マーシャリングを使用して公開するメソッドを呼び出すときに便利です。 マネージド オブジェクトでこのメソッドを使用して、オブジェクトの COM 呼び出し可能ラッパーへのポインターを取得することもできますが、これはあまり一般的ではありません。 たとえば、COM にエクスポートされるマネージド オブジェクトで GetComInterfaceForObject<T,TInterface>(T) を使用して、 System.Runtime.InteropServices.UCOMIConnectionPointContainerのインターフェイス ポインターを取得できます。

GetComInterfaceForObject<T,TInterface>(T) メソッドのオーバーロードでは、既定でクエリ インターフェイスをカスタマイズできます。 クエリ インターフェイスのカスタマイズを適用するかどうかを指定するには、 GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) メソッドのオーバーロードを使用します。

詳細については、 COM 呼び出し可能ラッパーとランタイム呼び出可能ラッパー に関する記事を参照してください。

適用対象