ComWrappers Osztály

Definíció

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:

  1. Felügyelt objektum és natív proxy (például CCW) közötti hatékony leképezés.
  2. Hatékony leképezés a natív IUnknown és a felügyelt proxy között (például RCW).
  3. 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 obja következő értékek flagsfigyelembevételével: .

CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags)

Létrehoz egy felügyelt objektumot a mutatott objektumhoz a megadott értékek externalComObjecttiszteletben tartásávalflags.

CreateObject(IntPtr, CreateObjectFlags)

Létrehoz egy felügyelt objektumot annak az objektumnak, amely externalComObject a gombra mutat, tiszteletben tartva a következő értékeit flags: .

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.

A következőre érvényes: