ComWrappers Sınıf

Tanım

Ö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:

  1. Yönetilen nesne ile yerel ara sunucu (örneğin, CCW) arasında verimli eşleme.
  2. Yerel IUnknown ve yönetilen ara sunucusu (örneğin RCW) arasında verimli eşleme.
  3. 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 objistenen Vtable değerini hesaplar ve değerlerini dikkate alır flags.

CreateObject(IntPtr, CreateObjectFlags, Object, CreatedWrapperFlags)

değerlerine externalComObjectsaygı göstererek flags işaret edilen nesne için yönetilen bir nesne oluşturur.

CreateObject(IntPtr, CreateObjectFlags)

öğesine işaret eden externalComObject nesne için değerlerine flagsuygun bir yönetilen nesne oluşturur.

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.

Şunlara uygulanır