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

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

Синтаксис

struct IUnknown

Требования

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

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

Заголовок: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\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 в качестве указателя на указатель на пустой; эта функция помогает вызывать методы (например, com-методы), возвращающие ссылки в качестве параметров из указателя на указатель на пустой.
Функция swap Переключает содержимое двух параметров IUnknown таким образом, чтобы они указывали на целевой объект друг друга.

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

Функция Описание
operator!= (оператор неравенства) Возвращает значение, указывающее, ссылаются ли два параметра на разные целевые объекты.
operator< (оператор less-than) Возвращает значение, указывающее, происходит ли целевой объект первого параметра ранее в памяти, чем второй параметр.
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возвращающую перегрузку) или false ( boolвозвращающую перегрузку), если она отсутствует. Эта функция полезна, если вы хотите запросить интерфейс, который не нужно передавать вызывающей стороне.

Синтаксис

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возвращающая перегрузка) или false (boolвозвращающая перегрузка).

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.

оператор< (оператор less-than)

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

Синтаксис

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 в качестве указателя на пустой указатель; эта функция помогает вызывать методы (например, методы COM), возвращающие ссылки в качестве параметров из указателя на указатель на 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 , указатель которого на взаимное переключение с другим параметром.

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