Megosztás a következőn keresztül:


winrt::com_ptr struct sablon (C++/WinRT)

Hivatkozásszámmal rendelkező COM intelligens mutatósablon. com_ptr a sablonparaméter által megadott felület vagy futásidejű osztály megvalósítási típusára mutató mutatót jelöl. Automatikusan kezeli a cél hivatkozásszámát egy privát nyers mutatón keresztül.

Szemantika

template <typename T>
struct com_ptr

Sablonparaméterek

typename T Az interfész vagy futásidejű osztály megvalósítási típusa, amelyre mutatót a com_ptr jelöl. Ez az intelligens mutató céljának típusa.

Követelmények

Minimálisan támogatott SDK: Windows SDK 10.0.17134.0-s verzió (Windows 10, 1803-as verzió)

Névtér: winrt

Fejléc: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (alapértelmezés szerint szerepel)

Tagtípus álnevek

Álnév típus
com_ptr::type A sablonparaméter implementáció által definiált ábrázolásának typename T szinonimája.

Konstruktorok

Konstruktor Leírás
com_ptr::com_ptr konstruktor Inicializálja a com_ptr struct új példányát, opcionálisan a bemeneti adatok másolásával vagy áthelyezésével.

Tagfüggvények

Funkció Leírás
com_ptr::as függvény A kért felületet adja vissza, ha az támogatott. Dob, ha nem.
com_ptr::csatolás funkció Olyan nyers mutatóhoz kapcsolódik, amely a célpontjára mutató hivatkozással rendelkezik; További hivatkozás nem kerül hozzáadásra.
com_ptr::rögzítési funkció Meghív egy megadott függvényt vagy metódust (automatikusan meghívja rajta a winrt::check_hresult függvényt), és rögzíti a függvény vagy metódus void**kimenetét .
com_ptr::copy_from függvény Másolatok egy másik mutatóból. Csökkenti a hivatkozások számát bármely aktuálisan hivatkozott felületen vagy objektumon, átmásolja a nyers mutatóparamétert, és megkezdi az általa mutatott felület vagy objektum élettartamának kezelését.
com_ptr::copy_to függvény Másolás egy másik mutatóra a com_ptr objektumból. Növeli a hivatkozások számát bármely jelenleg hivatkozott felületen vagy objektumon, és átmásolja az interfész vagy objektum memóriacímét a paraméterbe.
com_ptr::d etach függvény Leválasztja a hivatkozott felületről vagy objektumról a hivatkozások számának csökkentése nélkül, például azért, hogy visszaadja azt a hívónak.
com_ptr::get függvény Visszaadja az alapul szolgáló nyers mutatót, ha át kell adnia egy függvénynek.
com_ptr::p ut függvény Az alapul szolgáló nyers mutató címét adja eredményül; Ez a függvény segít olyan metódusok (például COM-metódusok) hívásában, amelyek a mutatóra mutató mutatón keresztül kimeneti paraméterekként adják vissza a hivatkozásokat.
com_ptr::p ut_void függvény Az alapul szolgáló nyers mutató címét adja vissza a void mutatóra; Ez a függvény segít meghívni azokat a metódusokat (például COM metódusokat), amelyek kimeneti paraméterként adják vissza a hivatkozásokat egy mutatón keresztül a void-ra.
com_ptr::try_as függvény A kért felületet adja vissza, ha az támogatott. Visszaadja nullptra , vagy false, ha nem.
com_ptr::try_capture függvény A com_ptr::capture olyan verziója, amely nem hibázik, hanem visszaadja true , ha sikeres vagy sem false .

Tagüzemeltetők

Operátor Leírás
com_ptr::operátor bool Ellenőrzi, hogy az intelligens mutató hivatkozik-e egy felületre vagy objektumra.
com_ptr::operátor* (indirekt operátor) A com_ptr célpontjára mutató hivatkozást ad vissza, így azt átadhatja egy olyan függvénynek, amely a T céltípusra való hivatkozást vár.
com_ptr::operator= (hozzárendelési operátor) Értéket rendel a com_ptr objektumhoz.
com_ptr::operátor-> (nyíl operátor) A hivatkozott felület vagy objektum metódusaihoz való hozzáférés engedélyezéséhez adja vissza az alapul szolgáló nyers mutatót.

