Compartilhar via


winrt::Windows::Foundation::IUnknown struct (C++/WinRT)

Every C++/WinRT runtime class (whether a Windows or a third party runtime class) derives from winrt::Windows::Foundation::IUnknown. It represents the COM IUnknown interface, and it provides facilities such as querying for a different interface, abi functions, and comparison operators.

Syntax

struct IUnknown

Requirements

SDK mínimo suportado: SDK do Windows versão 10.0.17134.0 (Windows 10, versão 1803)

Namespace: winrt

Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (included by default)

Constructors

Constructor Description
IUnknown::IUnknown constructor Initializes a new instance of the IUnknown struct, optionally with a copy or move of the input data.

Member functions

Function Description
IUnknown::as function Solicita uma interface, lançando se não houver suporte.
IUnknown::try_as function Solicita uma interface, produzindo null se não houver suporte.
IUnknown::try_as_with_reason function Solicita uma interface, relatando o motivo se ela não tiver suporte.

Member operators

Operator Description
IUnknown::operator bool Checks whether or not the IUnknown object is referencing an interface.
IUnknown::operator= (operador de atribuição) Assigns a value to the IUnknown object.

Free functions

Function Description
attach_abi function Attaches an IUnknown object to a raw pointer that owns a reference to its target; an additional reference is not added.
copy_from_abi function Copies to an IUnknown object from another pointer. Diminui a contagem de referência em qualquer interface ou objeto referenciado no momento, copia o parâmetro de ponteiro bruto e começa a gerenciar o tempo de vida da interface ou objeto apontado por ele.
copy_to_abi function Copies to another pointer from an IUnknown object. Incrementa a contagem de referência em qualquer interface ou objeto referenciado no momento e copia o endereço de memória da interface ou do objeto para o parâmetro.
detach_abi function Detaches from the raw IUnknown interface without decrementing the reference count, perhaps to return it to a caller.
get_abi function Returns the underlying raw IUnknown interface pointer should you need to pass it to a function.
get_unknown function A helper function that returns the address of the underlying raw IUnknown interface of an object of a projected type.
put_abi function Returns the address of the underlying raw IUnknown interface pointer as a pointer to a pointer to void; this function helps you call methods (such as COM methods) that return references as out parameters via a pointer to a pointer to void.
swap function Swaps the contents of the two IUnknown parameters so that they point at one another's target.

Free operators

Function Description
operador!= (operador de desigualdade) Retorna um valor que indica se os dois parâmetros se referem a destinos diferentes.
Operador< (operador menor) Retorna um valor que indica se o destino do primeiro parâmetro ocorre anteriormente na memória do que o do segundo parâmetro.
operator<= (operador menor ou igual a) Retorna um valor que indica se o destino do primeiro parâmetro ocorre anteriormente na memória ou no mesmo local que o do segundo parâmetro.
operador== (operador de igualdade) Retorna um valor que indica se os dois parâmetros se referem à mesma interface e/ou objeto.
operador> (operador maior que) Retorna um valor que indica se o destino do primeiro parâmetro ocorre mais tarde na memória do que o do segundo parâmetro.
operator>= (operador maior ou igual a) Retorna um valor que indica se o destino do primeiro parâmetro ocorre mais tarde na memória ou no mesmo local que o do segundo parâmetro.

IUnknown::IUnknown constructor

Initializes a new instance of the IUnknown struct, optionally with a copy or move of the input data.

Syntax

IUnknown() noexcept;
IUnknown(std::nullptr_t) noexcept;
IUnknown(winrt::Windows::Foundation::IUnknown const& other) noexcept;
IUnknown(winrt::Windows::Foundation::IUnknown&& other) noexcept;

Parameters

other Another IUnknown that initializes the IUnknown object.

IUnknown::as function

Solicita a interface especificada do IUnknown. Gerará se a interface não tiver suporte. Use esse método se você espera que a interface tenha suporte.

Syntax

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

Template parameters

typename To Um tipo que descreve a interface solicitada. Esse tipo pode ser um nome de interface C++/WinRT ou um nome de classe de runtime C++/WinRT.

Para a autosobrecarga -returning, o tipo também pode ser uma interface COM clássica.

Para a voidsobrecarga -returning, o tipo também pode ser com_ptr<I> onde I está uma interface COM clássica.

Parameters

to Uma referência a um valor para receber a interface solicitada.

Return value

