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.
Başvuru sayılan bir COM akıllı işaretçi şablonu. com_ptr , şablon parametresi tarafından belirtilen arabirim veya çalışma zamanı sınıfı uygulama türüne yönelik bir işaretçiyi temsil eder. Özel bir ham işaretçi aracılığıyla hedefi için referans sayısını otomatik olarak yönetir.
Sözdizimi
template <typename T>
struct com_ptr
Şablon parametreleri
typename T
com_ptr tarafından temsil edilen bir işaretçi olan arabirim veya çalışma zamanı sınıfı uygulama türü. Bu, akıllı işaretçinin hedefinin türüdür.
Gereksinimler
Desteklenen en düşük SDK: Windows SDK sürüm 10.0.17134.0 (Windows 10, sürüm 1803)
Ad alanı: winrt
Başlık: WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h %WindowsSdkDir%Include<(varsayılan olarak eklenir)
Üye türü diğer adları
| Takma ad | Türü |
|---|---|
| com_ptr::Tür | Şablon parametresinin uygulama tanımlı gösteriminin eşanlamlısı typename T . |
Kurucular
| Yapıcı | Açıklama |
|---|---|
| com_ptr::com_ptr yapıcı | İsteğe bağlı olarak giriş verilerinin bir kopyası veya taşınması ile com_ptr yapısının yeni bir örneğini başlatır. |
Üye işlevleri
| İşlev | Açıklama |
|---|---|
| com_ptr::fonksiyon olarak | Destekleniyorsa, istenen arabirimi döndürür. Değilse atar. |
| com_ptr::attach işlevi | Hedefine referansı olan ham bir işaretçiye bağlanır; Ek bir başvuru eklenmez. |
| com_ptr::Yakalama İşlevi | Belirtilen bir işlevi veya yöntemi çağırır (üzerinde winrt::check_hresult otomatik olarak çağırır) ve işlev veya yöntemden çıkan arabirim işaretçisini bir void**. |
| com_ptr::copy_from işlevi | Başka bir işaretçiden kopyalar. Şu anda başvurulan herhangi bir arabirim veya nesnedeki başvuru sayısını azaltır, ham işaretçi parametresini kopyalar ve işaret ettiği arabirimin veya nesnenin ömrünü yönetmeye başlar. |
| com_ptr::copy_to işlevi | com_ptr nesneden başka bir işaretçiye kopyalar. Şu anda başvurulan herhangi bir arabirim veya nesnedeki başvuru sayısını artırır ve bu arabirimin veya nesnenin bellek adresini parametreye kopyalar. |
| com_ptr::d etach fonksiyonu | Başvuru sayısını azaltmadan, belki de bir arayana geri döndürmek için, başvurulan arabirimden veya nesneden ayrılır. |
| com_ptr::get işlevi | Bir işleve geçirmeniz gerekmesi durumunda temel alınan ham işaretçiyi döndürür. |
| com_ptr::p ut işlevi | Temel alınan ham işaretçinin adresini döndürür; bu işlev, başvuruları bir işaretçi aracılığıyla çıkış parametreleri olarak döndüren yöntemleri (COM yöntemleri gibi) çağırmanıza yardımcı olur. |
| com_ptr::p ut_void işlevi | Temel alınan ham işaretçinin adresini, geçersiz kılınacak bir işaretçiye işaretçi olarak döndürür; bu işlev, başvuruları bir işaretçi aracılığıyla void işaretçisine out parametreleri olarak döndüren yöntemleri (COM yöntemleri gibi) çağırmanıza yardımcı olur. |
| com_ptr::try_as işlevi | Destekleniyorsa, istenen arabirimi döndürür. döndürür nullptr, veya falsedeğilse . |
| com_ptr::try_capture işlevi |
com_ptr::capture'ın başarısızlığa uğramayan, ancak başarılı olduğunda veya false olmadığında geri dönen true bir sürümü. |
Üye operatörler
| Operatör | Açıklama |
|---|---|
| com_ptr::operatör bool | Akıllı işaretçinin bir arabirime veya nesneye referans verip vermediğini kontrol eder. |
| com_ptr::operator* (yönlendirme operatörü) | com_ptr hedefine bir başvuru döndürür, böylece bu başvuruyu T hedef türüne başvuru bekleyen bir işleve geçirebilirsiniz. |
| com_ptr::operator= (atama operatörü) | com_ptr nesneye bir değer atar. |
| com_ptr::operator-> (ok operatörü) | Başvurulan arabirime veya nesnenin yöntemlerine erişim sağlamak için, temel alınan ham işaretçiyi döndürür. |
Ücretsiz fonksiyonlar
| İşlev | Açıklama |
|---|---|
| attach_abi işlevi | Bir com_ptr nesnesini, hedefine yönelik bir başvuruya sahip olan ham bir işaretçiye ekler; Ek bir başvuru eklenmez. |
| detach_abi işlevi | Başvuru sayısını azaltmadan, belki de bir arayana geri döndürmek için bir com_ptr nesnesini ham arabiriminden ayırır. |
| Takas İşlevi | İki com_ptr parametresinin içeriğini , birbirlerinin hedefini gösterecek şekilde değiştirir. |
Ücretsiz operatörler
| İşlev | Açıklama |
|---|---|
| operator!= (eşitsizlik operatörü) | İki parametrenin farklı hedeflere başvurup başvurmadığını belirten bir değer döndürür. |
| Operatör< (Küçüktür operatörü) | İlk parametrenin hedefinin bellekte ikinci parametreninkinden daha önce oluşup oluşmadığını belirten bir değer döndürür. |
| operator<= (küçüktür veya eşittir operatörü) | İlk parametrenin hedefinin bellekte ikinci parametreden daha önce mi yoksa ikinci parametreyle aynı konumda mı oluştuğunu gösteren bir değer döndürür. |
| operator== (eşitlik operatörü) | İki parametrenin aynı arabirime ve/veya nesneye başvurup başvurmadığını belirten bir değer döndürür. |
| operatör> (büyüktür operatörü) | İlk parametrenin hedefinin bellekte ikinci parametreninkinden daha sonra oluşup oluşmadığını belirten bir değer döndürür. |
| operator>= (büyüktür veya eşittir operatörü) | İlk parametrenin hedefinin bellekte ikinci parametreden daha sonra mı yoksa ikinci parametreyle aynı konumda mı oluştuğunu gösteren bir değer döndürür. |
com_ptr::com_ptr yapıcı
İsteğe bağlı olarak giriş verilerinin bir kopyası veya taşınması ile com_ptr yapısının yeni bir örneğini başlatır.
Yapıcı void* bir T* alır ve mülkiyeti üstlenir.
winrt::take_ownership_from_abi_t , bu işaretçiyi serbest bırakma sorumluluğunu açıkça belirten bir işaretçi türüdür ve artık com_ptr aktarılmaktadır. Yeniden sayım tam olarak 1 olmak zorunda değildir; sadece sorumluluğun aktarıldığını söylüyor.
Sözdizimi
com_ptr(winrt::com_ptr const& other) noexcept;
com_ptr(std::nullptr_t = nullptr) noexcept;
com_ptr(void* ptr, winrt::take_ownership_from_abi_t) noexcept;
template <typename U> com_ptr(winrt::com_ptr<U> const& other) noexcept;
template <typename U> com_ptr(winrt::com_ptr<U>&& other) noexcept;
Şablon parametreleri
typename U Giriş akıllı işaretçisi tarafından işaret edilen hedef türü.
Parametreler
other
com_ptr nesnesini başlatan başka bir com_ptr. Parametrenin T'si , com_ptr nesnenin T'sine dönüştürülebilir olmalıdır.
com_ptr::fonksiyon olarak
Destekleniyorsa, istenen arabirimi döndürür. Değilse atar. Bu işlev, arayana geri iletmeniz gerekmeyen bir arabirimi sorgulamak istediğinizde kullanışlıdır.
Kod örnekleri için, Yansıtılan türleri ve arabirimleri başlatma ve döndürme bölümüne ve bu konudaki diğer bölümlere bakın.
Sözdizimi
template <typename To> auto as() const;
template <typename To> void as(To& to) const;
Şablon parametreleri
typename To İstenen arabirimin türü.
Parametreler
to İstenen arabirimi almak için bir değere başvuru.
Dönüş değeri
İstenen arabirime başvuran bir com_ptr veya istenen arabirim için kesin olarak yazılmış bir akıllı işaretçi (C++/WinRT veya üçüncü bir tarafça bildirilir).
com_ptr::attach işlevi
Hedefine referansı olan ham bir işaretçiye bağlanır; Ek bir başvuru eklenmez. Gerekirse, başvuruları birleştirmek için bu işlevi kullanabilirsiniz.
Sözdizimi
void attach(T* value) noexcept;
Parametreler
value Hedefine bir başvuruya sahip olan ham bir işaretçi.
com_ptr::Yakalama İşlevi
Belirtilen bir işlevi veya yöntemi çağırır (üzerinde winrt::check_hresult otomatik olarak çağırır) ve işlev veya yöntemden çıkan arabirim işaretçisini bir void**.
Ayrıca winrt::capture işlev şablonuna bakın.
Sözdizimi
template <typename F, typename...Args>
void capture(F function, Args&&...args);
template <typename O, typename M, typename...Args>
void capture(O* p, M method, Args&& ...args);
template <typename O, typename M, typename...Args>
void capture(winrt::com_ptr<O> const& object, M method, Args&&...args);
Şablon parametreleri
typename F Free işlevi veya std::function gibi bir işlev nesnesi türü.
typename O Bir arabirim türü.
typename M Bir yöntem türü.
typename Args Sıfır veya daha fazla bağımsız değişken türü.
Parametreler
function türünde bir işlev nesnesi F.
p Türündeki Obir nesnenin işaretçisi.
object Bir winrt::com_ptr türünde O.
methodtüründe bir yöntem (tarafından OMuygulanır) .
args Sıfır veya daha fazla türde Argsbağımsız değişken.
Açıklamalar
- Aşırı
capture(F function, Args&&...args)yükleme, işlev nesnesini çağırır. - Aşırı
capture(O* p, M method, Args&& ...args)yükleme, işaretçideki yöntemi çağırır. - Aşırı
capture(winrt::com_ptr<O> const& object, M method, Args&&...args)yükleme, nesne üzerindeki yöntemi çağırır.
Tüm aşırı yüklemeler, sağladığınız tüm ek bağımsız değişkenleri (çağrılana) geçirir. Tüm aşırı yüklemeler, bu tür çağrıların gerektirdiği iki ek bağımsız değişkeni de iletir—özellikle, bir REFIID ( winrt::com_ptr hedefinin kimliği) ve bir void** ( winrt::com_ptr hedefine giden bir işaretçinin adresi).
Örnek
winrt::com_ptr<IDXGIAdapter> adapter
...
winrt::com_ptr<IDXGIFactory2> factory;
factory.capture(adapter, &IDXGIAdapter::GetParent);
com_ptr::copy_from işlevi
Başka bir işaretçiden kopyalar. Şu anda başvurulan herhangi bir arabirim veya nesnedeki başvuru sayısını azaltır, ham işaretçi parametresini kopyalar ve işaret ettiği arabirimin veya nesnenin ömrünü yönetmeye başlar.
Sözdizimi
void copy_from(T* other) noexcept;
Parametreler
other Yaşam süresi com_ptr nesnesi tarafından yönetilmesi gereken bir hedefin ham işaretçisi.
com_ptr::copy_to işlevi
com_ptr nesneden başka bir işaretçiye kopyalar. Şu anda başvurulan herhangi bir arabirim veya nesnedeki başvuru sayısını artırır ve bu arabirimin veya nesnenin bellek adresini parametreye kopyalar. Bu işlev, QueryInterface'i çağırmadan aynı arabirime bir başvuru dağıtmanızı sağlar.
Sözdizimi
void copy_to(T** other) const noexcept;
Parametreler
other Ham bir işaretçinin adresi; işaretçiyi com_ptr nesnenin hedefine kopyalamak için.
com_ptr::d etach fonksiyonu
Başvuru sayısını azaltmadan, belki de bir arayana geri döndürmek için, başvurulan arabirimden veya nesneden ayrılır.
Sözdizimi
T* detach() noexcept;
Dönüş değeri
com_ptr nesnesi tarafından başvurulan arabirim veya nesne işaretçisi.
com_ptr::get işlevi
Bir işleve geçirmeniz gerekmesi durumunda temel alınan ham işaretçiyi döndürür. Döndürülen işaretçide AddRef, Release veya QueryInterface'i çağırabilirsiniz.
Sözdizimi
T* get() const noexcept;
Dönüş değeri
com_ptr nesnesi tarafından başvurulan arabirim veya nesne işaretçisi.
com_ptr::p ut işlevi
Değeri dolduracak bir işleve geçirilecek temel ham işaretçinin adresini döndürür; bu işlev, başvuruları bir işaretçi aracılığıyla çıkış parametreleri olarak döndüren yöntemleri (COM yöntemleri gibi) çağırmanıza yardımcı olur.
Sözdizimi
T** put() noexcept;
Dönüş değeri
Temel alınan ham işaretçinin adresi.
com_ptr::p ut_void işlevi
Temel alınan ham işaretçinin adresini, bir işaretçi aracılığıyla void işaretçisine başvuruları out parametreleri olarak döndüren bir işleve (COM yöntemleri gibi) geçirmek için bir işaretçi olarak void işaretçisine döndürür.
Sözdizimi
void** put_void() noexcept;
Dönüş değeri
Void işaretçisine işaretçi olarak temel alınan ham işaretçinin adresi.
com_ptr::try_as işlevi
Destekleniyorsa, istenen arabirimi döndürür. Döndürülür nullptr ( auto-geri dönen aşırı yük) veya false değilse ( bool-geri dönen aşırı yük). Bu işlev, arayana geri iletmeniz gerekmeyen bir arabirimi sorgulamak istediğinizde kullanışlıdır.
Sözdizimi
template <typename To> auto try_as() const noexcept;
template <typename To> bool try_as(To& to) const noexcept;
Şablon parametreleri
typename To İstenen arabirimin türü.
Parametreler
to İstenen arabirimi almak için bir değere başvuru.
Dönüş değeri
İstenen arabirime başvuran bir com_ptr veya istenen arabirim destekleniyorsa istenen arabirim için kesin olarak belirlenmiş bir akıllı işaretçi (C++/WinRT veya üçüncü bir tarafça bildirilir), aksi takdirde nullptr ( auto-dönen aşırı yük) veya false (- booldönen aşırı yük).
com_ptr::try_capture işlevi
com_ptr::capture'ın başarısızlığa uğramayan, ancak başarılı olduğunda veya false olmadığında geri dönen true bir sürümü.
Ayrıca winrt::try_capture işlev şablonuna bakın.
com_ptr::operatör bool
Akıllı işaretçinin bir arabirime veya nesneye referans verip vermediğini kontrol eder. Akıllı işaretçi bir arabirime veya nesneye başvurmuyorsa, mantıksal olarak boştur; aksi takdirde mantıksal olarak boş değildir.
Sözdizimi
explicit operator bool() const noexcept;
Dönüş değeri
true Akıllı işaretçi bir arabirime veya nesneye başvuruyorsa (mantıksal olarak null değil), aksi takdirde false (mantıksal olarak null).
com_ptr::operator* (yönlendirme operatörü)
com_ptr hedefine bir başvuru döndürür, böylece bu başvuruyu T hedef türüne başvuru bekleyen bir işleve geçirebilirsiniz.
Sözdizimi
T& operator*() const noexcept;
Dönüş değeri
com_ptr'nin hedefine bir referans.
com_ptr::operator= (atama operatörü)
com_ptr nesneye bir değer atar.
Sözdizimi
winrt::com_ptr& operator=(winrt::com_ptr const& other) noexcept;
template <typename U> winrt::com_ptr& operator=(winrt::com_ptr<U> const& other) noexcept;
template <typename U> winrt::com_ptr& operator=(winrt::com_ptr<U>&& other) noexcept;
Şablon parametreleri
typename U Atanan değerin işaret ettiği tür.
Parametreler
other
com_ptr nesnesine atanacak com_ptr bir değer. Parametrenin T'si , com_ptr nesnenin T'sine dönüştürülebilir olmalıdır.
Dönüş değeri
com_ptr nesnesine bir başvuru.
com_ptr::operator-> (ok operatörü)
Başvurulan arabirime veya nesnenin yöntemlerine erişim sağlamak için, temel alınan ham işaretçiyi döndürür. Döndürülen işaretçide AddRef veya Release öğesini çağıramazsınız, ancak QueryInterface'i çağırabilirsiniz.
Sözdizimi
auto operator->() const noexcept;
Dönüş değeri
com_ptr nesnesi tarafından başvurulan arabirim veya nesne işaretçisi.
attach_abi işlevi
Bir com_ptr nesnesini, hedefine yönelik bir başvuruya sahip olan ham bir işaretçiye ekler; Ek bir başvuru eklenmez. Gerekirse, başvuruları birleştirmek için bu işlevi kullanabilirsiniz.
Sözdizimi
void attach_abi(winrt::com_ptr<T>& object, T* value) noexcept;
Parametreler
object Üzerinde çalışılması com_ptr bir nesne.
value Hedefine bir başvuruya sahip olan ham bir işaretçi.
detach_abi işlevi
Başvuru sayısını azaltmadan, belki de bir arayana geri döndürmek için bir com_ptr nesnesini ham arabiriminden ayırır.
Sözdizimi
auto detach_abi(winrt::com_ptr<T>& object) noexcept;
Parametreler
object Üzerinde çalışılması com_ptr bir nesne.
Dönüş değeri
com_ptr nesnesi tarafından başvurulan ham arabirimin işaretçisi.
operator!= (eşitsizlik operatörü)
İki parametrenin farklı hedeflere başvurup başvurmadığını belirten bir değer döndürür.
Sözdizimi
template <typename T> bool operator!=(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
template <typename T> bool operator!=(winrt::com_ptr<T> const& left, std::nullptr_t) noexcept;
template <typename T> bool operator!=(std::nullptr_t, winrt::com_ptr<T> const& right) noexcept;
Parametreler
left
right Hedefin bellek adresi diğer parametreninkiyle karşılaştırılacak bir com_ptr değeri.
Dönüş değeri
true İki parametre farklı hedeflere işaret ediyorsa, aksi takdirde false.
Operatör< (Küçüktür operatörü)
İlk parametrenin hedefinin bellekte ikinci parametreninkinden daha önce oluşup oluşmadığını belirten bir değer döndürür.
Sözdizimi
template <typename T> bool operator<(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parametreler
left
right Hedefin bellek adresi diğer parametreninkiyle karşılaştırılacak bir com_ptr değeri.
Dönüş değeri
true İlk parametrenin hedefinin bellek adresi ikinci parametreninkinden küçükse, aksi takdirde false.
operator<= (küçüktür veya eşittir operatörü)
İlk parametrenin hedefinin bellekte ikinci parametreden daha önce mi yoksa ikinci parametreyle aynı konumda mı oluştuğunu gösteren bir değer döndürür.
Sözdizimi
template <typename T> bool operator<=(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parametreler
left
right Hedefin bellek adresi diğer parametreninkiyle karşılaştırılacak bir com_ptr değeri.
Dönüş değeri
true İlk parametrenin hedefinin bellek adresi ikinci parametreninkinden küçük veya ona eşitse, aksi takdirde false.
operator== (eşitlik operatörü)
İki parametrenin aynı arabirime ve/veya nesneye başvurup başvurmadığını belirten bir değer döndürür.
Sözdizimi
template <typename T> bool operator==(winrt::com_ptr<T> const& left, std::nullptr_t) noexcept;
template <typename T> bool operator==(std::nullptr_t, winrt::com_ptr<T> const& right) noexcept;
Parametreler
left
right Hedefin bellek adresi diğer parametreninkiyle karşılaştırılacak bir com_ptr değeri.
Dönüş değeri
true iki parametre aynı hedefi gösteriyorsa, aksi takdirde false.
operatör> (büyüktür operatörü)
İlk parametrenin hedefinin bellekte ikinci parametreninkinden daha sonra oluşup oluşmadığını belirten bir değer döndürür.
Sözdizimi
template <typename T> bool operator>(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parametreler
left
right Hedefin bellek adresi diğer parametreninkiyle karşılaştırılacak bir com_ptr değeri.
Dönüş değeri
true İlk parametrenin hedefinin bellek adresi ikinci parametreninkinden büyükse, aksi takdirde false.
operator>= (büyüktür veya eşittir operatörü)
İlk parametrenin hedefinin bellekte ikinci parametreden daha sonra mı yoksa ikinci parametreyle aynı konumda mı oluştuğunu gösteren bir değer döndürür.
Sözdizimi
template <typename T> bool operator>=(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parametreler
left
right Hedefin bellek adresi diğer parametreninkiyle karşılaştırılacak bir com_ptr değeri.
Dönüş değeri
true İlk parametrenin hedefinin bellek adresi ikinci parametreninkinden büyük veya ona eşitse, aksi takdirde false.
swap işlevi
İki com_ptr parametresinin içeriğini , birbirlerinin hedefini gösterecek şekilde değiştirir.
Sözdizimi
void swap(winrt::com_ptr& left, winrt::com_ptr& right) noexcept;
Parametreler
left
right
İşaretçisi diğer parametreninkiyle karşılıklı olarak değiştirilecek bir com_ptr değeri.
Ayrıca bakınız
- winrt ad alanı
- C++/WinRT ile API'leri kullanma