RealProxy.SetCOMIUnknown メソッド
現在のインスタンスが表すオブジェクトのアンマネージ プロキシを格納します。
Public Overridable Sub SetCOMIUnknown( _
ByVal i As IntPtr _)
[C#]
public virtual void SetCOMIUnknown(IntPtri);
[C++]
public: virtual void SetCOMIUnknown(IntPtri);
[JScript]
public function SetCOMIUnknown(
i : IntPtr);
パラメータ
- i
現在のプロキシ インスタンスが表すオブジェクトの IUnknown インターフェイスへのポインタ。
解説
アンマネージ プロキシが COM を通じて共通言語ランタイムと通信しようとすると、ランタイムはアンマネージ プロキシで表されるリモート オブジェクトを解決します。リモート オブジェクトがマネージ オブジェクトであり、共通言語環境に格納されている場合は、配布された COM を通じてこのオブジェクトと通信するのではなく、オブジェクトが現在のプロセスに送信されます。
リモート オブジェクトが MarshalByRefObject から派生していない場合、リモート オブジェクトはシリアル化されて現在の場所にコピーされます。リモート オブジェクトが MarshalByRefObject から派生している場合、リモート オブジェクトは透過プロキシを返し、リモート処理インフラストラクチャが、今後使用するためにアンマネージ プロキシ (IUnknown インターフェイス) を透過プロキシにキャッシュします。
使用例
Public Overrides Function SupportsInterface(ByRef myGuid As Guid) As IntPtr
Console.WriteLine("SupportsInterface method called")
' Object reference is requested for communication with unmanaged objects
' in the current process through COM.
Dim myIntPtr As IntPtr = Me.GetCOMIUnknown(False)
' Stores an unmanaged proxy of the object.
Me.SetCOMIUnknown(myIntPtr)
' return COM Runtime Wrapper pointer.
Return myIntPtr
End Function 'SupportsInterface
[C#]
public override IntPtr SupportsInterface(ref Guid myGuid)
{
Console.WriteLine("SupportsInterface method called");
// Object reference is requested for communication with unmanaged objects
// in the current process through COM.
IntPtr myIntPtr = this.GetCOMIUnknown(false);
// Stores an unmanaged proxy of the object.
this.SetCOMIUnknown(myIntPtr);
// return COM Runtime Wrapper pointer.
return myIntPtr;
}
[C++]
public:
IntPtr SupportsInterface(Guid* /*myGuid*/)
{
Console::WriteLine(S"SupportsInterface method called");
// Object reference is requested for communication with unmanaged objects
// in the current process through COM.
IntPtr myIntPtr = this->GetCOMIUnknown(false);
// Stores an unmanaged proxy of the object.
this->SetCOMIUnknown(myIntPtr);
// return COM Runtime Wrapper pointer.
return myIntPtr;
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
RealProxy クラス | RealProxy メンバ | System.Runtime.Remoting.Proxies 名前空間