Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
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: Windows SDK версии 10.0.17134.0 (Windows 10, версия 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 | Запрашивает интерфейс, вызывая, если он не поддерживается. |
| IUnknown::try_as function | Запрашивает интерфейс, создающий null , если он не поддерживается. |
| IUnknown::try_as_with_reason function | Запрашивает интерфейс, сообщая причину, если она не поддерживается. |
Member operators
| Operator | Description |
|---|---|
| IUnknown::operator bool | Checks whether or not the IUnknown object is referencing an interface. |
| IUnknown::operator= (оператор назначения) | 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. Уменьшает количество ссылок на любой указанный в данный момент интерфейсе или объекте, копирует необработанный параметр указателя и начинает управлять временем существования интерфейса или объекта, на который он указывает. |
| copy_to_abi function | Copies to another pointer from an IUnknown object. Увеличивает количество ссылок на любой указанный в данный момент интерфейсе или объекте и копирует адрес памяти интерфейса или объекта в параметр. |
| 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 |
|---|---|
| operator!= (оператор неравенства) | Возвращает значение, указывающее, относятся ли два параметра к разным целевым объектам. |
| operator< (оператор меньше) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем второй параметр. |
| operator<= (оператор меньше-или-равно-кому) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем в том же расположении, что и второй параметр. |
| operator== (оператор равенства) | Возвращает значение, указывающее, относятся ли два параметра к одному интерфейсу и /или объекту. |
| operator> (оператор больше) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем второй параметр. |
| operator>= (оператор больше, чем или равно) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем в том же расположении, что и второй параметр. |
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
Запрашивает указанный интерфейс из .IUnknown Вызывает, если интерфейс не поддерживается. Используйте этот метод, если вы ожидаете, что интерфейс будет поддерживаться.
Syntax
template <typename To> auto as() const;
template <typename To> void as(To& to) const;
Template parameters
typename To Тип, описывающий запрошенный интерфейс.
Этот тип может быть именем интерфейса C++/WinRT или именем класса среды выполнения C++/WinRT.
autoДля возвращаемой перегрузки тип также может быть классическим COM-интерфейсом.
voidДля возвращаемой перегрузки тип также может находиться com_ptr<I>I в классическом COM-интерфейсе.
Parameters
to Ссылка на значение для получения запрошенного интерфейса.
Return value
Возвращаемая autoперегрузка возвращает запрошенный интерфейс в виде To интерфейса C++/WinRT или имени класса среды выполнения или в виде com_ptr<To>To классического COM-интерфейса.
IUnknown Если задано nullзначение, autoвозвращается возвращаемая nullперегрузка и voidвозвращается возвращаемый набор перегрузкиnullto.
Если интерфейс IUnknown недоступен,null но не может быть получен, метод вызывается.
IUnknown::try_as function
Запрашивает указанный интерфейс из .IUnknown Создает, null если интерфейс не поддерживается.
Syntax
template <typename To> auto try_as() const noexcept;
template <typename To> bool try_as(To& to) const noexcept;
Template parameters
typename To Тип, описывающий запрошенный интерфейс.
Этот тип может быть именем интерфейса C++/WinRT или именем класса среды выполнения C++/WinRT.
autoДля возвращаемой перегрузки тип также может быть классическим COM-интерфейсом.
boolДля возвращаемой перегрузки тип также может находиться com_ptr<I>I в классическом COM-интерфейсе.
Parameters
to Ссылка на значение для получения запрошенного интерфейса.
Return value
Возвращаемая autoперегрузка возвращает запрошенный интерфейс в виде To интерфейса C++/WinRT или имени класса среды выполнения или в виде com_ptr<To>To классического COM-интерфейса.
IUnknown
null Если интерфейс недоступен, autoвозвращается возвращаемая перегрузка, а boolтакже возвращаемые nullнаборы tonullперегрузки.
Возвращаемая перегрузка возвращаетсяtrue, если возвращаемое to значение не являетсяnull и false если оно естьnull.bool
IUnknown::try_as_with_reason function
Возвращает запрошенный интерфейс, если он поддерживается, и сообщает причину, если она не поддерживается.
Syntax
template <typename To> auto try_as_with_reason(winrt::hresult& reason) const noexcept;
Template parameters
typename To Тип, описывающий запрошенный интерфейс.
Этот тип может быть именем интерфейса C++/WinRT, именем класса среды выполнения C++/WinRT или классическим com-интерфейсом.
Parameters
reason Получает результат winrt::hresult запроса.
Return value
Возвращает запрошенный интерфейс, в виде To , если это интерфейс C++/WinRT или имя класса среды выполнения, или в виде com_ptr<To>To классического COM-интерфейса.
IUnknown
null Если интерфейс недоступен, метод возвращаетсяnull.
Remarks
Этот метод доступен начиная с C++/WinRT версии 2.0.250303.1.
Если задано nullIUnknown значение, метод возвращает null и задает значение reasonS_OK.
Если метод IUnknown не являетсяnull, метод возвращает результат запроса и reason получает winrt::hresult созданный запрос.
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= (оператор назначения)
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. При необходимости эту функцию можно использовать для объединения ссылок.
Syntax
void attach_abi(winrt::Windows::Foundation::IUnknown& object, void* value) noexcept;
Parameters
object An IUnknown value to operate on.
value Необработанный указатель, которому принадлежит ссылка на свою цель.
copy_from_abi function
Copies to an IUnknown object from another pointer. Уменьшает количество ссылок на любой указанный в данный момент интерфейсе или объекте, копирует необработанный параметр указателя и начинает управлять временем существования интерфейса или объекта, на который он указывает.
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. Увеличивает количество ссылок на любой указанный в данный момент интерфейсе или объекте и копирует адрес памяти интерфейса или объекта в параметр. 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!= (оператор неравенства)
Возвращает значение, указывающее, относятся ли два параметра к разным целевым объектам.
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 если два параметра указывают на разные цели, в противном случае false.
operator< (оператор меньше)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем второй параметр.
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 если адрес памяти целевого объекта первого параметра меньше, чем у второго параметра, в противном случае false.
operator<= (оператор меньше-или-равно-кому)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем в том же расположении, что и второй параметр.
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 Если адрес памяти целевого объекта первого параметра меньше или равен адресу памяти второго параметра, в противном случае false.
operator== (оператор равенства)
Возвращает значение, указывающее, относятся ли два параметра к одному интерфейсу и /или объекту.
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 если два параметра указывают на одну и ту же цель, в противном случае false.
operator> (оператор больше)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем второй параметр.
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 Если адрес памяти цели первого параметра больше, чем адрес памяти второго параметра, в противном случае false.
operator>= (оператор больше, чем или равно)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем в том же расположении, что и второй параметр.
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 Если адрес памяти цели первого параметра больше или равен адресу памяти второго параметра, в противном случае 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.