Marshal.GetObjectForIUnknown メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim pUnk As IntPtr Dim returnValue As Object returnValue = Marshal.GetObjectForIUnknown(pUnk)
戻り値
指定したアンマネージ COM オブジェクトを表すオブジェクト。

このメソッドは、IUnknown をマネージ オブジェクトでラップします。これにより、COM コンポーネントの参照カウントがインクリメントされます。COM オブジェクトを表すマネージ オブジェクトに対するガベージ コレクションがランタイムによって実行されると、参照カウントはデクリメントされます。
1 番目のパラメータ (pUnk) は、IUnknown インターフェイス ポインタを表します。ただし、COM のインターフェイスはすべて直接的または間接的に IUnknown から派生しているので、このメソッドには任意の COM インターフェイスを渡すことができます。GetObjectForIUnknown が返すオブジェクトはランタイム呼び出し可能ラッパーです。共通言語ランタイムはこれを他のマネージ オブジェクトと同様に管理します。このラッパーの型は汎用の System.__ComObject 型となることもよくあります。これは、ラッパーの型があいまいな場合に使用される隠し型です。COM オブジェクトが IDispatch インターフェイスを実装している限りは、このようなジェネリック型を遅延バインディングで呼び出すこともできます。同様に、返されたオブジェクトは適切な COM インターフェイスにキャストできます。詳細については、ランタイム呼び出し可能ラッパー のトピックを参照してください。
汎用的なラッパー型ではなく、特定のマネージ クラス型でラップするオブジェクトを使用する場合は、次の要件に従う必要があります。
なお、Marshal.GetTypedObjectForIUnknown メソッドを使用すれば、これらの要件を回避しながら、特定のマネージ クラス型でラップされたオブジェクトを取得することができます。
![]() |
---|
このメソッドは SecurityAction.LinkDemand を使用して、信頼関係のないコードからの呼び出しを防ぎます。SecurityPermissionAttribute.UnmanagedCode アクセス許可は、直前の呼び出し元にのみ要求されます。信頼性が一部しか確認されていないコードから呼び出すことができるコードの場合、ユーザー入力を検証せずに Marshal クラスに渡すことは避けてください。LinkDemand メンバの使用に関する重要な制約事項については、「Demand と LinkDemand」を参照してください。 |

- SecurityPermission (アンマネージ コードを呼び出すために必要なアクセス許可)。 UnmanagedCode (関連する列挙体)。LinkDemand (セキュリティ アクション)。

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からMarshal.GetObjectForIUnknown メソッドを検索する場合は、下記のリンクをクリックしてください。

- Marshal.GetObjectForIUnknown メソッドのページへのリンク