A autosobrecarga de retorno retorna a interface solicitada, na forma de To se for uma interface C++/WinRT ou um nome de classe de runtime ou na forma de com_ptr<To> se To for uma interface COM clássica.

Se estiver IUnknownnull, a autosobrecarga retornada retornará nulle o voidconjunto de sobrecarga tonullde retorno será .

Se não IUnknown for,null mas a interface não puder ser obtida, o método será gerado.

IUnknown::try_as function

Solicita a interface especificada do IUnknown. null Produzirá se a interface não tiver suporte.

Syntax

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

Template parameters

typename To Um tipo que descreve a interface solicitada. Esse tipo pode ser um nome de interface C++/WinRT ou um nome de classe de runtime C++/WinRT.

Para a autosobrecarga -returning, o tipo também pode ser uma interface COM clássica.

Para a boolsobrecarga -returning, o tipo também pode ser com_ptr<I> onde I está uma interface COM clássica.

Parameters

to Uma referência a um valor para receber a interface solicitada.

Return value

A autosobrecarga de retorno retorna a interface solicitada, na forma de To se for uma interface C++/WinRT ou um nome de classe de runtime ou na forma de com_ptr<To> se To for uma interface COM clássica.

Se a IUnknown interface não puder null ser obtida ou se a interface não puder ser obtida, a autosobrecarga retornada retornará nulle o bool-retornando conjuntos to de sobrecarga para null.

A bool sobrecarga retornada retornará true se o valor retornado não to fornull e false se for null.

IUnknown::try_as_with_reason function

Retorna a interface solicitada, se houver suporte, e relatará o motivo se ela não tiver suporte.

Syntax

template <typename To> auto try_as_with_reason(winrt::hresult& reason) const noexcept;

Template parameters

typename To Um tipo que descreve a interface solicitada. Esse tipo pode ser um nome de interface C++/WinRT, um nome de classe de runtime C++/WinRT ou uma interface COM clássica.

Parameters

reason Recebe o winrt::hresult que descreve o resultado da consulta.

Return value

Retorna a interface solicitada, na forma de To se for uma interface C++/WinRT ou um nome de classe de runtime ou na forma de com_ptr<To> se To for uma interface COM clássica.

Se for IUnknownnull ou se a interface não puder ser obtida, o método retornará null.

Remarks

Esse método está disponível a partir do C++/WinRT versão 2.0.250303.1.

Se estiver IUnknownnull, o método retornará null e definirá como reasonS_OK.

Se não IUnknown fornull, o método retornará o resultado da consulta e receberá o reasonwinrt::hresult produzido pela consulta.

IUnknown::operator bool

Checks whether or not the IUnknown object is referencing an interface. If the IUnknown object is not referencing an interface, then it is logically null; otherwise it is logically not null.

Syntax

explicit operator bool() const noexcept;

Return value

true if the IUnknown object is referencing an interface (logically not null), otherwise false (logically null).

IUnknown::operator= (operador de atribuição)

Assigns a value to the IUnknown object.

Syntax

winrt::Windows::Foundation::IUnknown& operator=(winrt::Windows::Foundation::IUnknown const& other) noexcept;
winrt::Windows::Foundation::IUnknown& operator=(winrt::Windows::Foundation::IUnknown&& other) noexcept;
winrt::Windows::Foundation::IUnknown& operator=(std::nullptr_t) noexcept;

Parameters

other An IUnknown value to assign to the IUnknown object, either by copy or by move.

Return value

A reference to the IUnknown object.

attach_abi function

Attaches an IUnknown object to a raw pointer that owns a reference to its target; an additional reference is not added. Se necessário, você pode usar essa função para unir referências.

Syntax

void attach_abi(winrt::Windows::Foundation::IUnknown& object, void* value) noexcept;

Parameters

object An IUnknown value to operate on.

value Um ponteiro bruto que possui uma referência ao seu destino.

copy_from_abi function

Copies to an IUnknown object from another pointer. Diminui a contagem de referência em qualquer interface ou objeto referenciado no momento, copia o parâmetro de ponteiro bruto e começa a gerenciar o tempo de vida da interface ou objeto apontado por ele.

Syntax

void copy_from_abi(winrt::Windows::Foundation::IUnknown& object, void* value) noexcept;

Parameters

object An IUnknown value to operate on.

value A raw pointer to a target whose lifetime should be managed by the IUnknown object.

copy_to_abi function

