Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.