ComWrappers Klas

Definitie

Belangrijk

Deze API is niet CLS-conform.

Klasse voor het beheren van wrappers van COM IUnknown-typen.

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
Overname
ComWrappers
Afgeleid
Kenmerken

Opmerkingen

De ComWrappers API biedt ondersteuning voor de IUnknown API onafhankelijk van de ingebouwde COM-interoperabiliteitsondersteuning. De ComWrappers API biedt de minimale runtime-ondersteuning die ontwikkelaars nodig hebben om de ingebouwde versie op een efficiënte manier te vervangen.

Traditioneel in de runtime wordt een systeemeigen proxy naar beheerd object een COM Callable Wrapper (CCW) genoemd en wordt een beheerde proxy naar een systeemeigen object een Runtime Callable Wrapper (RCW) genoemd. Wanneer deze termen hier echter worden gebruikt, moeten deze termen niet worden verward met de ingebouwde functies van dezelfde naam (dat wil gezegd CCW en RCW). In tegenstelling tot de ingebouwde functies wordt het merendeel van de verantwoordelijkheid voor nauwkeurig levensduurbeheer, dispatching-methoden en marshalling van argumenten en retourwaarden overgelaten aan de ComWrappers implementator.

'Minimale ondersteuning' wordt gedefinieerd door de volgende functies:

  1. Efficiënte koppeling tussen een beheerd object en een systeemeigen proxy (bijvoorbeeld CCW).
  2. Efficiënte koppeling tussen een systeemeigen IUnknown en zijn beheerde proxy (bijvoorbeeld RCW).
  3. Integratie met de garbagecollector via het IReferenceTrackerHost-interfacecontract .

Door dit te benutten is dit een geavanceerd scenario.

Proxy-staat

Deze sectie bevat beschrijvingen en illustraties van de natuurlijke en beheerde proxystatus na hun respectieve creatie.

In de volgende illustraties wordt een sterke verwijzing weergegeven als een ononderbroken lijn (===) en wordt een zwakke verwijzing weergegeven als een stippellijn (= = =). De termen 'sterke verwijzing' en 'zwakke verwijzing' moeten worden geïnterpreteerd als 'levensduur verlengen' en 'niet de levensduur verlengen', in plaats van een specifieke implementatie te impliceren.

In de volgende afbeelding ziet u de status van het beheerde object en de systeemeigen proxy na een aanroep naar ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags).

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

In de volgende afbeelding ziet u de status van het systeemeigen object en de beheerde proxy na een aanroep naar ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags). Het concept 'identiteit' volgt de regels voor IUnknown.

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

Merk op dat alleen zwakke verwijzingen bestaan vanuit het perspectief van runtime. Het +1 referentieaantal van het systeemeigen object wordt geacht uitgevoerd te worden door de beheerste proxy-creator (dat wil zeggen, de ComWrappers implementer) om de bijbehorende levensduur tussen het systeemeigen object en zijn beheerde proxy te garanderen. Er is een optionele sterke verwijzing (namelijk AddRef()) vermeld in de beheerde proxy, die wordt gebruikt om scenario (3) te ondersteunen dat eerder is genoemd. Zie CreateObjectFlags.TrackerObject. Met deze optionele sterke verwijzing zou het aantal verwijzingen zijn +2.

Constructors

Name Description
ComWrappers()

Exemplaarconstructor.

Methoden

Name Description
ComputeVtables(Object, CreateComInterfaceFlags, Int32)

Berekent de gewenste Vtable voor obj, waarbij de waarden van flags.

CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags)

Hiermee maakt u een beheerd object voor het object waarnaar wordt verwezen door externalComObject de waarden van flags.

CreateObject(IntPtr, CreateObjectFlags)

Hiermee maakt u een beheerd object voor het object waarnaar externalComObject wordt verwezen, waarbij de waarden van flags.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetIUnknownImpl(IntPtr, IntPtr, IntPtr)

Hiermee haalt u de door runtime geleverde IUnknown-implementatie op.

GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags)

Hiermee maakt u een COM-weergave van het opgegeven object dat kan worden doorgegeven aan een niet-beheerde omgeving.

GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object)

Hiermee haalt u het momenteel geregistreerde beheerde object op of maakt u een nieuw beheerd object en registreert u het.

GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags)

Hiermee haalt u het momenteel geregistreerde beheerde object op of maakt u een nieuw beheerd object en registreert u het.

GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr)

Haal het momenteel geregistreerde beheerde object op of gebruik het opgegeven beheerde object en registreert het.

GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object)

Hiermee haalt u het momenteel geregistreerde beheerde object op of gebruikt u het opgegeven beheerde object en registreert u het.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
RegisterForMarshalling(ComWrappers)

Registreert een ComWrappers exemplaar dat moet worden gebruikt als het globale exemplaar voor marshalling in de runtime.

RegisterForTrackerSupport(ComWrappers)

Registreert een ComWrappers exemplaar dat moet worden gebruikt als het globale exemplaar voor referentietrackerondersteuning.

ReleaseObjects(IEnumerable)

Hiermee wordt een verzameling objecten buiten de normale levensduur van het object of de COM-interface uitgebracht.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TryGetComInstance(Object, IntPtr)

Bepaalt of het opgegeven beheerde object een ComWrappersdoor -gemaakte beheerde wrapper is en als dat het het volgende is, wordt de verpakte niet-beheerde aanwijzer geretourneerd.

TryGetObject(IntPtr, Object)

Bepaalt of het opgegeven COM-object een ComWrappersniet-beheerde wrapper is en als dat het het opgegeven beheerde object retourneert.

Van toepassing op