Copies to another pointer from an IUnknown object. Incrementa a contagem de referência em qualquer interface ou objeto referenciado no momento e copia o endereço de memória da interface ou do objeto para o parâmetro. This function lets you hand out a reference to the same interface without calling QueryInterface.

Syntax

void copy_to_abi(winrt::Windows::Foundation::IUnknown const& object, void*& value) noexcept;

Parameters

object An IUnknown value to operate on.

value A raw pointer reference; via which to copy the pointer to the IUnknown object's target.

detach_abi function

Detaches an IUnknown object from its raw IUnknown interface without decrementing the reference count, perhaps to return it to a caller.

Syntax

void* detach_abi(winrt::Windows::Foundation::IUnknown& object) noexcept;
void* detach_abi(winrt::Windows::Foundation::IUnknown&& object) noexcept;

Parameters

object An IUnknown value to operate on.

Return value

A pointer to the raw IUnknown interface referenced by the IUnknown object.

get_abi function

Returns the underlying raw IUnknown interface pointer should you need to pass it to a function. You may call AddRef, Release, or QueryInterface on the returned pointer.

Syntax

void* get_abi(winrt::Windows::Foundation::IUnknown const& object) noexcept;

Parameters

object An IUnknown value to operate on.

Return value

A pointer to the raw IUnknown interface referenced by the IUnknown object.

operator!= (operador de desigualdade)

Retorna um valor que indica se os dois parâmetros se referem a destinos diferentes.

Syntax

bool operator!=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

Parameters

left right An IUnknown value whose target's memory address to compare with that of the other parameter.

Return value

true se os dois parâmetros apontarem para alvos diferentes, caso contrário false.

Operador< (operador menor)

Retorna um valor que indica se o destino do primeiro parâmetro ocorre anteriormente na memória do que o do segundo parâmetro.

Syntax

bool operator<(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

Parameters

left right An IUnknown value whose target's memory address to compare with that of the other parameter.

Return value

true se o endereço de memória do alvo do primeiro parâmetro for menor que o do segundo parâmetro, caso contrário false.

operator<= (operador menor ou igual a)

Retorna um valor que indica se o destino do primeiro parâmetro ocorre anteriormente na memória ou no mesmo local que o do segundo parâmetro.

Syntax

bool operator<=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

Parameters

left right An IUnknown value whose target's memory address to compare with that of the other parameter.

Return value

true se o endereço de memória do alvo do primeiro parâmetro for menor ou igual ao do segundo parâmetro, caso contrário false, .

operator== (operador de igualdade)

Retorna um valor que indica se os dois parâmetros se referem à mesma interface e/ou objeto.

Syntax

bool operator==(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

Parameters

left right An IUnknown value whose target's memory address to compare with that of the other parameter.

Return value

true se os dois parâmetros apontarem para o mesmo destino, caso contrário false.

operador> (operador maior que)

Retorna um valor que indica se o destino do primeiro parâmetro ocorre mais tarde na memória do que o do segundo parâmetro.

Syntax

bool operator>(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

Parameters

left right An IUnknown value whose target's memory address to compare with that of the other parameter.

Return value

true se o endereço de memória do alvo do primeiro parâmetro for maior que o do segundo parâmetro, caso contrário false.

operator>= (operador maior ou igual a)

Retorna um valor que indica se o destino do primeiro parâmetro ocorre mais tarde na memória ou no mesmo local que o do segundo parâmetro.

Syntax

bool operator>=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

Parameters

left right An IUnknown value whose target's memory address to compare with that of the other parameter.

Return value

true Se o endereço de memória do alvo do primeiro parâmetro for maior ou igual ao do segundo parâmetro, caso contrário false, .

put_abi function

Returns the address of the underlying raw IUnknown interface pointer as a pointer to a pointer to void; this function helps you call methods (such as COM methods) that return references as out parameters via a pointer to a pointer to void.

Syntax

void** put_abi(winrt::Windows::Foundation::IUnknown& object) noexcept;

Parameters

object An IUnknown value to operate on.

Return value

The address of the underlying raw IUnknown interface pointer.

swap function

Swaps the contents of the two IUnknown parameters so that they point at one another's target.

Syntax

void swap(winrt::Windows::Foundation::IUnknown& left, winrt::Windows::Foundation::IUnknown& right) noexcept;

Parameters

left right An IUnknown value whose pointer to mutually swap with that of the other parameter.

See also