структура winrt::Windows::Foundation::IUnknown (C++/WinRT)

Каждый класс среды выполнения C++/WinRT (класс среды выполнения Windows или стороннего производителя) является производным от winrt::Windows::Foundation::IUnknown. Он представляет интерфейс COM IUnknown и предоставляет такие возможности, как запросы для другого интерфейса, функции abi и операторы сравнения.

Синтаксис

struct IUnknown

Требования

Минимальный поддерживаемый пакет SDK: Windows SDK версии 10.0.17134.0 (Windows 10, версия 1803)

Пространство имен: winrt

Заголовок: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (включен по умолчанию)

Конструкторы

Конструктор Описание
Конструктор IUnknown::IUnknown Инициализирует новый экземпляр структуры IUnknown , при необходимости с копированием или перемещением входных данных.

Функции элементов

Функция Описание
Функция IUnknown::as Возвращает запрошенный интерфейс, если он поддерживается. Выдает, если это не так.
Функция IUnknown::try_as Возвращает запрошенный интерфейс, если он поддерживается. Возвращает null, или false, если это не так.

Операторы-члены

Оператор Описание
IUnknown::operator bool Проверяет, ссылается ли объект IUnknown на интерфейс.
IUnknown::operator= (оператор присваивания) Присваивает значение объекту IUnknown .

Бесплатные функции

Функция Описание
Функция attach_abi Присоединяет объект IUnknown к необработанму указателю, которому принадлежит ссылка на его целевой объект; дополнительная ссылка не добавляется.
Функция copy_from_abi Копирует объект IUnknown из другого указателя. Уменьшает количество ссылок на любой текущий интерфейс или объект, на который ссылается в данный момент, копирует необработанный параметр указателя и начинает управлять временем существования интерфейса или объекта, на который он указывает.
Функция copy_to_abi Копирует в другой указатель из объекта IUnknown . Увеличивает количество ссылок на любой интерфейс или объект, на который ссылается в данный момент, и копирует адрес памяти этого интерфейса или объекта в параметр .
Функция detach_abi Отсоединяется от необработанного интерфейса IUnknown без уменьшения количества ссылок, возможно, чтобы вернуть его вызывающему объекту.
функция get_abi Возвращает базовый необработанный указатель интерфейса IUnknown , если необходимо передать его в функцию.
Функция get_unknown Вспомогающая функция, возвращающая адрес базового необработанного интерфейса IUnknown объекта проецируемого типа.
функция put_abi Возвращает адрес базового необработанного указателя интерфейса IUnknown в виде указателя на void; Эта функция помогает вызывать методы (например, com-методы), возвращающие ссылки в качестве параметров выхода с помощью указателя на void.
Функция swap Переключает содержимое двух параметров IUnknown так, чтобы они указывали друг на друга.

Бесплатные операторы

Функция Описание
operator!= (оператор неравенства) Возвращает значение, указывающее, ссылаются ли два параметра на разные целевые объекты.
operator< (оператор "меньше") Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти раньше, чем у второго параметра.
operator<= (оператор меньше или равно) Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти раньше или находится в том же расположении, что и у второго параметра.
operator== (оператор равенства) Возвращает значение, указывающее, ссылаются ли два параметра на один и тот же интерфейс и (или) объект .
operator> (оператор больше) Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти позже, чем у второго параметра.
operator>= (оператор больше или равно) Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти позже или в том же расположении, что и у второго параметра.

Конструктор IUnknown::IUnknown

Инициализирует новый экземпляр структуры IUnknown , при необходимости с копированием или перемещением входных данных.

Синтаксис

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

Параметры

other Другой объект IUnknown , который инициализирует объект IUnknown .

Функция IUnknown::as

Возвращает запрошенный интерфейс, если он поддерживается. Выдает, если это не так. Эта функция полезна, если вы хотите запросить интерфейс, который не нужно передавать обратно вызывающей стороне.

Синтаксис

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

Параметры шаблона

typename To Тип запрошенного интерфейса.

Параметры

to Ссылка на значение для получения запрошенного интерфейса.

Возвращаемое значение

Com_ptr, ссылающийся на запрошенный интерфейс, или строго типизированный интеллектуальный указатель для запрошенного интерфейса (объявленный C++/WinRT или сторонним поставщиком).

Функция IUnknown::try_as

Возвращает запрошенный интерфейс, если он поддерживается. Возвращает null ( auto-returning overload) или false ( bool-returning overload), если это не так. Эта функция полезна, если вы хотите запросить интерфейс, который не нужно передавать обратно вызывающей стороне.

Синтаксис

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

Параметры шаблона

typename To Тип запрошенного интерфейса.

Параметры

to Ссылка на значение для получения запрошенного интерфейса. Может быть пустой ссылкой.

Возвращаемое значение

Com_ptr, ссылающийся на запрошенный интерфейс, или строго типизированный интеллектуальный указатель для запрошенного интерфейса (объявленный C++/WinRT или третьей стороной), если запрошенный интерфейс поддерживается, в противном случае null (autoперегрузка-returning) или false (перегрузка-returningbool).

Если to является пустой ссылкой, возвращает или nullfalse.

IUnknown::operator bool