Ingyenes funkciók

Funkció Leírás
attach_abi funkció Csatol egy com_ptr objektumot egy nyers mutatóhoz, amely a célra mutató hivatkozással rendelkezik; További hivatkozás nem kerül hozzáadásra.
detach_abi funkció Leválaszt egy com_ptr objektumot a nyers felületéről a hivatkozások számának csökkentése nélkül, például azért, hogy visszaadja a hívónak.
swap funkció Felcseréli a két com_ptr paraméter tartalmát úgy, hogy azok egymás célpontjára mutassanak.

Ingyenes szolgáltatók

Funkció Leírás
operátor!= (egyenlőtlenség operátor) Olyan értéket ad vissza, amely jelzi, hogy a két paraméter különböző célokra vonatkozik-e.
operátor< (kisebb operátor) Azt az értéket adja vissza, amely jelzi, hogy az első paraméter célja korábban fordul-e elő a memóriában, mint a második paraméteré.
operátor=< (kisebb vagy egyenlő operátor) Olyan értéket ad vissza, amely jelzi, hogy az első paraméter célja korábban vagy ugyanazon a helyen fordul elő a memóriában, mint a második paraméter.
operátor== (egyenlőségi operátor) Olyan értéket ad vissza, amely jelzi, hogy a két paraméter ugyanarra a felületre és/vagy objektumra vonatkozik-e.
operátor> (nagyobb, mint operátor) Azt az értéket adja vissza, amely azt jelzi, hogy az első paraméter célja később fordul-e elő a memóriában, mint a második paraméteré.
operátor=> (nagyobb, vagy egyenlő) Olyan értéket ad vissza, amely jelzi, hogy az első paraméter célja később vagy ugyanazon a helyen fordul-e elő a memóriában, mint a második paraméter.

com_ptr::com_ptr konstruktor

Inicializálja a com_ptr struct új példányát, opcionálisan a bemeneti adatok másolásával vagy áthelyezésével.

A void* konstruktor T*-t vesz fel, és átveszi a tulajdonjogot. winrt::take_ownership_from_abi_t egy olyan jelölőtípus, amely egyértelművé teszi , hogy a mutató kiadásának felelőssége most átkerül a com_ptr. A refszámnak nem kell pontosan 1-nek lennie; csak azt mondja, hogy a felelősség átszáll.

Szemantika

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;

Sablonparaméterek

typename U A bemeneti intelligens mutató által mutatott céltípus.

Paraméterek

other Egy másik com_ptr , amely inicializálja az com_ptr objektumot. A paraméter T-jének átalakíthatónak kell lennie az com_ptr objektum T-jévé.

com_ptr::as függvény

A kért felületet adja vissza, ha az támogatott. Dob, ha nem. Ez a függvény akkor hasznos, ha olyan felületet szeretne lekérdezni, amelyet nem kell visszaadnia a hívónak.

Kódpéldákat a Vetített típusok és felületek példányosítása és visszaküldése című szakaszban, valamint a témakör egyéb szakaszaiban talál.

Szemantika

template <typename To> auto as() const;
template <typename To> void as(To& to) const;

Sablonparaméterek

typename To A kért interfész típusa.

Paraméterek

to Hivatkozás a kért felület fogadására szolgáló értékre.

Visszaadott érték

A kért felületre hivatkozó com_ptr , vagy a kért felület erősen gépelt intelligens mutatója (akár a C++/WinRT, akár egy harmadik fél által deklarálva).

com_ptr::csatolás funkció

Olyan nyers mutatóhoz kapcsolódik, amely a célpontjára mutató hivatkozással rendelkezik; További hivatkozás nem kerül hozzáadásra. Szükség esetén ezzel a függvénnyel egyesítheti a hivatkozásokat.

