ComWrappers Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Fontos
Ez az API nem CLS-kompatibilis.
A COM IUnknown-típusok burkolóinak kezelésére szolgáló osztály.
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
- Öröklődés
-
ComWrappers
- Származtatott
- Attribútumok
Megjegyzések
Az ComWrappers API a IUnknown beépített COM együttműködési támogatástól függetlenül nyújt támogatást az API számára. Az ComWrappers API elérhetővé teszi a minimális futásidejű támogatást, amelyre a fejlesztőknek szükségük van a beépített verzió hatékony cseréjéhez.
Hagyományosan a futásidejű környezetben a felügyelt objektumokhoz tartozó natív proxyt COM Callable Wrappernek (CCW), míg a natív objektumhoz tartozó felügyelt proxyt Runtime Callable Wrappernek (RCW) nevezzük. Az itt használt kifejezések azonban nem tévesztendők össze az azonos nevű beépített funkciókkal (azaz CCW és RCW). A beépített funkciókkal ellentétben a pontos élettartam-kezelés, a küldési módszerek, valamint az argumentumok és a visszatérési értékek rendezése a végrehajtóra ComWrappers hárul.
A minimális támogatást a következő funkciók határozzák meg:
- Felügyelt objektum és natív proxy (például CCW) közötti hatékony leképezés.
- Hatékony leképezés a natív
IUnknownés a felügyelt proxy között (például RCW). - Integráció a szemétgyűjtővel az IReferenceTrackerHost interfészszerződésen keresztül.
Ennek kihasználása egy fejlett forgatókönyv.
Proxyállapot
Ez a szakasz a natív és felügyelt proxyállapot leírását és illusztrációit tartalmazza a létrehozásuk után.
Az alábbi ábrákon az erős hivatkozás szilárd vonalként (===) és gyenge hivatkozásként van ábrázolva szaggatott vonalként (= = =). Az "erős hivatkozás" és a "gyenge hivatkozás" kifejezéseket "élettartam meghosszabbítása" és "élettartam nem meghosszabbítása" kifejezésként kell értelmezni, szemben egy konkrét megvalósítást sugalló értelemmel.
Az alábbi ábrán a felügyelt objektum és a natív proxy állapota látható a hívás ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags)után.
-------------------- ----------------------
| Managed object | | Native proxy |
| | | Ref count: 1 |
| ---------------- | | ------------------ |
| | Weak reference |=| = = = = = = = >| | Strong reference | |
| | to proxy | |<===============|=| to object | |
| ---------------- | | ------------------ |
-------------------- ----------------------
A következő ábrán a natív objektum és a felügyelt proxy állapota látható a hívás ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags)után. Az "identitás" fogalma a IUnknown szabályait követi.
------------------ ------------------
| Native object |< = = = = = =| |
| Ref count: +1 | | Mapping from |
------------------ | native identity |
------------------------ | to managed proxy |
| Managed proxy |< = = =| |
| Created by ComWrappers | ------------------
| implementer. |
| Optional AddRef() on |
| native object. |
------------------------
Figyelje meg, hogy a futási perspektíva szempontjából csak gyenge hivatkozások léteznek. A +1 natív objektum referenciaszámáról feltételezik, hogy azt a felügyelt proxy létrehozója, valamint a ComWrappers implementátor végzi el, hogy biztosítsa és fenntartsa a natív objektum és a felügyelt proxy közötti társított élettartamot. A felügyelt proxyban szerepel egy opcionális erős hivatkozás (azaz AddRef()) is, amely a korábban említett forgatókönyv (3) támogatására szolgál. Lásd a(z) CreateObjectFlags.TrackerObject. Ezzel az opcionális erős hivatkozással a referenciaszám a következő lenne +2: .
Konstruktorok
| Name | Description |
|---|---|
| ComWrappers() |
Példánykonstruktor. |
Metódusok
| Name | Description |
|---|---|
| ComputeVtables(Object, CreateComInterfaceFlags, Int32) |
Kiszámítja a kívánt virtuális táblát |
| CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags) |
Létrehoz egy felügyelt objektumot a mutatott objektumhoz a megadott értékek |
| CreateObject(IntPtr, CreateObjectFlags) |
Létrehoz egy felügyelt objektumot annak az objektumnak, amely |
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetIUnknownImpl(IntPtr, IntPtr, IntPtr) |
Lekéri a futtatókörnyezet által biztosított IUnknown-implementációt. |
| GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) |
Com-reprezentációt hoz létre a megadott objektumról, amely átadható egy nem felügyelt környezetnek. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Lekéri a jelenleg regisztrált felügyelt objektumot, vagy létrehoz egy új felügyelt objektumot, és regisztrálja azt. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) |
Lekéri a jelenleg regisztrált felügyelt objektumot, vagy létrehoz egy új felügyelt objektumot, és regisztrálja azt. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr) |
Szerezze be a jelenleg regisztrált felügyelt objektumot, vagy használja a megadott felügyelt objektumot, és regisztrálja. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Lekéri a jelenleg regisztrált felügyelt objektumot, vagy a megadott felügyelt objektumot használja, és regisztrálja. |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| RegisterForMarshalling(ComWrappers) |
Regisztrál egy példányt ComWrappers , amelyet globális példányként szeretne használni a futtatókörnyezetben történő rendezéshez. |
| RegisterForTrackerSupport(ComWrappers) |
Regisztrál egy példányt ComWrappers , amelyet globális példányként szeretne használni a referenciakövető támogatásához. |
| ReleaseObjects(IEnumerable) |
A normál objektum- vagy COM-felület élettartamán kívül eső objektumok gyűjteményét bocsátja ki. |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
| TryGetComInstance(Object, IntPtr) |
Meghatározza, hogy a megadott felügyelt objektum egy ComWrapperslétrehozott felügyelt burkoló-e, és ha igen, akkor a burkolt nem felügyelt mutatót adja vissza. |
| TryGetObject(IntPtr, Object) |
Meghatározza, hogy a megadott COM-objektum egy ComWrappers-created, nem felügyelt burkoló-e, és ha igen, akkor a burkolt felügyelt objektumot adja vissza. |