RealProxy.GetCOMIUnknown(Boolean) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Запрашивает неуправляемую ссылку на объект, представленный текущим экземпляром прокси-сервера.
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
Параметры
- fIsMarshalled
- Boolean
true Значение , если ссылка на объект запрашивается для маршалинга в удаленное расположение; false Если ссылка на объект запрашивается для связи с неуправляемыми объектами в текущем процессе через COM.
Возвращаемое значение
nativeint
Указатель на вызываемый COM-оболочку , если ссылка на объект запрашивается для связи с неуправляемыми объектами в текущем процессе через COM, или указатель на кэшированный или недавно созданный IUnknown COM-интерфейс, если ссылка на объект запрашивается для маршалинга в удаленное расположение.
- Атрибуты
Примеры
[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
Комментарии
Если прокси-сервер запрашивается для маршалинга, возвращается интерфейс для объекта, IUnknown представленного текущим экземпляром прокси-сервера.
IUnknown Если ранее кэшировался методомSetCOMIUnknown, возвращается этот экземпляр. В противном случае возвращается новый экземпляр.
Если прокси-сервер запрашивается не для маршалинга, а для связи с неуправляемыми объектами в текущем процессе, возвращается вызываемая оболочка COM (CCW), которая может использоваться в текущем процессе для обмена данными через COM.