Marshal.GetObjectForIUnknown(IntPtr) メソッド


COM オブジェクトを IUnknown インターフェイスへのポインターによって表す型のインスタンスを返します。Returns an instance of a type that represents a COM object by a pointer to its IUnknown interface.

 static System::Object ^ GetObjectForIUnknown(IntPtr pUnk);
public static object GetObjectForIUnknown (IntPtr pUnk);
static member GetObjectForIUnknown : nativeint -> obj
Public Shared Function GetObjectForIUnknown (pUnk As IntPtr) As Object



IUnknown インターフェイスへのポインター。A pointer to the IUnknown interface.


指定したアンマネージ COM オブジェクトを表すオブジェクト。An object that represents the specified unmanaged COM object.



pUnkZero です。pUnk is Zero.


このメソッドは、マネージオブジェクトの IUnknown をラップします。This method wraps IUnknown in a managed object. これには、COM コンポーネントの参照カウントをインクリメントする効果があります。This has the effect of incrementing the reference count of the COM component. ランタイムが COM オブジェクトを表すマネージオブジェクトでガベージコレクションを実行すると、参照カウントが減少します。The reference count will be decremented when the runtime performs garbage collection on the managed object that represents the COM object.

pUnk パラメーターは、IUnknown インターフェイスポインターを表します。ただし、すべての COM インターフェイスは IUnknownから直接または間接的に派生するため、このメソッドに任意の COM インターフェイスを渡すことができます。The pUnk parameter represents an IUnknown interface pointer; however, because all COM interfaces derive directly or indirectly from IUnknown, you can pass any COM interface to this method. GetObjectForIUnknown によって返されるオブジェクトは、他のマネージオブジェクトと同様に共通言語ランタイムが管理するランタイム呼び出し可能ラッパーです。The object returned by GetObjectForIUnknown is a Runtime Callable Wrapper, which the common language runtime manages as it does any other managed object. このラッパーの型は、多くの場合、基本 System.__ComObject 型です。これは、ラッパー型があいまいな場合に使用される非表示の型です。The type of this wrapper is often a base System.__ComObject type, which is a hidden type used when the wrapper type is ambiguous. COM オブジェクトがIDispatchインターフェイスを実装している限り、このような基本型への遅延バインディング呼び出しを行うこともできます。You can still make late-bound calls to such a base type as long as the COM object implements the IDispatch interface. 同様に、返されたオブジェクトを適切な COM インターフェイスにキャストすることもできます。Likewise, you can cast the returned object to an appropriate COM interface.

オブジェクトが特定のマネージクラス型 (ジェネリックラッパー型ではない) でラップされるようにするには、次の要件に従う必要があります。For an object to be wrapped with a specific managed class type (and not a generic wrapper type), you must adhere to the following requirements:

または、これらの要件を回避し、Marshal.GetTypedObjectForIUnknown メソッドを使用して、特定のマネージクラス型でラップされたオブジェクトを取得することもできます。Alternatively, you can avoid these requirements and still get an object that is wrapped with a specific managed class type by using the Marshal.GetTypedObjectForIUnknown method.


直前の呼び出し元に完全信頼が必要です。requires full trust for the immediate caller. このメンバーは、部分的に信頼されているコードまたは透過的なコードでは使用できません。This member cannot be used by partially trusted or transparent code.