ComWrappers Třída

Definice

Důležité

Toto rozhraní API neodpovídá specifikaci CLS.

Třída pro správu obálky typů MODELU COM IUnknown.

public ref class ComWrappers abstract
[System.CLSCompliant(false)]
[System.Runtime.Versioning.UnsupportedOSPlatform("android")]
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
[System.Runtime.Versioning.UnsupportedOSPlatform("ios")]
[System.Runtime.Versioning.UnsupportedOSPlatform("tvos")]
public abstract class ComWrappers
[System.CLSCompliant(false)]
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public abstract class ComWrappers
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("android")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("ios")>]
[<System.Runtime.Versioning.UnsupportedOSPlatform("tvos")>]
type ComWrappers = class
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
type ComWrappers = class
Public MustInherit Class ComWrappers
Dědičnost
ComWrappers
Odvozené
Atributy

Poznámky

Rozhraní ComWrappers API poskytuje podporu IUnknown API nezávisle na vestavěné podpoře pro interoperabilitu s modelem COM. Rozhraní ComWrappers API zveřejňuje minimální podporu modulu runtime, kterou vývojáři potřebují k efektivnímu nahrazení integrované verze.

Tradičně se v modulu runtime nazývá nativní proxy pro spravovaný objekt COM Callable Wrapper (CCW) a spravovaný proxy pro nativní objekt se nazývá Runtime Callable Wrapper (RCW). Při použití zde by se však tyto termíny neměly zaměňovat s integrovanými funkcemi stejného názvu (to znamená CCW a RCW). Na rozdíl od předdefinovaných funkcí je většina odpovědnosti za přesnou správu životnosti, metody odesílání a zařazování argumentů a návratových hodnot ponechána implementátoru ComWrappers .

Minimální podpora je definována následujícími funkcemi:

  1. Efektivní mapování mezi spravovaným objektem a nativním proxy serverem (například CCW).
  2. Efektivní mapování mezi nativním IUnknown a spravovaným proxy serverem (například RCW).
  3. Integrace se správcem paměti prostřednictvím kontraktu rozhraní IReferenceTrackerHost

Využití tohoto je pokročilý scénář.

Stav proxy serveru

Tato část obsahuje popisy a ilustrace nativního a spravovaného stavu proxy serveru po jejich vytvoření.

Na následujících ilustracích je silný odkaz znázorněn jako plná čára (===) a slabý odkaz je znázorněn jako přerušovaná čára (= = =). Termíny "silné odkazy" a "slabé odkazy" by měly být interpretovány jako "prodloužení životnosti" a "neprodlužuje životnost", a nikoli jako naznačovat konkrétní implementaci.

Následující obrázek znázorňuje stav spravovaného objektu a nativního proxy serveru po volání ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags).

 --------------------                  ----------------------
|   Managed object   |                |     Native proxy     |
|                    |                | Ref count: 1         |
|  ----------------  |                |  ------------------  |
| | Weak reference |=| = = = = = = = >| | Strong reference | |
| |    to proxy    | |<===============|=|    to object     | |
|  ----------------  |                |  ------------------  |
 --------------------                  ----------------------

Následující obrázek znázorňuje stav nativního objektu a spravovaného proxy serveru po volání ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags). Koncept identity se řídí pravidly pro IUnknown.

 ------------------               ------------------
|  Native object   |< = = = = = =|                  |
| Ref count: +1    |             | Mapping from     |
 ------------------              | native identity  |
 ------------------------        | to managed proxy |
|   Managed proxy        |< = = =|                  |
| Created by ComWrappers |        ------------------
|   implementer.        |
| Optional AddRef() on   |
|   native object.      |
 ------------------------

Všimněte si, že z pohledu modulu runtime existují pouze slabé odkazy. Předpokládá se, že počet odkazů na nativní objekt provádí spravovaný tvůrce proxy serveru (tj. +1 implementátor), aby zajistil přidruženou životnost mezi nativním objektem a jeho spravovaným proxy serverem. Ve spravovaném proxy serveru je uvedený volitelný silný odkaz (tj AddRef(). ), který se používá k podpoře scénáře (3) uvedeného dříve. Viz CreateObjectFlags.TrackerObject. S tímto volitelným silným odkazem by počet odkazů byl +2.

Konstruktory

Name Description
ComWrappers()

Konstruktor instance.

Metody

Name Description
ComputeVtables(Object, CreateComInterfaceFlags, Int32)

Vypočítá požadovanou Vtable pro obj, respektující hodnoty flags.

CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags)

Vytvoří spravovaný objekt pro objekt, na který odkazuje, tím, že externalComObject respektuje hodnoty .flags

CreateObject(IntPtr, CreateObjectFlags)

Vytvoří spravovaný objekt pro objekt, na který externalComObject odkazuje, přičemž respektuje hodnoty .flags

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetIUnknownImpl(IntPtr, IntPtr, IntPtr)

Získá implementaci IUnknown poskytovanou modulem runtime.

GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags)

Vytvoří reprezentaci modelu COM zadaného objektu, který lze předat do nespravované prostředí.

GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object)

Získá aktuálně zaregistrovaný spravovaný objekt nebo vytvoří nový spravovaný objekt a zaregistruje ho.

GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags)

Získá aktuálně zaregistrovaný spravovaný objekt nebo vytvoří nový spravovaný objekt a zaregistruje ho.

GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr)

Získejte aktuálně zaregistrovaný spravovaný objekt nebo použije zadaný spravovaný objekt a zaregistruje ho.

GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object)

Získá aktuálně zaregistrovaný spravovaný objekt nebo používá zadaný spravovaný objekt a zaregistruje ho.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
RegisterForMarshalling(ComWrappers)

Zaregistruje ComWrappers instanci, která se má použít jako globální instance pro zařazování v modulu runtime.

RegisterForTrackerSupport(ComWrappers)

Zaregistruje ComWrappers instanci, která se použije jako globální instance pro podporu referenčního sledování.

ReleaseObjects(IEnumerable)

Uvolní kolekci objektů mimo normální dobu života objektu nebo rozhraní MODELU COM.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TryGetComInstance(Object, IntPtr)

Určuje, jestli je zadaný spravovaný objekt spravovaný obálkou ComWrappersvytvořenou a pokud ano, vrátí zabalený nespravovaný ukazatel.

TryGetObject(IntPtr, Object)

Určuje, zda zadaný objekt COM je ComWrappers-created nespravovaný obálka, a pokud ano, vrátí zabalený spravovaný objekt.

Platí pro