RealProxy.SetCOMIUnknown(IntPtr) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Archivia un proxy non gestito dell'oggetto rappresentato dall'istanza corrente.
public:
virtual void SetCOMIUnknown(IntPtr i);
public virtual void SetCOMIUnknown (IntPtr i);
abstract member SetCOMIUnknown : nativeint -> unit
override this.SetCOMIUnknown : nativeint -> unit
Public Overridable Sub SetCOMIUnknown (i As IntPtr)
Parametri
- i
-
IntPtr
nativeint
Puntatore all'interfaccia IUnknown
per l'oggetto rappresentato dall'istanza del proxy corrente.
Esempio
[SecurityPermission(SecurityAction::LinkDemand, Flags = SecurityPermissionFlag::Infrastructure)]
IntPtr SupportsInterface( 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 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;
}
<SecurityPermission(SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.Infrastructure)> _
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
Commenti
Quando un proxy non gestito tenta di comunicare con Common Language Runtime tramite COM, il runtime risolve l'oggetto remoto rappresentato dal proxy non gestito. Se l'oggetto remoto è gestito e risiede anche in un ambiente common language, anziché comunicare con esso tramite COM distribuito, l'oggetto viene inviato al processo corrente.
Se l'oggetto remoto non è derivato da MarshalByRefObject, viene serializzato e copiato nella posizione corrente. Se è derivato da MarshalByRefObject, restituisce un proxy trasparente e l'infrastruttura remota memorizza nella cache il proxy non gestito (l'interfaccia IUnknown
) nel proxy trasparente per un uso futuro.