RealProxy.SetCOMIUnknown(IntPtr) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сохраняет неуправляемый прокси объекта, представленный текущим экземпляром.
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)
Параметры
- i
-
IntPtr
nativeint
Указатель на интерфейс IUnknown
для объекта, представленного текущим экземпляром прокси.
Примеры
[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
Комментарии
Когда неуправляемый прокси-сервер пытается взаимодействовать со средой CLR через COM, среда выполнения разрешает удаленный объект, представленный неуправляемым прокси-сервером. Если удаленный объект управляется и также находится в общеязыковой среде, то вместо обмена данными с ним через распределенную com-модель объект отправляется в текущий процесс.
Если удаленный объект не является производным от MarshalByRefObject, он сериализуется и копируется в текущее расположение. Если он является производным от MarshalByRefObject, он возвращает прозрачный прокси-сервер, а инфраструктура удаленного взаимодействия кэширует неуправляемый IUnknown
прокси-сервер (интерфейс) в прозрачном прокси-сервере для дальнейшего использования.