Marshal.GetComInterfaceForObject メソッド

定義

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

オーバーロード

GetComInterfaceForObject(Object, Type)
古い.

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

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)
古い.

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

GetComInterfaceForObject<T,TInterface>(T)

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

GetComInterfaceForObject(Object, Type)

ソース:
Marshal.NoCom.cs
ソース:
Marshal.NoCom.cs
ソース:
Marshal.NoCom.cs

注意事項

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 インターフェイスへのポインターを返します。 カスタム クエリ インターフェイス アクセスは既定で有効になっています。

C#
[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);
C#
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T);
C#
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T);
C#
public static IntPtr GetComInterfaceForObject (object o, Type T);

パラメーター

o
Object

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

T
Type

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

戻り値

IntPtr

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

属性

例外

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 呼び出し可能ラッパーランタイム呼び出し可能ラッパー に関する記事を参照してください。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン (廃止)
.NET Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 (Core 1.0)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 2.0, 2.1 (1.2, 1.3, 1.4, 1.5, 1.6)
UWP (10.0)

GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode)

ソース:
Marshal.NoCom.cs
ソース:
Marshal.NoCom.cs
ソース:
Marshal.NoCom.cs

注意事項

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

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

C#
[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);
C#
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
C#
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);
C#
public static IntPtr GetComInterfaceForObject (object o, Type T, System.Runtime.InteropServices.CustomQueryInterfaceMode mode);

パラメーター

o
Object

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

T
Type

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

mode
CustomQueryInterfaceMode

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

戻り値

IntPtr

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

属性

例外

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

または

型が COM から参照できません。

または

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

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

o パラメーターが null です。

または

T パラメーターが null です。

注釈

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

適用対象

.NET 9 およびその他のバージョン
製品 バージョン (廃止)
.NET Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 (Core 1.0)
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 2.0, 2.1 (1.2, 1.3, 1.4, 1.5, 1.6)
UWP (10.0)

GetComInterfaceForObject<T,TInterface>(T)

ソース:
Marshal.NoCom.cs
ソース:
Marshal.NoCom.cs
ソース:
Marshal.NoCom.cs

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

C#
[System.Security.SecurityCritical]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
C#
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);
C#
public static IntPtr GetComInterfaceForObject<T,TInterface> (T o);

型パラメーター

T

o の型。

TInterface

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

パラメーター

o
T

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

戻り値

IntPtr

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 呼び出し可能ラッパーランタイム呼び出し可能ラッパー に関する記事を参照してください。

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0