RealProxy.GetCOMIUnknown(Boolean) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Solicita una referencia no administrada al objeto representado por la instancia actual del proxy.
public:
virtual IntPtr GetCOMIUnknown(bool fIsMarshalled);
public virtual IntPtr GetCOMIUnknown (bool fIsMarshalled);
[System.Security.SecurityCritical]
public virtual IntPtr GetCOMIUnknown (bool fIsMarshalled);
abstract member GetCOMIUnknown : bool -> nativeint
override this.GetCOMIUnknown : bool -> nativeint
[<System.Security.SecurityCritical>]
abstract member GetCOMIUnknown : bool -> nativeint
override this.GetCOMIUnknown : bool -> nativeint
Public Overridable Function GetCOMIUnknown (fIsMarshalled As Boolean) As IntPtr
Parámetros
- fIsMarshalled
- Boolean
Es true
si la referencia al objeto se solicita para calcular las referencias a una ubicación remota; es false
si la referencia a objeto se solicita para establecer comunicación con objetos no administrados en el proceso actual mediante COM.
Devoluciones
nativeint
Puntero a un contenedor CCW si se solicita la referencia al objeto para establecer comunicación con objetos no administrados en el proceso actual por medio de COM, o un puntero a una interfaz COM IUnknown
en caché o recientemente generado si la referencia a objeto se solicita para calcular las referencias a una ubicación remota.
- Atributos
Ejemplos
[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
Comentarios
Si se solicita el proxy para la serialización, se devuelve una IUnknown
interfaz para el objeto representado por la instancia de proxy actual. Si el método ha almacenado SetCOMIUnknown previamente en caché una IUnknown
instancia, se devuelve esa instancia; de lo contrario, se devuelve una nueva instancia.
Si el proxy no se solicita para la serialización, sino para la comunicación con objetos no administrados en el proceso actual, se devuelve un contenedor llamado COM (CCW), que se puede usar en el proceso actual para la comunicación a través de COM.