Szemantika

void attach(T* value) noexcept;

Paraméterek

value Nyers mutató, amely a célra mutató hivatkozással rendelkezik.

com_ptr::rögzítési funkció

Meghív egy megadott függvényt vagy metódust (automatikusan meghívja rajta a winrt::check_hresult függvényt), és rögzíti a függvény vagy metódus void**kimenetét .

Lásd még a winrt::capture függvénysablont.

Szemantika

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);

Sablonparaméterek

typename F Függvényobjektum-típus, például szabad függvény vagy std::function.

typename O Interfész típusa.

typename M Egy metódus típusa.

typename Args Nulla vagy több argumentumtípus.

Paraméterek

function Egy függvényobjektum típusa F.

p Egy objektumra Omutató.

object A winrt::com_ptr típusa O.

method A módszer (végrehajtja O) típusa M.

args Nulla vagy több típusú Argsargumentum.

Megjegyzések

  • A capture(F function, Args&&...args) túlterhelés meghívja a függvényobjektumot.
  • A capture(O* p, M method, Args&& ...args) túlterhelés meghívja a mutatón lévő metódust.
  • A capture(winrt::com_ptr<O> const& object, M method, Args&&...args) túlterhelés meghívja a metódust az objektumon.

Minden túlterhelés áthalad (a invokee) a megadott további argumentumokon. Minden túlterhelés átadja az ilyen meghívásokhoz szükséges két további argumentumot is – konkrétan a REFIID-t (a winrt::com_ptr céljának azonosítója) és a void** -t (a winrt::com_ptr célpontjára mutató címe).

példa

winrt::com_ptr<IDXGIAdapter> adapter
...
winrt::com_ptr<IDXGIFactory2> factory;
factory.capture(adapter, &IDXGIAdapter::GetParent);

com_ptr::copy_from függvény

Másolatok egy másik mutatóból. Csökkenti a hivatkozások számát bármely aktuálisan hivatkozott felületen vagy objektumon, átmásolja a nyers mutatóparamétert, és megkezdi az általa mutatott felület vagy objektum élettartamának kezelését.

Szemantika

void copy_from(T* other) noexcept;

Paraméterek

other Olyan célra mutató nyers mutató, amelynek élettartamát a com_ptr objektumnak kell kezelnie.

com_ptr::copy_to függvény

Másolás egy másik mutatóra a com_ptr objektumból. Növeli a hivatkozások számát bármely jelenleg hivatkozott felületen vagy objektumon, és átmásolja az interfész vagy objektum memóriacímét a paraméterbe. Ez a függvény lehetővé teszi, hogy ugyanarra a felületre mutató hivatkozást adjon ki a QueryInterface meghívása nélkül.

Szemantika

void copy_to(T** other) const noexcept;

Paraméterek

other Egy nyers mutató címe; , amelybe a mutatót a com_ptr objektum célpontjára másolja.

com_ptr::d etach függvény

Leválasztja a hivatkozott felületről vagy objektumról a hivatkozások számának csökkentése nélkül, például azért, hogy visszaadja azt a hívónak.

Szemantika

T* detach() noexcept;

Visszaadott érték

A com_ptr objektum által hivatkozott felületre vagy objektumra mutató mutató.

com_ptr::get függvény

Visszaadja az alapul szolgáló nyers mutatót, ha át kell adnia egy függvénynek. A visszaadott mutatón meghívhatja az AddRef, a Release vagy a QueryInterface függvényt.

Szemantika

T* get() const noexcept;

Visszaadott érték

A com_ptr objektum által hivatkozott felületre vagy objektumra mutató mutató.

com_ptr::p ut függvény

Az alapul szolgáló nyers mutató címét adja vissza, amelyet át kell adni egy olyan függvénynek, amely kitölti az értéket; Ez a függvény segít olyan metódusok (például COM-metódusok) hívásában, amelyek a mutatóra mutató mutatón keresztül kimeneti paraméterekként adják vissza a hivatkozásokat.

