RealProxy.GetCOMIUnknown(Boolean) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Solicita uma referência não gerenciada para o objeto representado pela instância de proxy atual.
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
true
se a referência de objeto for solicitada para realização de marshaling em um local remoto; false
se a referência de objeto for solicitada para comunicação com objetos não gerenciados no processo atual usando COM.
Retornos
nativeint
Um ponteiro para um COM Callable Wrapper se a referência de objeto for solicitada para comunicação com objetos não gerenciados no processo atual usando COM ou um ponteiro para uma interface COM IUnknown
gerada recentemente ou armazenada em cache se a referência de objeto for solicitada para realização de marshaling em um local remoto.
- Atributos
Exemplos
[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
Comentários
Se o proxy for solicitado para marshaling, uma IUnknown
interface para o objeto representado pela instância de proxy atual será retornada. Se um IUnknown
tiver sido armazenado em cache anteriormente pelo SetCOMIUnknown método , essa instância será retornada; caso contrário, uma nova instância será retornada.
Se o proxy for solicitado não para marshaling, mas para comunicação com objetos não gerenciados no processo atual, um CCW (Com Callable Wrapper ), que pode ser usado no processo atual para comunicação por meio de COM, será retornado.