Marshal.GetIUnknownForObject メソッド
マネージ オブジェクトから IUnknown インターフェイスを返します。
Public Shared Function GetIUnknownForObject( _
ByVal o As Object _) As IntPtr
[C#]
public static IntPtr GetIUnknownForObject(objecto);
[C++]
public: static IntPtr GetIUnknownForObject(Object* o);
[JScript]
public static function GetIUnknownForObject(
o : Object) : IntPtr;
パラメータ
- o
要求される IUnknown インターフェイスを持つオブジェクト。
戻り値
o パラメータの IUnknown ポインタ。
解説
マネージ コードでは、 IUnknown インターフェイスを直接使用することはほとんどありません。ただし、 IntPtr 型として、またはカスタム マーシャリングで COM オブジェクトのパラメータを公開するメソッドを呼び出すときは、 GetIUnknownForObject を使用します。このメソッドでオブジェクトを呼び出すと、ポインタが返される前に、インターフェイス ポインタで参照カウントがインクリメントされます。ポインタの使用が終わったときは、必ず Marshal.Release を使用して参照カウントをデクリメントしてください。このメソッドは、 Marshal.GetObjectForIUnknown メソッドと反対の機能を提供します。
マネージ オブジェクトでこのメソッドを使用すると、オブジェクトの COM 呼び出し可能ラッパーへのインターフェイス ポインタを取得できます。詳細については、「 COM 呼び出し可能ラッパー 」を参照してください。
メモ このメソッドは SecurityAction.LinkDemand を使用して、信頼関係のないコードからの呼び出しを防ぎます。 SecurityPermissionAttribute.UnmanagedCode アクセス許可は、直前の呼び出し元にのみ要求されます。信頼性が一部しか確認されていないコードから呼び出すことができるコードの場合、ユーザー入力を検証せずに Marshal クラスに渡すことは避けてください。 LinkDemand メンバの使用に関する重要な制約事項については、「 Demand と LinkDemand 」を参照してください。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
.NET Framework セキュリティ:
- SecurityPermission (アンマネージ コードを操作するために必要なアクセス許可) SecurityPermissionFlag.UnmanagedCode (関連する列挙体)
参照
Marshal クラス | Marshal メンバ | System.Runtime.InteropServices 名前空間 | Release | GetObjectForIUnknown