ComWrappers Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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:
- Efektivní mapování mezi spravovaným objektem a nativním proxy serverem (například CCW).
- Efektivní mapování mezi nativním
IUnknowna spravovaným proxy serverem (například RCW). - 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 |
| CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags) |
Vytvoří spravovaný objekt pro objekt, na který odkazuje, tím, že |
| CreateObject(IntPtr, CreateObjectFlags) |
Vytvoří spravovaný objekt pro objekt, na který |
| 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. |