ComWrappers Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Ważne
Ten interfejs API nie jest zgodny ze specyfikacją CLS.
Klasa do zarządzania otoczkami typów IUnknown COM.
public ref class ComWrappers abstract
[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")]
public abstract class ComWrappers
[<System.CLSCompliant(false)>]
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
type ComWrappers = class
[<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
Public MustInherit Class ComWrappers
- Dziedziczenie
-
ComWrappers
- Atrybuty
Uwagi
Interfejs ComWrappers API zapewnia obsługę IUnknown usługi ABI niezależnie od wbudowanej obsługi współdziałania modelu COM. Interfejs ComWrappers API uwidacznia minimalną obsługę środowiska uruchomieniowego, która jest wymagana dla deweloperów, aby zastąpić wbudowaną wersję w wydajny sposób.
Tradycyjnie w środowisku uruchomieniowym natywny serwer proxy do obiektu zarządzanego jest nazywany otoką wywoływaną modelu COM (CCW), a zarządzany serwer proxy do obiektu natywnego jest nazywany otoką wywołaną środowiska uruchomieniowego (RCW). Jednak w przypadku użycia w tym miejscu te terminy nie powinny być mylone z wbudowanymi funkcjami o tej samej nazwie (czyli CCW i RCW). W przeciwieństwie do wbudowanych funkcji większość odpowiedzialności za dokładne zarządzanie okresem istnienia, wysyłanie metod i marshalling argumentów i wartości zwracanych pozostaje do implementatora ComWrappers .
"Minimalna obsługa" jest definiowana przez następujące funkcje:
Wydajne mapowanie między obiektem zarządzanym a natywnym serwerem proxy (na przykład CCW).
Wydajne mapowanie między natywnym
IUnknowni zarządzanym serwerem proxy (na przykład RCW).Integracja z modułem odśmiecaniem pamięci za pośrednictwem kontraktu interfejsu IReferenceTrackerHost .
Korzystanie z tego scenariusza jest zaawansowane.
Stan serwera proxy
Ta sekcja zawiera opisy i ilustracje stanu natywnego i zarządzanego serwera proxy po ich utworzeniu.
Na poniższych ilustracjach silne odwołanie jest przedstawiane jako linia ciągła (===), a słabe odwołanie jest przedstawiane jako linia przerywana (= = =). Terminy "silne odwołanie" i "słabe odwołanie" powinny być interpretowane jako "przedłużające okres istnienia" i "nie przedłużające okresu istnienia", w przeciwieństwie do sugerowania konkretnej implementacji.
Poniższa ilustracja przedstawia stan zarządzanego obiektu i natywnego serwera proxy po wywołaniu metody ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags).
-------------------- ----------------------
| Managed object | | Native proxy |
| | | Ref count: 1 |
| ---------------- | | ------------------ |
| | Weak reference |=| = = = = = = = >| | Strong reference | |
| | to proxy | |<===============|=| to object | |
| ---------------- | | ------------------ |
-------------------- ----------------------
Na następnej ilustracji przedstawiono stan obiektu natywnego i zarządzanego serwera proxy po wywołaniu metody ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags). Koncepcja "tożsamości" jest zgodna z regułami dla elementu IUnknown.
------------------ ------------------
| Native object |< = = = = = =| |
| Ref count: +1 | | Mapping from |
------------------ | native identity |
------------------------ | to managed proxy |
| Managed proxy |< = = =| |
| Created by ComWrappers | ------------------
| implementer. |
| Optional AddRef() on |
| native object. |
------------------------
Zwróć uwagę, że istnieją tylko słabe odwołania z perspektywy środowiska uruchomieniowego. Zakłada +1 się, że liczba odwołań do obiektu natywnego jest wykonywana przez twórcę zarządzanego serwera proxy (czyli implementatora ComWrappers ), aby zapewnić skojarzony okres istnienia między obiektem natywnym a zarządzanym serwerem proxy. Istnieje opcjonalne silne odwołanie (tj AddRef(). ) wymienione w zarządzanym serwerze proxy, które jest używane do obsługi scenariusza (3) wymienionego wcześniej. Zobacz: CreateObjectFlags.TrackerObject. W przypadku tego opcjonalnego silnego odwołania liczba odwołań to +2.
Konstruktory
| ComWrappers() |
Konstruktor wystąpienia. |
Metody
| ComputeVtables(Object, CreateComInterfaceFlags, Int32) |
Oblicza żądaną tabelę wirtualną dla |
| CreateObject(IntPtr, CreateObjectFlags) |
Tworzy obiekt zarządzany dla obiektu, który |
| Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
| GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
| GetIUnknownImpl(IntPtr, IntPtr, IntPtr) |
Pobiera implementację IUnknown zapewnianą przez środowisko uruchomieniowe. |
| GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) |
Tworzy reprezentację COM dostarczonego obiektu, który można przekazać do środowiska niezarządzanego. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) |
Pobiera obecnie zarejestrowany obiekt zarządzany lub tworzy nowy obiekt zarządzany i rejestruje go. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Pobiera obecnie zarejestrowany obiekt zarządzany lub używa dostarczonego obiektu zarządzanego i rejestruje go. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr) |
Pobierz aktualnie zarejestrowany obiekt zarządzany lub użyj dostarczonego obiektu zarządzanego i zarejestruje go. |
| GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
| RegisterForMarshalling(ComWrappers) |
ComWrappers Rejestruje wystąpienie, które ma być używane jako wystąpienie globalne do marshallingu w czasie wykonywania. |
| RegisterForTrackerSupport(ComWrappers) |
ComWrappers Rejestruje wystąpienie, które ma być używane jako wystąpienie globalne na potrzeby obsługi monitora referencyjnego. |
| ReleaseObjects(IEnumerable) |
Zwalnia kolekcję obiektów spoza normalnego okresu istnienia obiektu lub interfejsu COM. |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |