Marshal.GetIUnknownForObjectInContext メソッド
メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。
呼び出し元がマネージ オブジェクトと同じコンテキストに存在しない場合に、そのマネージ オブジェクトから IUnknown インターフェイスを返します。
名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文
Dim o As Object Dim returnValue As IntPtr returnValue = Marshal.GetIUnknownForObjectInContext(o)
戻り値
o パラメータの IUnknown ポインタ。呼び出し元が指定したオブジェクトと同じコンテキストに存在しない場合は null 参照 (Visual Basic では Nothing)。

このメソッドは、呼び出し元がオブジェクトと同じコンテキストに存在しない場合に null 参照 (Visual Basic では Nothing) を返す点を除けば、GetIUnknownForObject と同じです。
![]() |
---|
このメソッドは SecurityAction.LinkDemand を使用して、信頼関係のないコードからの呼び出しを防ぎます。SecurityPermissionAttribute.UnmanagedCode アクセス許可は、直前の呼び出し元にのみ要求されます。信頼性が一部しか確認されていないコードから呼び出すことができるコードの場合、ユーザー入力を検証せずに Marshal クラスに渡すことは避けてください。LinkDemand メンバの使用に関する重要な制約事項については、「Demand と LinkDemand」を参照してください。 |

GetIUnknownForObjectInContext メソッドを使用して、マネージ オブジェクトの IUnknown インターフェイスを取得する方法を次のコード例に示します。
Imports System.Runtime.InteropServices Module Program Sub Run() ' Dim an Integer object Dim IntegerObject As Integer = 1 ' Dim a pointer Dim pointer As IntPtr Console.WriteLine("Calling Marshal.GetIUnknownForObjectInContext...") ' Get the IUnKnown pointer for the Integer object pointer = Marshal.GetIUnknownForObjectInContext(IntegerObject) Console.WriteLine("Calling Marshal.Release...") ' Always call Marshal.Release to decrement the reference count. Marshal.Release(pointer) End Sub Sub Main(ByVal args() As String) Run() End Sub End Module
using System; using System.Runtime.InteropServices; class Program { static void Run() { // Create an int object int obj = 1; Console.WriteLine("Calling Marshal.GetIUnknownForObjectInContext..."); // Get the IUnKnown pointer for the Integer object IntPtr pointer = Marshal.GetIUnknownForObjectInContext(obj); Console.WriteLine("Calling Marshal.Release..."); // Always call Marshal.Release to decrement the reference count. Marshal.Release(pointer); } static void Main(string[] args) { Run(); } }

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

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


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