Export (0) Print
Expand All

RealProxy.GetCOMIUnknown Method

Requests an unmanaged reference to the object represented by the current proxy instance.

Namespace:  System.Runtime.Remoting.Proxies
Assembly:  mscorlib (in mscorlib.dll)

public virtual IntPtr GetCOMIUnknown(
	bool fIsMarshalled
)

Parameters

fIsMarshalled
Type: System.Boolean

true if the object reference is requested for marshaling to a remote location; false if the object reference is requested for communication with unmanaged objects in the current process through COM.

Return Value

Type: System.IntPtr
A pointer to a COM Callable Wrapper if the object reference is requested for communication with unmanaged objects in the current process through COM, or a pointer to a cached or newly generated IUnknown COM interface if the object reference is requested for marshaling to a remote location.

If the proxy is requested for marshaling, then an IUnknown interface for the object represented by the current proxy instance is returned. If an IUnknown was previously cached by the SetCOMIUnknown method, then that instance is returned; otherwise, a new instance is returned.

If the proxy is requested not for marshaling but for communication with unmanaged objects in the current process, then a COM Callable Wrapper (CCW), which can be used in the current process for communication through COM, is returned.

[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.Infrastructure)]
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;
}
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;
   }

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft