Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Klasik COM değil, yalnızca Windows Çalışma Zamanı tarafından kullanılabilen zayıf bir başvuruyu temsil eder. Zayıf başvuru, erişilebilir veya erişilebilir olmayabilecek bir nesneyi temsil eder.
Sözdizimi
class WeakRef : public ComPtr<IWeakReference>;
Üyeler
Ortak oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
WeakRef::WeakRef Oluşturucu |
WeakRef sınıfının yeni bir örneğini başlatır. |
WeakRef::~WeakRef Yıkıcı |
Sınıfın geçerli örneğini WeakRef başlatır. |
Genel yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
WeakRef::As |
Belirtilen işaretçi parametresini belirtilen ComPtr arabirimi temsil etmek için ayarlar. |
WeakRef::AsIID |
Belirtilen ComPtr işaretçi parametresini belirtilen arabirim kimliğini temsil etmek için ayarlar. |
WeakRef::CopyTo |
Varsa, belirtilen işaretçi değişkenine bir arabirim işaretçisi atar. |
Genel işleçler
| Veri Akışı Adı | Açıklama |
|---|---|
WeakRef::operator& |
Geçerli ComPtrRef nesneyi temsil eden bir WeakRef nesne döndürür. |
Açıklamalar
Nesne WeakRef , bir nesneyle ilişkili güçlü bir başvuru tutar ve geçerli veya geçersiz olabilir.
As() Güçlü bir başvuru elde etmek için veya AsIID() yöntemini çağırın. Güçlü başvuru geçerli olduğunda, ilişkili nesneye erişebilir. Güçlü başvuru geçersiz olduğunda ()nullptr ilişkili nesneye erişilemez.
Nesne WeakRef genellikle varlığı dış iş parçacığı veya uygulama tarafından denetlenen bir nesneyi temsil etmek için kullanılır. Örneğin, bir WeakRef dosya nesnesine yapılan başvurudan bir nesne oluşturun. Dosya açıkken, güçlü başvuru geçerlidir. Ancak dosya kapatılırsa, güçlü başvuru geçersiz olur.
Windows SDK'sında As, AsIIDve CopyTo yöntemlerinde bir davranış değişikliği vardır. Daha önce, bu yöntemlerden herhangi birini çağırdıktan sonra, aşağıdaki kodda WeakRef olduğu gibi güçlü bir başvurunun başarıyla alınıp alınmadığını belirlemek için nullptr öğesini denetleyebiliyordu:
WeakRef wr;
strongComptrRef.AsWeak(&wr);
// Now suppose that the object strongComPtrRef points to no longer exists
// and the following code tries to get a strong ref from the weak ref:
ComPtr<ISomeInterface> strongRef;
HRESULT hr = wr.As(&strongRef);
// This check won't work with the Windows 10 SDK version of the library.
// Check the input pointer instead.
if(wr == nullptr)
{
wprintf(L"Couldn't get strong ref!");
}
Yukarıdaki kod, Windows 10 SDK(veya üzeri) kullanılırken çalışmaz. Bunun yerine, için nullptrgeçirilen işaretçiyi denetleyin.
if (strongRef == nullptr)
{
wprintf(L"Couldn't get strong ref!");
}
Devralma hiyerarşisi
Gereksinimler
Üstbilgi:client.h
Ad alanı: Microsoft::WRL
WeakRef::WeakRef Oluşturucu
WeakRef sınıfının yeni bir örneğini başlatır.
WeakRef();
WeakRef(
decltype(__nullptr)
);
WeakRef(
_In_opt_ IWeakReference* ptr
);
WeakRef(
const ComPtr<IWeakReference>& ptr
);
WeakRef(
const WeakRef& ptr
);
WeakRef(
_Inout_ WeakRef&& ptr
);
Parametreler
ptr
Geçerli WeakRef nesneyi başlatan mevcut bir nesneye yönelik işaretçi, başvuru veya rvalue-başvurusu.
Açıklamalar
İlk oluşturucu boş WeakRef bir nesne başlatır. İkinci oluşturucu, arabirime yönelik bir işaretçiden WeakRef bir IWeakReference nesne başlatır. Üçüncü oluşturucu, nesne WeakRef başvurusundan bir ComPtr<IWeakReference> nesne başlatır. Dördüncü ve beşinci oluşturucular başka WeakRef bir nesneden bir WeakRef nesne başlatır.
WeakRef::~WeakRef Yıkıcı
Sınıfın geçerli örneğini WeakRef başlatır.
~WeakRef();
WeakRef::As
Belirtilen işaretçi parametresini belirtilen ComPtr arabirimi temsil etmek için ayarlar.
template<typename U>
HRESULT As(
_Out_ ComPtr<U>* ptr
);
template<typename U>
HRESULT As(
_Out_ Details::ComPtrRef<ComPtr<U>> ptr
);
Parametreler
U
Arabirim kimliği.
ptr
Bu işlem tamamlandığında, U parametresini temsil eden bir nesne.
Dönüş değeri
S_OKbu işlem başarılı olursa; aksi takdirde, işlemin başarısız olmasının nedenini belirten veptrolaraknullptrayarlanmış bir HRESULT.S_OKbu işlem başarılı olursa, ancak geçerliWeakRefnesne zaten serbest bırakılmışsa. Parametresiptrolaraknullptrayarlanır.S_OKbu işlem başarılı olursa, ancak geçerliWeakRefnesne parametresindenUtüretilmiş değilse. Parametresiptrolaraknullptrayarlanır.
Açıklamalar
parametresi UIWeakReferenceise veya parametresinden IInspectabletüretilmemişse bir hata oluşur.
İlk şablon, kodunuzda kullanmanız gereken formdur. İkinci şablon bir iç, yardımcı özelleştirmedir; tür kesinti anahtar sözcüğü gibi auto C++ dil özelliklerini destekler.
Windows 10 SDK'sından başlayarak, bu yöntem zayıf başvuru alınamadıysa örneği WeakRef olarak ayarlamaznullptr, bu nedenle için WeakRefdenetleyen nullptr kodun hata denetiminden kaçınmanız gerekir. Bunun yerine ptr için nullptrişaretleyin.
WeakRef::AsIID
Belirtilen ComPtr işaretçi parametresini belirtilen arabirim kimliğini temsil etmek için ayarlar.
HRESULT AsIID(
REFIID riid,
_Out_ ComPtr<IInspectable>* ptr
);
Parametreler
riid
Arabirim kimliği.
ptr
Bu işlem tamamlandığında parametresini riidtemsil eden bir nesne.
Dönüş değeri
S_OKbu işlem başarılı olursa; aksi takdirde, işlemin başarısız olmasının nedenini belirten veptrolaraknullptrayarlanmış bir HRESULT.S_OKbu işlem başarılı olursa, ancak geçerliWeakRefnesne zaten serbest bırakılmışsa. Parametresiptrolaraknullptrayarlanır.S_OKbu işlem başarılı olursa, ancak geçerliWeakRefnesne parametresindenriidtüretilmiş değilse. Parametresiptrolaraknullptrayarlanır. Daha fazla bilgi için bkz. Açıklamalar.
Açıklamalar
parametresinden riidIInspectabletüretilmemişse bir hata oluşur. Bu hata, dönüş değerinin yerini alır.
İlk şablon, kodunuzda kullanmanız gereken formdur. İkinci şablon (burada gösterilmez, ancak üst bilgi dosyasında bildirilir), tür kesinti anahtar sözcüğü gibi auto C++ dil özelliklerini destekleyen bir iç yardımcı özelleştirmedir.
Windows 10 SDK'sından başlayarak, bu yöntem zayıf başvuru alınamadıysa örneği WeakRef olarak ayarlamaznullptr, bu nedenle için WeakRefdenetleyen nullptr kodun hata denetiminden kaçınmanız gerekir. Bunun yerine öğesini denetleyin ptrnullptr.
WeakRef::CopyTo
Varsa, belirtilen işaretçi değişkenine bir arabirim işaretçisi atar.
HRESULT CopyTo(
REFIID riid,
_Deref_out_ IInspectable** ptr
);
template<typename U>
HRESULT CopyTo(
_Deref_out_ U** ptr
);
HRESULT CopyTo(
_Deref_out_ IWeakReference** ptr
);
Parametreler
U
Arabirim işaretçisi IInspectable . kaynağından Utüretilmemişse IInspectable bir hata oluşur.
riid
Arabirim kimliği. kaynağından riidtüretilmemişse IWeakReference bir hata oluşur.
ptr
veya IInspectableiçin IWeakReference iki kat dolaylı işaretçi.
Dönüş değeri
S_OK başarılı olursa; aksi takdirde, hatayı açıklayan bir HRESULT. Daha fazla bilgi için bkz . Açıklamalar.
Açıklamalar
dönüş değeri S_OK , bu işlemin başarılı olduğu anlamına gelir, ancak zayıf başvurunun güçlü bir başvuruya çözümlenip çözümlenmediğini göstermez. Döndürülürse S_OK , bu parametrenin ptr güçlü bir başvuru olup olmadığını test edin; diğer bir ifadeyle parametre ptr ile nullptreşit değildir.
Windows 10 SDK'sından başlayarak, bu yöntem zayıf başvuru alınamazsa örneği olarak WeakRef ayarlamaznullptr, bu nedenle için denetleyen WeakRefnullptrkod denetiminden kaçınmanız gerekir. Bunun yerine öğesini denetleyin ptrnullptr.
WeakRef::operator&
Geçerli ComPtrRef nesneyi temsil eden bir WeakRef nesne döndürür.
Details::ComPtrRef<WeakRef> operator&() throw()
Dönüş değeri
ComPtrRef Geçerli WeakRef nesneyi temsil eden bir nesne.
Açıklamalar
WeakRef::operator& kodunuzda kullanılması amaçlanmamış bir iç yardımcı işleçtir.