Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een COM-smartpointersjabloon met referentietelling. com_ptr vertegenwoordigt een aanwijzer naar de interface of het implementatietype van de runtimeklasse dat is opgegeven door de sjabloonparameter. Het beheert automatisch het aantal referenties voor zijn doel via een eigen onbewerkte aanwijzer.
Syntaxis
template <typename T>
struct com_ptr
Sjabloonparameters
typename T De interface, of implementatietype van de runtimeklasse, waarvan een aanwijzer wordt weergegeven door de com_ptr. Dit is het type doel van de slimme aanwijzer.
Behoeften
Minimaal ondersteunde SDK: Windows SDK versie 10.0.17134.0 (Windows 10, versie 1803)
Naamruimte: winrt
Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (standaard inbegrepen)
Aliassen van het type lid
| Alias naam | Typologie |
|---|---|
| com_ptr::type | Een synoniem voor een door de implementatie gedefinieerde weergave van de typename T sjabloonparameter. |
Constructeurs
| Constructeur | Beschrijving |
|---|---|
| com_ptr::com_ptr aannemer | Initialiseert een nieuw exemplaar van de com_ptr struct, eventueel met een kopie of verplaatsing van de invoergegevens. |
Functies voor leden
| Functie | Beschrijving |
|---|---|
| com_ptr::as functie | Retourneert de gevraagde interface, als deze wordt ondersteund. Worpen als dat niet het geval is. |
| com_ptr::attach functie | Wordt gekoppeld aan een onbewerkte aanwijzer die een verwijzing naar het doel bezit; Een extra verwijzing wordt niet toegevoegd. |
| com_ptr::Capture-functie | Roept een opgegeven functie of methode aan (roept automatisch winrt::check_hresult aan) en legt de interfaceaanwijzer vast die wordt uitgevoerd door de functie of methode als een void**. |
| com_ptr::copy_from functie | Kopieën van een andere aanwijzer. Verlaagt het aantal verwijzingen op elke interface of object waarnaar momenteel wordt verwezen, kopieert de onbewerkte aanwijzerparameter en begint met het beheren van de levensduur van de interface of het object waarnaar wordt verwezen. |
| com_ptr::copy_to functie | Kopieert naar een andere aanwijzer van het com_ptr object. Verhoogt het aantal verwijzingen op elke interface of object waarnaar momenteel wordt verwezen en kopieert het geheugenadres van die interface of dat object naar de parameter. |
| com_ptr::d etach functie | Koppelt zich los van de interface of het object waarnaar wordt verwezen zonder het aantal verwijzingen te verminderen, bijvoorbeeld om het terug te sturen naar een aanroeper. |
| com_ptr::get functie | Retourneert de onderliggende onbewerkte aanwijzer als u deze aan een functie moet doorgeven. |
| com_ptr::p ut functie | Retourneert het adres van de onderliggende onbewerkte aanwijzer; met deze functie kunt u methoden (zoals COM-methoden) aanroepen die verwijzingen als out-parameters via een aanwijzer naar een aanwijzer retourneren. |
| com_ptr::p ut_void functie | Retourneert het adres van de onderliggende onbewerkte aanwijzer als een aanwijzer naar een aanwijzer om ongeldig te maken; deze functie helpt u bij het aanroepen van methoden (zoals COM-methoden) die verwijzingen als out-parameters retourneren via een pointer naar een pointer om void te maken. |
| com_ptr::try_as functie | Retourneert de gevraagde interface, als deze wordt ondersteund. Retourneert nullptr, of false, als dat niet het geval is. |
| com_ptr::try_capture functie | Een versie van com_ptr::capture die niet op mislukking gooit, maar in plaats daarvan retourneert als het true succesvol is of false niet. |
Aangesloten operatoren
| Operateur | Beschrijving |
|---|---|
| com_ptr::operator bool | Hiermee wordt gecontroleerd of de slimme aanwijzer al dan niet verwijst naar een interface of object. |
| com_ptr::operator* (indirection operator) | Retourneert een verwijzing naar het doel van de com_ptr, zodat u deze kunt doorgeven aan een functie die een verwijzing naar het doeltype T verwacht. |
| com_ptr::operator= (toewijzing operator) | Wijst een waarde toe aan het com_ptr object. |
| com_ptr::operator-> (pijl operator) | Als u toegang wilt verlenen tot de interface waarnaar wordt verwezen of de methoden van het object, wordt de onderliggende onbewerkte aanwijzer geretourneerd. |
Gratis functies
| Functie | Beschrijving |
|---|---|
| attach_abi functie | Koppelt een com_ptr object aan een onbewerkte aanwijzer die een verwijzing naar het doel bezit; Een extra verwijzing wordt niet toegevoegd. |
| detach_abi functie | Koppelt een com_ptr object los van de onbewerkte interface zonder het aantal verwijzingen te verminderen, bijvoorbeeld om het terug te sturen naar een aanroeper. |
| Wissel functie | Verwisselt de inhoud van de twee com_ptr parameters zodat ze naar elkaars doel wijzen. |
Gratis operators
| Functie | Beschrijving |
|---|---|
| operator!= (operator ongelijkheid) | Geeft een waarde terug die aangeeft of de twee parameters naar verschillende doelen verwijzen. |
| operator< (minder dan operator) | Geeft een waarde terug die aangeeft of het doel van de eerste parameter eerder in het geheugen voorkomt dan dat van de tweede parameter. |
| operator<= (klein-dan-of-gelijk-aan-operator) | Geeft een waarde terug die aangeeft of het doel van de eerste parameter eerder in het geheugen voorkomt dan of op dezelfde locatie als die van de tweede parameter. |
| operator== (gelijke operator) | Retourneert een waarde die aangeeft of de twee parameters naar dezelfde interface en/of hetzelfde object verwijzen. |
| operator> (groter-dan operator) | Geeft een waarde terug die aangeeft of het doel van de eerste parameter later in het geheugen voorkomt dan dat van de tweede parameter. |
| operator>= (groter-dan-of-gelijk-aan-operator) | Geeft een waarde terug die aangeeft of het doel van de eerste parameter later in het geheugen voorkomt dan of op dezelfde locatie als die van de tweede parameter. |
com_ptr::com_ptr aannemer
Initialiseert een nieuw exemplaar van de com_ptr struct, eventueel met een kopie of verplaatsing van de invoergegevens.
De void* constructeur neemt een T* en neemt het eigendom over.
winrt::take_ownership_from_abi_t is een marker type dat expliciet maakt dat de verantwoordelijkheid voor het loslaten van deze pointer nu wordt overgedragen aan de com_ptr. De refcount hoeft niet precies 1 te zijn; Het zegt alleen dat de verantwoordelijkheid wordt overgedragen.
Syntaxis
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;
Sjabloonparameters
typename U Het doeltype waarnaar wordt verwezen door de slimme invoeraanwijzer.
Parameterwaarden
other Een andere com_ptr die het com_ptr object initialiseert. De T van de parameter moet kunnen worden omgezet in de T van het com_ptr object.
com_ptr::as functie
Retourneert de gevraagde interface, als deze wordt ondersteund. Worpen als dat niet het geval is. Deze functie is handig als u een query wilt uitvoeren op een interface die u niet hoeft door te geven aan uw beller.
Zie voor voorbeelden van codes de sectie Instantiëren en retourneren van geprojecteerde typen en interfaces, en andere secties in dat onderwerp.
Syntaxis
template <typename To> auto as() const;
template <typename To> void as(To& to) const;
Sjabloonparameters
typename To Het type van de opgevraagde interface.
Parameterwaarden
to Een verwijzing naar een waarde om de gevraagde interface te ontvangen.
Retourwaarde
Een com_ptr die verwijst naar de gevraagde interface, of een sterk getypeerde slimme aanwijzer voor de gevraagde interface (gedeclareerd door C++/WinRT of door een derde partij).
com_ptr::attach functie
Wordt gekoppeld aan een onbewerkte aanwijzer die een verwijzing naar het doel bezit; Een extra verwijzing wordt niet toegevoegd. Indien nodig kunt u deze functie gebruiken om verwijzingen samen te voegen.
Syntaxis
void attach(T* value) noexcept;
Parameterwaarden
value Een ruwe pointer die een verwijzing naar zijn doel bezit.
com_ptr::Capture-functie
Roept een opgegeven functie of methode aan (roept automatisch winrt::check_hresult aan) en legt de interfaceaanwijzer vast die wordt uitgevoerd door de functie of methode als een void**.
Zie ook het sjabloon voor de winrt::capture-functie.
Syntaxis
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);
Sjabloonparameters
typename F Een functie objecttype, zoals een vrije functie, of std::functie.
typename O Een interfacetype.
typename M Een methodetype.
typename Args Nul of meer argumenttypen.
Parameterwaarden
function Een functie object van het type F.
p Een aanwijzer naar een object van het type O.
object Een winrt::com_ptr van het type O.
method Een methode (geïmplementeerd door O) van het type M.
args Nul of meer argumenten van het type Args.
Opmerkingen
- De
capture(F function, Args&&...args)overbelasting roept het functieobject op. - De
capture(O* p, M method, Args&& ...args)overbelasting roept de methode op de aanwijzer op. - De
capture(winrt::com_ptr<O> const& object, M method, Args&&...args)overbelasting roept de methode op het object op.
Alle overbelastingen gaan door (naar de aanroeper) van alle aanvullende argumenten die u opgeeft. Alle overbelastingen geven ook de twee extra argumenten door die dergelijke aanroepen vereisen, met name een REFIID (de ID van het doel van de winrt::com_ptr) en een void** (het adres van een pointer naar het doel van de winrt::com_ptr).
Voorbeeld
winrt::com_ptr<IDXGIAdapter> adapter
...
winrt::com_ptr<IDXGIFactory2> factory;
factory.capture(adapter, &IDXGIAdapter::GetParent);
com_ptr::copy_from functie
Kopieën van een andere aanwijzer. Verlaagt het aantal verwijzingen op elke interface of object waarnaar momenteel wordt verwezen, kopieert de onbewerkte aanwijzerparameter en begint met het beheren van de levensduur van de interface of het object waarnaar wordt verwezen.
Syntaxis
void copy_from(T* other) noexcept;
Parameterwaarden
other Een onbewerkte aanwijzer naar een doel waarvan de levensduur moet worden beheerd door het com_ptr object.
com_ptr::copy_to functie
Kopieert naar een andere aanwijzer van het com_ptr object. Verhoogt het aantal verwijzingen op elke interface of object waarnaar momenteel wordt verwezen en kopieert het geheugenadres van die interface of dat object naar de parameter. Met deze functie kunt u een verwijzing naar dezelfde interface uitdelen zonder QueryInterface aan te roepen.
Syntaxis
void copy_to(T** other) const noexcept;
Parameterwaarden
other Het adres van een ruwe aanwijzer; waarin de aanwijzer naar het doel van het com_ptr object moet worden gekopieerd.
com_ptr::d etach functie
Koppelt zich los van de interface of het object waarnaar wordt verwezen zonder het aantal verwijzingen te verminderen, bijvoorbeeld om het terug te sturen naar een aanroeper.
Syntaxis
T* detach() noexcept;
Retourwaarde
Een aanwijzer naar de interface of het object waarnaar wordt verwezen door het com_ptr object.
com_ptr::get functie
Retourneert de onderliggende onbewerkte aanwijzer als u deze aan een functie moet doorgeven. U kunt AddRef, Release of QueryInterface aanroepen op de geretourneerde aanwijzer.
Syntaxis
T* get() const noexcept;
Retourwaarde
Een aanwijzer naar de interface of het object waarnaar wordt verwezen door het com_ptr object.
com_ptr::p ut functie
Retourneert het adres van de onderliggende onbewerkte aanwijzer die moet worden doorgegeven aan een functie die de waarde invult; met deze functie kunt u methoden (zoals COM-methoden) aanroepen die verwijzingen als out-parameters via een aanwijzer naar een aanwijzer retourneren.
Syntaxis
T** put() noexcept;
Retourwaarde
Het adres van de onderliggende onbewerkte aanwijzer.
com_ptr::p ut_void functie
Retourneert het adres van de onderliggende onbewerkte aanwijzer als een aanwijzer naar een aanwijzer om ongeldig te maken om deze door te geven aan een functie (zoals COM-methoden) die verwijzingen als out-parameters retourneert via een aanwijzer naar een aanwijzer om ongeldig te maken.
Syntaxis
void** put_void() noexcept;
Retourwaarde
Het adres van de onderliggende onbewerkte aanwijzer als een aanwijzer naar een aanwijzer om ongeldig te maken.
com_ptr::try_as functie
Retourneert de gevraagde interface, als deze wordt ondersteund. Retourneert nullptr (de auto-terugkerende overbelasting), of false (de bool-terugkerende overbelasting), als dit niet het geval is. Deze functie is handig als u een query wilt uitvoeren op een interface die u niet hoeft door te geven aan uw beller.
Syntaxis
template <typename To> auto try_as() const noexcept;
template <typename To> bool try_as(To& to) const noexcept;
Sjabloonparameters
typename To Het type van de opgevraagde interface.
Parameterwaarden
to Een verwijzing naar een waarde om de gevraagde interface te ontvangen.
Retourwaarde
Een com_ptr die verwijst naar de gevraagde interface, of een sterk getypeerde slimme aanwijzer voor de gevraagde interface (gedeclareerd door C++/WinRT of door een derde partij), als de gevraagde interface wordt ondersteund, anders nullptr (de auto-terugkerende overbelasting), of false (de bool-terugkerende overbelasting).
com_ptr::try_capture functie
Een versie van com_ptr::capture die niet op mislukking gooit, maar in plaats daarvan retourneert als het true succesvol is of false niet.
Zie ook het winrt::try_capture functie sjabloon.
com_ptr::operator bool
Hiermee wordt gecontroleerd of de slimme aanwijzer al dan niet verwijst naar een interface of object. Als de slimme aanwijzer niet verwijst naar een interface of object, dan is deze logischerwijs nul; Anders is het logischerwijs niet nul.
Syntaxis
explicit operator bool() const noexcept;
Retourwaarde
true als de slimme aanwijzer verwijst naar een interface of object (logisch niet null), anders false (logisch null).
com_ptr::operator* (indirection operator)
Retourneert een verwijzing naar het doel van de com_ptr, zodat u deze kunt doorgeven aan een functie die een verwijzing naar het doeltype T verwacht.
Syntaxis
T& operator*() const noexcept;
Retourwaarde
Een verwijzing naar het doel van de com_ptr.
com_ptr::operator= (toewijzing operator)
Wijst een waarde toe aan het com_ptr object.
Syntaxis
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;
Sjabloonparameters
typename U Het type waarnaar wordt verwezen door de waarde die wordt toegewezen.
Parameterwaarden
other Een com_ptr waarde die aan het com_ptr object moet worden toegewezen. De T van de parameter moet kunnen worden omgezet in de T van het com_ptr object.
Retourwaarde
Een verwijzing naar het com_ptr object.
com_ptr::operator-> (pijl operator)
Als u toegang wilt verlenen tot de interface waarnaar wordt verwezen of de methoden van het object, wordt de onderliggende onbewerkte aanwijzer geretourneerd. U mag AddRef of Release niet aanroepen op de geretourneerde aanwijzer, maar u kunt wel QueryInterface aanroepen.
Syntaxis
auto operator->() const noexcept;
Retourwaarde
Een aanwijzer naar de interface of het object waarnaar wordt verwezen door het com_ptr object.
attach_abi functie
Koppelt een com_ptr object aan een onbewerkte aanwijzer die een verwijzing naar het doel bezit; Een extra verwijzing wordt niet toegevoegd. Indien nodig kunt u deze functie gebruiken om verwijzingen samen te voegen.
Syntaxis
void attach_abi(winrt::com_ptr<T>& object, T* value) noexcept;
Parameterwaarden
object Een com_ptr object om aan te opereren.
value Een ruwe pointer die een verwijzing naar zijn doel bezit.
detach_abi functie
Koppelt een com_ptr object los van de onbewerkte interface zonder het aantal verwijzingen te verminderen, bijvoorbeeld om het terug te sturen naar een aanroeper.
Syntaxis
auto detach_abi(winrt::com_ptr<T>& object) noexcept;
Parameterwaarden
object Een com_ptr object om aan te opereren.
Retourwaarde
Een aanwijzer naar de onbewerkte interface waarnaar wordt verwezen door het com_ptr object.
operator!= (operator ongelijkheid)
Geeft een waarde terug die aangeeft of de twee parameters naar verschillende doelen verwijzen.
Syntaxis
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;
Parameterwaarden
left
right Een com_ptr waarde waarvan het geheugenadres van het doel moet worden vergeleken met dat van de andere parameter.
Retourwaarde
true Als de twee parameters naar verschillende doelen verwijzen, anders false.
operator< (minder dan operator)
Geeft een waarde terug die aangeeft of het doel van de eerste parameter eerder in het geheugen voorkomt dan dat van de tweede parameter.
Syntaxis
template <typename T> bool operator<(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parameterwaarden
left
right Een com_ptr waarde waarvan het geheugenadres van het doel moet worden vergeleken met dat van de andere parameter.
Retourwaarde
true Als het geheugenadres van het doel van de eerste parameter kleiner is dan dat van de tweede parameter, anders false.
operator<= (klein-dan-of-gelijk-aan-operator)
Geeft een waarde terug die aangeeft of het doel van de eerste parameter eerder in het geheugen voorkomt dan of op dezelfde locatie als die van de tweede parameter.
Syntaxis
template <typename T> bool operator<=(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parameterwaarden
left
right Een com_ptr waarde waarvan het geheugenadres van het doel moet worden vergeleken met dat van de andere parameter.
Retourwaarde
true als het geheugenadres van het doel van de eerste parameter kleiner is dan of gelijk is aan dat van de tweede parameter, anders false.
operator== (gelijke operator)
Retourneert een waarde die aangeeft of de twee parameters naar dezelfde interface en/of hetzelfde object verwijzen.
Syntaxis
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;
Parameterwaarden
left
right Een com_ptr waarde waarvan het geheugenadres van het doel moet worden vergeleken met dat van de andere parameter.
Retourwaarde
true Als de twee parameters naar hetzelfde doel verwijzen, anders false.
operator> (groter-dan operator)
Geeft een waarde terug die aangeeft of het doel van de eerste parameter later in het geheugen voorkomt dan dat van de tweede parameter.
Syntaxis
template <typename T> bool operator>(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parameterwaarden
left
right Een com_ptr waarde waarvan het geheugenadres van het doel moet worden vergeleken met dat van de andere parameter.
Retourwaarde
true Als het geheugenadres van het doel van de eerste parameter groter is dan dat van de tweede parameter, anders false.
operator>= (groter-dan-of-gelijk-aan-operator)
Geeft een waarde terug die aangeeft of het doel van de eerste parameter later in het geheugen voorkomt dan of op dezelfde locatie als die van de tweede parameter.
Syntaxis
template <typename T> bool operator>=(winrt::com_ptr<T> const& left, winrt::com_ptr<T> const& right) noexcept;
Parameterwaarden
left
right Een com_ptr waarde waarvan het geheugenadres van het doel moet worden vergeleken met dat van de andere parameter.
Retourwaarde
true als het geheugenadres van het doel van de eerste parameter groter is dan of gelijk is aan dat van de tweede parameter, anders false.
Wissel functie
Verwisselt de inhoud van de twee com_ptr parameters zodat ze naar elkaars doel wijzen.
Syntaxis
void swap(winrt::com_ptr& left, winrt::com_ptr& right) noexcept;
Parameterwaarden
left
right Een com_ptr waarde waarvan de aanwijzer onderling wordt verwisseld met die van de andere parameter.