Szemantika

T** put() noexcept;

Visszaadott érték

Az alapul szolgáló nyers mutató címe.

com_ptr::p ut_void függvény

Az alapul szolgáló nyers mutató címét adja vissza egy mutató mutatójaként , hogy átadja azt egy olyan függvénynek (például COM metódusoknak), amely a hivatkozásokat kimeneti paraméterként adja vissza a void mutatóján keresztül.

Szemantika

void** put_void() noexcept;

Visszaadott érték

Az alapul szolgáló nyers mutató címe, mint a void mutatóra mutató mutató.

com_ptr::try_as függvény

A kért felületet adja vissza, ha az támogatott. Visszatér nullptr (a auto-visszatérő túlterhelés), vagy false (a bool-visszatérő túlterhelés), ha nem. Ez a függvény akkor hasznos, ha olyan felületet szeretne lekérdezni, amelyet nem kell visszaadnia a hívónak.

Szemantika

template <typename To> auto try_as() const noexcept;
template <typename To> bool try_as(To& to) const noexcept;

Sablonparaméterek

typename To A kért interfész típusa.

Paraméterek

to Hivatkozás a kért felület fogadására szolgáló értékre.

Visszaadott érték

A kért felületre hivatkozó com_ptr , vagy a kért felület erősen gépelt intelligens mutatója (akár a C++/WinRT, akár egy harmadik fél által deklarálva), ha a kért felület támogatott, egyébként nullptr (a auto-return overload) vagy false (a bool-return overload).

com_ptr::try_capture függvény

A com_ptr::capture olyan verziója, amely nem hibázik, hanem visszaadja true , ha sikeres vagy sem false .

Lásd még a winrt::try_capture függvénysablont.

com_ptr::operátor bool

Ellenőrzi, hogy az intelligens mutató hivatkozik-e egy felületre vagy objektumra. Ha az intelligens mutató nem hivatkozik egy felületre vagy objektumra, akkor logikailag null; különben logikailag nem nulla.

Szemantika

explicit operator bool() const noexcept;

Visszaadott érték

true Ha az intelligens mutató egy felületre vagy objektumra hivatkozik (logikailag nem null), egyébként false (logikailag null).

com_ptr::operátor* (indirekt operátor)

A com_ptr célpontjára mutató hivatkozást ad vissza, így azt átadhatja egy olyan függvénynek, amely a T céltípusra való hivatkozást vár.

Szemantika

T& operator*() const noexcept;

Visszaadott érték

Hivatkozás a com_ptr célpontjára.

com_ptr::operator= (hozzárendelési operátor)

Értéket rendel a com_ptr objektumhoz.

Szemantika

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;

Sablonparaméterek

typename U A hozzárendelt érték által mutatott típus.

Paraméterek

otherA com_ptr objektumhoz rendelendő com_ptr érték. A paraméter T-jének átalakíthatónak kell lennie az com_ptr objektum T-jévé.

Visszaadott érték

Hivatkozás a com_ptr objektumra.

com_ptr::operátor-> (nyíl operátor)

A hivatkozott felület vagy objektum metódusaihoz való hozzáférés engedélyezéséhez adja vissza az alapul szolgáló nyers mutatót. A visszaadott mutatón nem hívhatja meg az AddRef vagy a Release parancsot, de meghívhatja a QueryInterface-t.

Szemantika

auto operator->() const noexcept;

Visszaadott érték

A com_ptr objektum által hivatkozott felületre vagy objektumra mutató mutató.

attach_abi függvény

Csatol egy com_ptr objektumot egy nyers mutatóhoz, amely a célra mutató hivatkozással rendelkezik; További hivatkozás nem kerül hozzáadásra. Szükség esetén ezzel a függvénnyel egyesítheti a hivatkozásokat.

Szemantika

void attach_abi(winrt::com_ptr<T>& object, T* value) noexcept;

Paraméterek