Проверяет, ссылается ли объект IUnknown на интерфейс. Если объект IUnknown не ссылается на интерфейс, то логически он имеет значение NULL; в противном случае логически не равно NULL.

Синтаксис

explicit operator bool() const noexcept;

Возвращаемое значение

true Значение , если объект IUnknown ссылается на интерфейс (логически не null), в противном случае false — (логически null).

IUnknown::operator= (оператор присваивания)

Присваивает значение объекту IUnknown .

Синтаксис

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;

Параметры

other Значение IUnknown , присваиваемое объекту IUnknown путем копирования или перемещения.

Возвращаемое значение

Ссылка на объект IUnknown .

Функция attach_abi

Присоединяет объект IUnknown к необработанму указателю, которому принадлежит ссылка на его целевой объект; дополнительная ссылка не добавляется. При необходимости эту функцию можно использовать для объединения ссылок.

Синтаксис

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

Параметры

object Значение IUnknown для работы.

value Необработанный указатель, которому принадлежит ссылка на целевой объект.

Функция copy_from_abi

Копирует объект IUnknown из другого указателя. Уменьшает количество ссылок на любой текущий интерфейс или объект, на который ссылается в данный момент, копирует необработанный параметр указателя и начинает управление временем существования интерфейса или объекта, на который он указывает.

Синтаксис

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

Параметры

object Значение IUnknown для работы.

value Необработанный указатель на целевой объект, жизненным циклом которого должен управлять объект IUnknown .

Функция copy_to_abi

Копирует в другой указатель из объекта IUnknown . Увеличивает количество ссылок на любой текущий интерфейс или объект, на который ссылается в данный момент, и копирует адрес памяти этого интерфейса или объекта в параметр . Эта функция позволяет раздавать ссылку на тот же интерфейс без вызова QueryInterface.

Синтаксис

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

Параметры

object Значение IUnknown для работы.

value Ссылка на необработанный указатель; для копирования указателя на целевой объект IUnknown .

Функция detach_abi

Отсоединяет объект IUnknown от его необработанного интерфейса IUnknown без уменьшения количества ссылок, возможно, для возврата его вызывающему объекту.

Синтаксис

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

Параметры

object Значение IUnknown для работы.

Возвращаемое значение

Указатель на необработанный интерфейс IUnknown , на который ссылается объект IUnknown .

функция get_abi

Возвращает базовый необработанный указатель интерфейса IUnknown , если необходимо передать его в функцию. Для возвращаемого указателя можно вызвать Метод AddRef, Release или QueryInterface .

Синтаксис

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

Параметры

object Значение IUnknown для работы.

Возвращаемое значение

Указатель на необработанный интерфейс IUnknown , на который ссылается объект IUnknown .

operator!= (оператор неравенства)

Возвращает значение, указывающее, относятся ли два параметра к разным целевым объектам.

Синтаксис

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

Параметры

leftright Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.

Возвращаемое значение

true Значение , если два параметра указывают на разные целевые объекты; в противном случае — falseзначение .

оператор< (оператор меньше)

Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти раньше, чем у второго параметра.

Синтаксис

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

Параметры

leftright Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.

Возвращаемое значение

true Значение , если адрес памяти целевого объекта первого параметра меньше адреса памяти второго параметра, в противном случае — falseзначение .

operator<= (оператор меньше или равно)

Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти раньше или в том же расположении, что и для второго параметра.

Синтаксис

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

Параметры

leftright Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.

Возвращаемое значение

true Значение , если адрес памяти целевого объекта первого параметра меньше или равен адресу памяти второго параметра; в противном случае — falseзначение .

operator== (оператор равенства)

Возвращает значение, указывающее, ссылаются ли два параметра на один и тот же интерфейс и (или) объект .

Синтаксис

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

Параметры

leftright Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.

Возвращаемое значение

true Значение , если два параметра указывают на один и тот же целевой объект; в противном случае — falseзначение .

оператор> (оператор больше)

Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти позже, чем целевой объект второго параметра.

Синтаксис

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

Параметры

leftright Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.

Возвращаемое значение

true Значение , если адрес памяти целевого параметра первого параметра больше, чем адрес памяти второго параметра, в противном случае — falseзначение .

operator>= (оператор больше или равно)

Возвращает значение, указывающее, находится ли целевой объект первого параметра позже в памяти или в том же расположении, что и у второго параметра.

Синтаксис

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

Параметры

leftright Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.

Возвращаемое значение

true Значение , если адрес памяти целевого параметра первого параметра больше или равен адресу памяти второго параметра; в противном случае — falseзначение .

функция put_abi

Возвращает адрес базового необработанного указателя интерфейса IUnknown в виде указателя на void; Эта функция помогает вызывать методы (например, com-методы), возвращающие ссылки в качестве параметров out через указатель на void.

Синтаксис

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

Параметры

object Значение IUnknown для работы.

Возвращаемое значение

Адрес базового указателя необработанного интерфейса IUnknown .

Функция swap

Переключает содержимое двух параметров IUnknown таким образом, чтобы они указывали друг на друга.

Синтаксис

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

Параметры

leftright Значение IUnknown , указатель которого на взаимное переключение с указателем другого параметра.

См. также раздел