Marshal.GetComInterfaceForObject メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オブジェクトのインターフェイスを表すインターフェイス ポインターを返します。
オーバーロード
| 名前 | 説明 |
|---|---|
| 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
要求されるインターフェイスの種類。
返品
nativeint
オブジェクトの指定したインターフェイスを表すインターフェイス ポインター。
- 属性
例外
o パラメーターは、要求されたインターフェイスをサポートしていません。
注釈
このメソッドは、指定したオブジェクトで要求されたインターフェイスを表すインターフェイス ポインターを返します。 これは、インターフェイス ポインターが渡されることを期待するアンマネージ メソッドがある場合に特に便利です。 このメソッドを使用してオブジェクトを呼び出すと、ポインターが返される前に、インターフェイス ポインターで参照カウントがインクリメントされます。 ポインターが終了したら、常に 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 呼び出し可能ラッパーとランタイム呼び出 し 可能ラッパー に関する記事を参照してください。
こちらもご覧ください
- GetComInterfaceForObjectInContext(Object, Type)
- ComImportAttribute
- Release(IntPtr)
- UCOMIConnectionPointContainer
- GetIDispatchForObject(Object)
適用対象
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
要求されるインターフェイスの種類。
ICustomQueryInterfaceによって提供されるIUnknown::QueryInterfaceカスタマイズを適用するかどうかを示す列挙値の 1 つ。
返品
nativeint
オブジェクトのインターフェイスを表すインターフェイス ポインター。
- 属性
例外
oオブジェクトは、要求されたインターフェイスをサポートしていません。
注釈
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
インターフェイスを提供するオブジェクト。
返品
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 呼び出し可能ラッパーとランタイム呼び出 し 可能ラッパー に関する記事を参照してください。