ComWrappers Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Önemli
Bu API, CLS uyumlu değildir.
COM IUnknown türlerinin sarmalayıcılarını yönetme sınıfı.
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
- Devralma
-
ComWrappers
- Türetilmiş
- Öznitelikler
Açıklamalar
API, yerleşik COM birlikte çalışabilirlik desteğinden bağımsız olarak ComWrappers API'sine IUnknown destek sağlar. API, ComWrappers geliştiricilerin yerleşik sürümü verimli bir şekilde değiştirmesi için gereken en düşük çalışma zamanı desteğini kullanıma sunar.
Geleneksel olarak çalışma süresinde, yerel bir nesne için yönetilen bir ara sunucuya COM Çağrılabilir Sarmalayıcı (CCW) adı verilir ve yönetilen bir nesne için yerel ara sunucuya Çalışma Süresi Çağrılabilir Sarmalayıcı (RCW) adı verilir. Ancak, burada kullanıldığında, bu terimler aynı adı taşıyan yerleşik özelliklerle (yani CCW ve RCW) karıştırılmamalıdır. Yerleşik özelliklerden farklı olarak, doğru yaşam süresi yönetimi, dağıtım yöntemleri ve bağımsız değişkenlerin ve dönüş değerlerinin sıralama sorumluluğunun çoğu uygulayıcıya ComWrappers bırakılır.
"Minimum destek" aşağıdaki özelliklerle tanımlanır:
- Yönetilen nesne ile yerel ara sunucu (örneğin, CCW) arasında verimli eşleme.
- Yerel
IUnknownve yönetilen ara sunucusu (örneğin RCW) arasında verimli eşleme. - IReferenceTrackerHost arabirim sözleşmesi aracılığıyla çöp toplayıcı ile tümleştirme.
Bu, gelişmiş bir senaryonun kullanılmasıdır.
Vekil devlet
Bu bölümde, doğal ve yönetilen proxy durumlarının, her ikisi de oluşturulduktan sonra, açıklamaları ve çizimleri sunulmaktadır.
Aşağıdaki çizimlerde, güçlü bir başvuru düz çizgi (===) ve zayıf başvuru kesikli çizgi (= = =) olarak gösterilmiştir. "Güçlü başvuru" ve "zayıf başvuru" terimleri, belirli bir uygulamayı ima etmek yerine "yaşam süresini uzatan" ve "ömrünü uzatmayan" olarak yorumlanmalıdır.
Aşağıdaki çizimde, çağrısından ComWrappers.GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags)sonra yönetilen nesnenin ve yerel proxy'nin durumu gösterilmektedir.
-------------------- ----------------------
| Managed object | | Native proxy |
| | | Ref count: 1 |
| ---------------- | | ------------------ |
| | Weak reference |=| = = = = = = = >| | Strong reference | |
| | to proxy | |<===============|=| to object | |
| ---------------- | | ------------------ |
-------------------- ----------------------
Sonraki çizimde, ComWrappers.GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) çağrısından sonra yerel nesnenin ve yönetilen vekil sunucunun durumu gösterilmektedir. "Kimlik" kavramı için IUnknownkuralları izler.
------------------ ------------------
| Native object |< = = = = = =| |
| Ref count: +1 | | Mapping from |
------------------ | native identity |
------------------------ | to managed proxy |
| Managed proxy |< = = =| |
| Created by ComWrappers | ------------------
| implementer. |
| Optional AddRef() on |
| native object. |
------------------------
Çalışma zamanı perspektifinden yalnızca zayıf referanslar olduğunu fark edin.
+1 Yerel nesnedeki başvuru sayısının, yerel nesne ile yönetilen proxy arasındaki bağlı yaşam süresini sağlamak için proxy oluşturucusu (yani bu durumda ComWrappers uygulayıcı) tarafından gerçekleştirileceği varsayılır. Yönetilen proxy'de daha önce belirtilen senaryoyu (3) desteklemek için kullanılan isteğe bağlı bir güçlü referans (yani AddRef()) bulunmaktadır. Bkz. CreateObjectFlags.TrackerObject. Bu isteğe bağlı güçlü referansla, referans sayısı +2 olacaktır.
Oluşturucular
| Name | Description |
|---|---|
| ComWrappers() |
Örnek oluşturucu. |
Yöntemler
| Name | Description |
|---|---|
| ComputeVtables(Object, CreateComInterfaceFlags, Int32) |
için |
| CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags) |
değerlerine |
| CreateObject(IntPtr, CreateObjectFlags) |
öğesine işaret eden |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetIUnknownImpl(IntPtr, IntPtr, IntPtr) |
Çalışma zamanı tarafından sağlanan IUnknown uygulamasını alır. |
| GetOrCreateComInterfaceForObject(Object, CreateComInterfaceFlags) |
Sağlanan nesnenin, yönetilmeyen bir ortama geçirilebilen com gösterimini oluşturur. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Şu anda kayıtlı olan yönetilen nesneyi alır veya yeni bir yönetilen nesne oluşturur ve kaydeder. |
| GetOrCreateObjectForComInstance(IntPtr, CreateObjectFlags) |
Şu anda kayıtlı olan yönetilen nesneyi alır veya yeni bir yönetilen nesne oluşturur ve kaydeder. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object, IntPtr) |
Şu anda kayıtlı olan yönetilen nesneyi alın veya sağlanan yönetilen nesneyi kullanır ve kaydeder. |
| GetOrRegisterObjectForComInstance(IntPtr, CreateObjectFlags, Object) |
Şu anda kayıtlı olan yönetilen nesneyi alır veya sağlanan yönetilen nesneyi kullanır ve kaydeder. |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| RegisterForMarshalling(ComWrappers) |
Çalışma zamanında sıralama için genel örnek olarak kullanılacak bir ComWrappers örneği kaydeder. |
| RegisterForTrackerSupport(ComWrappers) |
Başvuru izleyicisi desteği için genel örnek olarak kullanılacak bir ComWrappers örneği kaydeder. |
| ReleaseObjects(IEnumerable) |
Normal nesne veya COM arabirimi ömrü dışında bir nesne koleksiyonu serbest bırakır. |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
| TryGetComInstance(Object, IntPtr) |
Belirtilen yönetilen nesnenin - oluşturulmuş bir ComWrappersyönetilen sarmalayıcı olup olmadığını belirler ve öyleyse, sarmalanmış yönetilmeyen işaretçiyi döndürür. |
| TryGetObject(IntPtr, Object) |
Belirtilen COM nesnesinin -created yönetilmeyen sarmalayıcı ComWrappersolup olmadığını belirler ve bu durumda sarmalanmış yönetilen nesneyi döndürür. |