структура 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
является пустой ссылкой, возвращает или null
false
.
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;
Параметры
left
right
Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.
Возвращаемое значение
true
Значение , если два параметра указывают на разные целевые объекты; в противном случае — false
значение .
оператор< (оператор меньше)
Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти раньше, чем у второго параметра.
Синтаксис
bool operator<(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
left
right
Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.
Возвращаемое значение
true
Значение , если адрес памяти целевого объекта первого параметра меньше адреса памяти второго параметра, в противном случае — false
значение .
operator<= (оператор меньше или равно)
Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти раньше или в том же расположении, что и для второго параметра.
Синтаксис
bool operator<=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
left
right
Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.
Возвращаемое значение
true
Значение , если адрес памяти целевого объекта первого параметра меньше или равен адресу памяти второго параметра; в противном случае — false
значение .
operator== (оператор равенства)
Возвращает значение, указывающее, ссылаются ли два параметра на один и тот же интерфейс и (или) объект .
Синтаксис
bool operator==(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
left
right
Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.
Возвращаемое значение
true
Значение , если два параметра указывают на один и тот же целевой объект; в противном случае — false
значение .
оператор> (оператор больше)
Возвращает значение, указывающее, находится ли целевой объект первого параметра в памяти позже, чем целевой объект второго параметра.
Синтаксис
bool operator>(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
left
right
Значение IUnknown , адрес памяти которого целевого объекта сравнивает с адресом другого параметра.
Возвращаемое значение
true
Значение , если адрес памяти целевого параметра первого параметра больше, чем адрес памяти второго параметра, в противном случае — false
значение .
operator>= (оператор больше или равно)
Возвращает значение, указывающее, находится ли целевой объект первого параметра позже в памяти или в том же расположении, что и у второго параметра.
Синтаксис
bool operator>=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
left
right
Значение 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;
Параметры
left
right
Значение IUnknown , указатель которого на взаимное переключение с указателем другого параметра.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по