ComPtr Sınıfı
Şablon parametresi tarafından belirtilen arabirimi temsil eden bir akıllı işaretçi türü oluşturur. ComPtr
temel arabirim işaretçisi için otomatik olarak bir başvuru sayısı tutar ve başvuru sayısı sıfıra çıktığında arabirimi serbest bırakır.
Sözdizimi
template <typename T>
class ComPtr;
template<class U>
friend class ComPtr;
Parametreler
T
öğesini temsil eden ComPtr
arabirim.
U
Akımın ComPtr
arkadaş olduğu bir sınıf. (Bu parametreyi kullanan şablon korumalıdır.)
Açıklamalar
ComPtr<>
, temel alınan arabirim işaretçisini temsil eden bir tür bildirir. Bir değişken bildirmek için kullanın ComPtr<>
ve ardından bir arabirim üyesi işlevine erişmek için ok üye erişim işlecini (->
) kullanın.
Akıllı işaretçiler hakkında daha fazla bilgi için COM Kodlama Uygulamaları makalesinin "COM Akıllı İşaretçileri" alt bölümüne bakın.
Üyeler
Genel Tür Tanımları
Veri Akışı Adı | Açıklama |
---|---|
InterfaceType |
Şablon parametresi tarafından T belirtilen tür için bir eş anlamlı. |
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
ComPtr::ComPtr |
ComPtr sınıfının yeni bir örneğini başlatır. Aşırı yüklemeler varsayılan, kopyalama, taşıma ve dönüştürme oluşturucuları sağlar. |
ComPtr::~ComPtr |
örneğini ComPtr başlatır. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
ComPtr::As |
Belirtilen şablon parametresi tarafından tanımlanan arabirimi temsil eden bir ComPtr nesne döndürür. |
ComPtr::AsIID |
Belirtilen arabirim kimliği tarafından tanımlanan arabirimi temsil eden bir ComPtr nesne döndürür. |
ComPtr::AsWeak |
Geçerli nesneye zayıf bir başvuru alır. |
ComPtr::Attach |
Bunu ComPtr geçerli şablon türü parametresi tarafından belirtilen arabirim türüyle ilişkilendirir. |
ComPtr::CopyTo |
Bununla ComPtr ilişkili geçerli veya belirtilen arabirimi belirtilen çıkış işaretçisine kopyalar. |
ComPtr::Detach |
Bunu ComPtr temsil ettiği arabirimden kaldırır. |
ComPtr::Get |
Bu ComPtr ile ilişkilendirilmiş arabirimin işaretçisini alır. |
ComPtr::GetAddressOf |
Bu tarafından ComPtr temsil edilen arabirimin ptr_ işaretçisini içeren veri üyesinin adresini alır. |
ComPtr::ReleaseAndGetAddressOf |
Bununla ComPtr ilişkili arabirimi serbest bırakır ve ardından, yayımlanan arabirimin ptr_ işaretçisini içeren veri üyesinin adresini alır. |
ComPtr::Reset |
Bununla ComPtr ilişkili arabirimi serbest bırakır ve yeni başvuru sayısını döndürür. |
ComPtr::Swap |
Geçerli ComPtr tarafından yönetilen arabirimi belirtilen ComPtr tarafından yönetilen arabirimle değiştirir. |
Korumalı Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
ComPtr::InternalAddRef |
Bu ComPtr ile ilişkili arabirimin başvuru sayısını artırır. |
ComPtr::InternalRelease |
bu ComPtr ile ilişkilendirilmiş arabirimde bir COM Yayın işlemi gerçekleştirir. |
Ortak İşleçler
Veri Akışı Adı | Açıklama |
---|---|
ComPtr::operator& |
Geçerli ComPtr adresini alır. |
ComPtr::operator-> |
Geçerli şablon parametresi tarafından belirtilen türe yönelik bir işaretçi alır. |
ComPtr::operator= |
Geçerli ComPtr öğesine bir değer atar. |
ComPtr::operator== |
İki ComPtr nesnenin eşit olup olmadığını gösterir. |
ComPtr::operator!= |
İki ComPtr nesnenin eşit olup olmadığını gösterir. |
ComPtr::operator Microsoft::WRL::Details::BoolType |
bir ComPtr arabiriminin nesne ömrünü yönetip yönetmediğini gösterir. |
Korumalı Veri Üyeleri
Veri Akışı Adı | Açıklama |
---|---|
ComPtr::ptr_ |
ile ilişkilendirilmiş ve tarafından ComPtr yönetilen arabirime ilişkin bir işaretçi içerir. |
Devralma Hiyerarşisi
ComPtr
Gereksinimler
Üstbilgi: client.h
Ad alanı: Microsoft::WRL
ComPtr::~ComPtr
örneğini ComPtr
başlatır.
WRL_NOTHROW ~ComPtr();
ComPtr::As
Belirtilen şablon parametresi tarafından tanımlanan arabirimi temsil eden bir ComPtr
nesne döndürür.
template<typename U>
HRESULT As(
_Out_ ComPtr<U>* p
) const;
template<typename U>
HRESULT As(
_Out_ Details::ComPtrRef<ComPtr<U>> p
) const;
Parametreler
U
parametresiyle p
temsil edilecek arabirim.
p
ComPtr
parametresi U
tarafından belirtilen arabirimi temsil eden nesne. Parametre p
geçerli ComPtr
nesneye başvurmamalıdır.
Açıklamalar
İlk şablon, kodunuzda kullanmanız gereken formdur. İkinci şablon iç, yardımcı özelleştirmedir. Tür kesinti anahtar sözcüğü gibi auto
C++ dil özelliklerini destekler.
Dönüş Değeri
S_OK
başarılı olursa; aksi takdirde, hatayı gösteren bir HRESULT
.
ComPtr::AsIID
Belirtilen arabirim kimliği tarafından tanımlanan arabirimi temsil eden bir ComPtr
nesne döndürür.
WRL_NOTHROW HRESULT AsIID(
REFIID riid,
_Out_ ComPtr<IUnknown>* p
) const;
Parametreler
riid
Arabirim kimliği.
p
Nesnenin kimliği eşit riid
olan bir arabirimi varsa, parametresi tarafından riid
belirtilen arabirime yönelik iki kez dolaylı bir işaretçi. Aksi takdirde, işaretçisini kullanın IUnknown
.
Dönüş Değeri
S_OK
başarılı olursa; aksi takdirde, hatayı gösteren bir HRESULT
.
ComPtr::AsWeak
Geçerli nesneye zayıf bir başvuru alır.
HRESULT AsWeak(
_Out_ WeakRef* pWeakRef
);
Parametreler
pWeakRef
Bu işlem tamamlandığında, zayıf başvuru nesnesine yönelik bir işaretçi.
Dönüş Değeri
Başarılı olursa S_OK; aksi takdirde, hatayı gösteren bir HRESULT.
ComPtr::Attach
Bunu ComPtr
geçerli şablon türü parametresi tarafından belirtilen arabirim türüyle ilişkilendirir.
void Attach(
_In_opt_ InterfaceType* other
);
Parametreler
other
Arabirim türü.
ComPtr::ComPtr
ComPtr
sınıfının yeni bir örneğini başlatır. Aşırı yüklemeler varsayılan, kopyalama, taşıma ve dönüştürme oluşturucuları sağlar.
WRL_NOTHROW ComPtr();
WRL_NOTHROW ComPtr(
decltype(__nullptr)
);
template<class U>
WRL_NOTHROW ComPtr(
_In_opt_ U *other
);
WRL_NOTHROW ComPtr(
const ComPtr& other
);
template<class U>
WRL_NOTHROW ComPtr(
const ComPtr<U> &other,
typename ENABLE_IF<__is_convertible_to(U*, T*), void *>
);
WRL_NOTHROW ComPtr(
_Inout_ ComPtr &&other
);
template<class U>
WRL_NOTHROW ComPtr(
_Inout_ ComPtr<U>&& other, typename ENABLE_IF<__is_convertible_to(U*, T*), void *>
);
Parametreler
U
other
parametresinin türü.
other
U
türünün bir nesnesi.
Dönüş Değeri
Açıklamalar
İlk oluşturucu, örtük olarak boş bir nesne oluşturan varsayılan oluşturucudur. İkinci oluşturucu, açıkça boş bir nesne oluşturan öğesini belirtir __nullptr
.
Üçüncü oluşturucu, işaretçi tarafından belirtilen nesneden bir nesne oluşturur. ComPtr
Artık, işaret edilen belleğe sahip olur ve buna bir başvuru sayısı tutar.
Dördüncü ve beşinci oluşturucular kopya oluşturuculardır. Beşinci oluşturucu, bir nesneyi geçerli türe dönüştürülebilirse kopyalar.
Altıncı ve yedinci oluşturucular taşıma oluşturucularıdır. Yedinci oluşturucu, geçerli türe dönüştürülebilir bir nesneyi taşır.
ComPtr::CopyTo
Bununla ComPtr
ilişkili geçerli veya belirtilen arabirimi belirtilen işaretçiye kopyalar.
HRESULT CopyTo(
_Deref_out_ InterfaceType** ptr
);
HRESULT CopyTo(
REFIID riid,
_Deref_out_ void** ptr
) const;
template<typename U>
HRESULT CopyTo(
_Deref_out_ U** ptr
) const;
Parametreler
U
Bir tür adı.
ptr
Bu işlem tamamlandığında, istenen arabirime yönelik bir işaretçi.
riid
Arabirim kimliği.
Dönüş Değeri
S_OK
başarılı olursa; aksi takdirde örtük QueryInterface
işlemin neden başarısız olduğunu gösteren birHRESULT
.
Açıklamalar
İlk işlev, bu ComPtr
ile ilişkilendirilmiş arabirime bir işaretçinin kopyasını döndürür. Bu işlev her zaman döndürür S_OK
.
İkinci işlev, parametresi tarafından belirtilen arabirim için bununla ComPtr
ilişkilendirilmiş arabirimde riid
bir QueryInterface
işlem gerçekleştirir.
Üçüncü işlev, parametresinin temel arabirimi için bununla ComPtr
ilişkili arabirimde U
bir QueryInterface
işlem gerçekleştirir.
ComPtr::Detach
Bu ComPtr
nesneyi temsil ettiği arabirimden kaldırır.
T* Detach();
Dönüş Değeri
Bu ComPtr
nesne tarafından temsil edilen arabirim işaretçisi.
ComPtr::Get
Bu ComPtr
ile ilişkilendirilmiş arabirimin işaretçisini alır.
T* Get() const;
Dönüş Değeri
Bu ComPtr
ile ilişkili arabirimin işaretçisi.
ComPtr::GetAddressOf
Bu tarafından ComPtr
temsil edilen arabirimin ptr_
işaretçisini içeren veri üyesinin adresini alır.
T* const* GetAddressOf() const;
T** GetAddressOf();
Dönüş Değeri
Değişkenin adresi.
ComPtr::InternalAddRef
Bu ComPtr
ile ilişkili arabirimin başvuru sayısını artırır.
void InternalAddRef() const;
Açıklamalar
Bu yöntem korunur.
ComPtr::InternalRelease
bu ComPtr
ile ilişkilendirilmiş arabirimde bir COM Yayın işlemi gerçekleştirir.
unsigned long InternalRelease();
Açıklamalar
Bu yöntem korunur.
ComPtr::operator&
Bu ComPtr
nesneyle ilişkili arabirimi serbest bırakır ve nesnenin ComPtr
adresini alır.
Details::ComPtrRef<WeakRef> operator&()
const Details::ComPtrRef<const WeakRef> operator&() const
Dönüş Değeri
Geçerli ComPtr
öğesine zayıf bir başvuru.
Açıklamalar
Bu yöntem, bu yöntemin arabirim işaretçisine bir başvuru yayınlamasından ComPtr::GetAddressOf
farklıdır. Arabirim işaretçisinin adresine ihtiyacınız olduğunda ancak bu arabirimi serbest bırakmak istemediğinizde kullanın ComPtr::GetAddressOf
.
ComPtr::operator->
Geçerli şablon parametresi tarafından belirtilen türe yönelik bir işaretçi alır.
WRL_NOTHROW Microsoft::WRL::Details::RemoveIUnknown<InterfaceType>* operator->() const;
Dönüş Değeri
Geçerli şablon türü adı tarafından belirtilen tür işaretçisi.
Açıklamalar
Bu yardımcı işlev, STDMETHOD makrosunun kullanılmasından kaynaklanan gereksiz ek yükü kaldırır. Bu işlev türleri private
yerine virtual
yaparIUnknown
.
ComPtr::operator=
Geçerli ComPtr
öğesine bir değer atar.
WRL_NOTHROW ComPtr& operator=(
decltype(__nullptr)
);
WRL_NOTHROW ComPtr& operator=(
_In_opt_ T *other
);
template <typename U>
WRL_NOTHROW ComPtr& operator=(
_In_opt_ U *other
);
WRL_NOTHROW ComPtr& operator=(
const ComPtr &other
);
template<class U>
WRL_NOTHROW ComPtr& operator=(
const ComPtr<U>& other
);
WRL_NOTHROW ComPtr& operator=(
_Inout_ ComPtr &&other
);
template<class U>
WRL_NOTHROW ComPtr& operator=(
_Inout_ ComPtr<U>&& other
);
Parametreler
U
Bir sınıf.
other
Bir türe veya başka ComPtr
bir türe işaretçi, başvuru veya rvalue başvurusu.
Dönüş Değeri
Geçerli ComPtr
öğesine bir başvuru.
Açıklamalar
Bu işlecin ilk sürümü geçerli ComPtr
öğesine boş bir değer atar.
İkinci sürümde, atanan arabirim işaretçisi geçerli ComPtr
arabirim işaretçisi ile aynı değilse, ikinci arabirim işaretçisi geçerli ComPtr
öğesine atanır.
Üçüncü sürümde, atanan arabirim işaretçisi geçerli ComPtr
öğesine atanır.
Dördüncü sürümde, atayan değerin arabirim işaretçisi geçerli ComPtr
arabirim işaretçisi ile aynı değilse, ikinci arabirim işaretçisi geçerli ComPtr
öğesine atanır.
Beşinci sürüm bir kopyalama işlecidir; geçerli öğesine ComPtr
bir başvuru atanır ComPtr
.
Altıncı sürüm, taşıma semantiğini kullanan bir kopyalama işlecidir; herhangi bir tür statik yayın ise bir rvalue başvurusu ComPtr
ve ardından geçerli ComPtr
öğesine atanır.
Yedinci sürüm, taşıma semantiğini kullanan bir kopyalama işlecidir; türünde bir ComPtr
U
rvalue başvurusu statik atamadır ve geçerli ComPtr
öğesine atanır.
ComPtr::operator==
İki ComPtr
nesnenin eşit olup olmadığını gösterir.
bool operator==(
const ComPtr<T>& a,
const ComPtr<U>& b
);
bool operator==(
const ComPtr<T>& a,
decltype(__nullptr)
);
bool operator==(
decltype(__nullptr),
const ComPtr<T>& a
);
Parametreler
a
Bir nesneye ComPtr
başvuru.
b
Başka bir ComPtr
nesneye başvuru.
Dönüş Değeri
nesne nesneye eşitse ilk işleç verirtrue
; aksi takdirde , false
.a
b
İkinci ve üçüncü işleçler nesneye eşitse verirtrue
; aksi takdirde, false
.a
nullptr
ComPtr::operator!=
İki ComPtr
nesnenin eşit olup olmadığını gösterir.
bool operator!=(
const ComPtr<T>& a,
const ComPtr<U>& b
);
bool operator!=(
const ComPtr<T>& a,
decltype(__nullptr)
);
bool operator!=(
decltype(__nullptr),
const ComPtr<T>& a
);
Parametreler
a
Bir nesneye ComPtr
başvuru.
b
Başka bir ComPtr
nesneye başvuru.
Dönüş Değeri
nesne nesneye eşit değilse ilk işleç verirtrue
; aksi takdirde , false
.a
b
İkinci ve üçüncü işleçler true
nesne a
ile nullptr
eşit değilse verir; aksi takdirde. false
ComPtr::operator Microsoft::WRL::Details::BoolType
bir ComPtr
arabiriminin nesne ömrünü yönetip yönetmediğini gösterir.
WRL_NOTHROW operator Microsoft::WRL::Details::BoolType() const;
Dönüş Değeri
Bu ile ComPtr
bir arabirim ilişkilendirildiyse, veri üyesinin BoolStruct::Member
adresi; aksi takdirde , nullptr
.
ComPtr::ptr_
ile ilişkilendirilmiş ve tarafından ComPtr
yönetilen arabirime ilişkin bir işaretçi içerir.
InterfaceType *ptr_;
Açıklamalar
ptr_
iç, korumalı bir veri üyesidir.
ComPtr::ReleaseAndGetAddressOf
Bununla ComPtr
ilişkili arabirimi serbest bırakır ve ardından, yayımlanan arabirimin ptr_
işaretçisini içeren veri üyesinin adresini alır.
T** ReleaseAndGetAddressOf();
Dönüş Değeri
Bu ComPtr
öğesinin ptr_
veri üyesinin adresi.
ComPtr::Reset
Bununla ComPtr
ilişkili arabirimi serbest bırakır ve yeni başvuru sayısını döndürür.
unsigned long Reset();
Dönüş Değeri
Varsa, temel arabirimde kalan başvuru sayısı.
ComPtr::Swap
Geçerli ComPtr
tarafından yönetilen arabirimi belirtilen ComPtr
tarafından yönetilen arabirimle değiştirir.
void Swap(
_Inout_ ComPtr&& r
);
void Swap(
_Inout_ ComPtr& r
);
Parametreler
r
Bir ComPtr
.