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 ComPtrbaş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 ComPtrile ilişkilendirilmiş arabirimin işaretçisini alır.
ComPtr::GetAddressOf Bu tarafından ComPtrtemsil 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 ComPtrtarafından yönetilen arabirimle değiştirir.

Korumalı Yöntemler

Veri Akışı Adı Açıklama
ComPtr::InternalAddRef Bu ComPtrile ilişkili arabirimin başvuru sayısını artırır.
ComPtr::InternalRelease bu ComPtrile ilişkilendirilmiş arabirimde bir COM Yayın işlemi gerçekleştirir.

Ortak İşleçler

Veri Akışı Adı Açıklama
ComPtr::operator& Geçerli ComPtradresini 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 ComPtryö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 ComPtrbaş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 ptemsil edilecek arabirim.

p
ComPtr parametresi Utarafı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 riidolan 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_OKbaş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 ComPtrile 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 ComPtrile ilişkilendirilmiş arabirimin işaretçisini alır.

T* Get() const;

Dönüş Değeri

Bu ComPtrile ilişkili arabirimin işaretçisi.

ComPtr::GetAddressOf

Bu tarafından ComPtrtemsil 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 ComPtrile ilişkili arabirimin başvuru sayısını artırır.

void InternalAddRef() const;

Açıklamalar

Bu yöntem korunur.

ComPtr::InternalRelease

bu ComPtrile 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 virtualyaparIUnknown.

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 ComPtrbir 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 nullptreş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 ComPtrbir arabirim ilişkilendirildiyse, veri üyesinin BoolStruct::Member adresi; aksi takdirde , nullptr.

ComPtr::ptr_

ile ilişkilendirilmiş ve tarafından ComPtryö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 ComPtrtarafından yönetilen arabirimle değiştirir.

void Swap(
   _Inout_ ComPtr&& r
);

void Swap(
   _Inout_ ComPtr& r
);

Parametreler

r
Bir ComPtr.