object Egy com_ptr tárgy, amelyen operálni lehet.

value Nyers mutató, amely a célra mutató hivatkozással rendelkezik.

detach_abi függvény

Leválaszt egy com_ptr objektumot a nyers felületéről a hivatkozások számának csökkentése nélkül, például azért, hogy visszaadja a hívónak.

Szemantika

auto detach_abi(winrt::com_ptr<T>& object) noexcept;

Paraméterek

object Egy com_ptr tárgy, amelyen operálni lehet.

Visszaadott érték

A com_ptr objektum által hivatkozott nyers felületre mutató mutató.

operátor!= (egyenlőtlenség operátor)

Olyan értéket ad vissza, amely jelzi, hogy a két paraméter különböző célokra vonatkozik-e.

Szemantika

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;

Paraméterek

left right Egy com_ptr érték, amelynek a cél memóriacímét össze kell hasonlítani a másik paraméterével.

Visszaadott érték

true ha a két paraméter különböző célpontokra mutat, egyébként false.

operátor< (kisebb operátor)

Azt az értéket adja vissza, amely jelzi, hogy az első paraméter célja korábban fordul-e elő a memóriában, mint a második paraméteré.

Szemantika

template <typename T> bool operator<(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;

Paraméterek

left right Egy com_ptr érték, amelynek a cél memóriacímét össze kell hasonlítani a másik paraméterével.

Visszaadott érték

true Ha az első paraméter tárolójának memóriacíme kisebb, mint a második paraméteré, egyébként false.

operátor=< (kisebb vagy egyenlő operátor)

Olyan értéket ad vissza, amely jelzi, hogy az első paraméter célja korábban vagy ugyanazon a helyen fordul elő a memóriában, mint a második paraméter.

Szemantika

template <typename T> bool operator<=(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;

Paraméterek

left right Egy com_ptr érték, amelynek a cél memóriacímét össze kell hasonlítani a másik paraméterével.

Visszaadott érték

true Ha az első paraméter tárolójának memóriacíme kisebb vagy egyenlő a második paraméterével, egyébként false.

operátor== (egyenlőségi operátor)

Olyan értéket ad vissza, amely jelzi, hogy a két paraméter ugyanarra a felületre és/vagy objektumra vonatkozik-e.

Szemantika

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;

Paraméterek

left right Egy com_ptr érték, amelynek a cél memóriacímét össze kell hasonlítani a másik paraméterével.

Visszaadott érték

true ha a két paraméter ugyanarra a célra mutat, egyébként false.

operátor> (nagyobb, mint operátor)

Azt az értéket adja vissza, amely azt jelzi, hogy az első paraméter célja később fordul-e elő a memóriában, mint a második paraméteré.

Szemantika

template <typename T> bool operator>(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;

Paraméterek

left right Egy com_ptr érték, amelynek a cél memóriacímét össze kell hasonlítani a másik paraméterével.

Visszaadott érték

true Ha az első paraméter tárolójának memóriacíme nagyobb, mint a második paraméteré, egyébként false.

operátor=> (nagyobb, vagy egyenlő)

Olyan értéket ad vissza, amely jelzi, hogy az első paraméter célja később vagy ugyanazon a helyen fordul-e elő a memóriában, mint a második paraméter.

Szemantika

template <typename T> bool operator>=(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;

Paraméterek

left right Egy com_ptr érték, amelynek a cél memóriacímét össze kell hasonlítani a másik paraméterével.

Visszaadott érték

true Ha az első paraméter tárolójának memóriacíme nagyobb vagy egyenlő a második paraméterével, egyébként false.

swap függvény

Felcseréli a két com_ptr paraméter tartalmát úgy, hogy azok egymás célpontjára mutassanak.

Szemantika

void swap(winrt::com_ptr& left, winrt::com_ptr& right) noexcept;

Paraméterek

left right Olyan com_ptr érték, amelynek mutatója kölcsönösen felcserélhető a másik paraméterével.

Lásd még