ComWrappers Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Penting
API ini bukan kompatibel CLS.
Kelas untuk mengelola pembungkus jenis 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
- Warisan
-
ComWrappers
- Turunan
- Atribut
Keterangan
ComWrappers API menyediakan dukungan untuk IUnknown API yang independen dari dukungan interoperabilitas COM bawaan.
ComWrappers API memaparkan dukungan runtime minimal yang diperlukan pengembang untuk mengganti versi bawaan dengan cara yang efisien.
Secara tradisional dalam runtime, proksi asli ke objek terkelola disebut COM Callable Wrapper (CCW), dan proksi terkelola ke objek asli disebut Runtime Callable Wrapper (RCW). Namun, ketika digunakan di sini, istilah-istilah tersebut tidak boleh dikacaukan dengan fitur bawaan dengan nama yang sama (yaitu , CCW dan RCW). Tidak seperti fitur bawaan, sebagian besar tanggung jawab untuk pengelolaan masa pakai yang tepat, pendistribusian metode, dan pengelolaan argumen serta nilai pengembalian diserahkan kepada pelaksana ComWrappers.
"Dukungan minimal" didefinisikan oleh fitur-fitur berikut:
- Pemetaan efisien antara objek terkelola dan proksi asli (misalnya, CCW).
- Pemetaan efisien antara proksi asli
IUnknowndan terkelolanya (misalnya, RCW). - Integrasi dengan pengumpul sampah melalui kontrak antarmuka IReferenceTrackerHost .
Memanfaatkan ini adalah skenario lanjutan.
Keadaan proksi
Bagian ini memberikan deskripsi dan ilustrasi status proksi asli dan terkelola setelah pembuatannya masing-masing.
Dalam ilustrasi berikut, referensi yang kuat digambarkan sebagai garis solid (===) dan referensi lemah digambarkan sebagai garis putus-putus (= = =). Istilah "referensi yang kuat" dan "referensi lemah" harus ditafsirkan sebagai "memperpanjang masa pakai" dan "tidak memperpanjang masa pakai", dibandingkan dengan menyiratkan implementasi tertentu.
Ilustrasi berikut menunjukkan status objek terkelola dan proksi asli setelah panggilan ke ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags).
-------------------- ----------------------
| Managed object | | Native proxy |
| | | Ref count: 1 |
| ---------------- | | ------------------ |
| | Weak reference |=| = = = = = = = >| | Strong reference | |
| | to proxy | |<===============|=| to object | |
| ---------------- | | ------------------ |
-------------------- ----------------------
Ilustrasi berikutnya menunjukkan status objek asli dan proksi terkelola setelah panggilan ke ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags). Konsep "identitas" mengikuti aturan untuk IUnknown.
------------------ ------------------
| Native object |< = = = = = =| |
| Ref count: +1 | | Mapping from |
------------------ | native identity |
------------------------ | to managed proxy |
| Managed proxy |< = = =| |
| Created by ComWrappers | ------------------
| implementer. |
| Optional AddRef() on |
| native object. |
------------------------
Perhatikan bahwa hanya referensi lemah yang ada dari perspektif runtime. Jumlah +1 referensi pada objek asli diasumsikan dilakukan oleh pembuat proksi terkelola (yaitu, ComWrappers pelaksana) untuk memastikan masa pakai terkait antara objek asli dan proksi terkelolanya. Ada referensi kuat opsional (yaitu, AddRef()) yang disebutkan dalam proksi terkelola, yang digunakan untuk mendukung skenario (3) yang disebutkan sebelumnya. Lihat CreateObjectFlags.TrackerObject. Dengan referensi kuat opsional ini, jumlah referensinya adalah +2.
Konstruktor
| Nama | Deskripsi |
|---|---|
| ComWrappers() |
Konstruktor instans. |
Metode
| Nama | Deskripsi |
|---|---|
| ComputeVtables(Object, CreateComInterfaceFlags, Int32) |
Menghitung Vtable yang diinginkan untuk |
| CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags) |
Membuat objek terkelola untuk objek yang ditujukkan dengan |
| CreateObject(IntPtr, CreateObjectFlags) |
Membuat objek terkelola untuk objek yang |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetIUnknownImpl(IntPtr, IntPtr, IntPtr) |
Mendapatkan implementasi IUnknown yang disediakan runtime. |
| GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) |
Membuat representasi COM dari objek yang disediakan yang dapat diteruskan ke lingkungan yang tidak dikelola. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Mendapatkan objek terkelola yang saat ini terdaftar atau membuat objek terkelola baru dan mendaftarkannya. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) |
Mendapatkan objek terkelola yang saat ini terdaftar atau membuat objek terkelola baru dan mendaftarkannya. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr) |
Dapatkan objek terkelola yang saat ini terdaftar atau gunakan objek terkelola yang disediakan dan daftarkan. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Mendapatkan objek terkelola yang saat ini terdaftar atau menggunakan objek terkelola yang disediakan dan mendaftarkannya. |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| RegisterForMarshalling(ComWrappers) |
Mendaftarkan instans yang ComWrappers akan digunakan sebagai instans global untuk marshalling dalam runtime. |
| RegisterForTrackerSupport(ComWrappers) |
Mendaftarkan instans yang ComWrappers akan digunakan sebagai instans global untuk dukungan pelacak referensi. |
| ReleaseObjects(IEnumerable) |
Merilis kumpulan objek di luar objek normal atau masa pakai antarmuka COM. |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
| TryGetComInstance(Object, IntPtr) |
Menentukan apakah objek terkelola yang ditentukan adalah ComWrapperspembungkus terkelola yang dibuat dan jika demikian, mengembalikan pointer yang tidak terkelola yang dibungkus. |
| TryGetObject(IntPtr, Object) |
Menentukan apakah objek COM yang ditentukan adalah ComWrapperspembungkus tidak terkelola yang dibuat dan jika demikian, mengembalikan objek terkelola yang dibungkus. |