winrt::Windows::Foundation::IUnknown struct (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 function | Возвращает запрошенный интерфейс, если он поддерживается. Бросает, если это не так. |
|
Возвращает запрошенный интерфейс, если он поддерживается. Возвращает null или false , если это не так. |
Операторы-члены
Оператор | Описание |
---|---|
IUnknown::operator bool | Проверяет, ссылается ли объект IUnknown на интерфейс. |
IUnknown::operator= (оператор назначения) | Назначает значение объекту IUnknown. |
Бесплатные функции
Функция | Описание |
---|---|
attach_abi функции | Присоединяет объект IUnknown к необработанному указателю, которому принадлежит ссылка на его целевой объект; Дополнительная ссылка не добавляется. |
функция copy_from_abi | Копирует в объект IUnknown из другого указателя. Уменьшает количество ссылок на любой указанный в данный момент интерфейсе или объекте, копирует необработанный параметр указателя и начинает управлять временем существования интерфейса или объекта, на который он указывает. |
copy_to_abi функции | Копируется в другой указатель из объекта IUnknown. Увеличивает количество ссылок на любой указанный в данный момент интерфейсе или объекте и копирует адрес памяти интерфейса или объекта в параметр. |
detach_abi функции | Отключает от необработанного интерфейса IUnknown без уменьшения количества ссылок, возможно, чтобы вернуть его вызывающему объекту. |
функции |
Возвращает базовый необработанный интерфейс IUnknown указатель, который необходимо передать в функцию. |
функции |
Вспомогающая функция, возвращающая адрес базового необработанного интерфейса IUnknown объекта проецируемого типа. |
функции |
Возвращает адрес базового необработанного интерфейса IUnknown указателем на указатель на указатель на void; эта функция помогает вызывать методы (например, методы COM), возвращающие ссылки в качестве параметров с помощью указателя на указатель на void. |
функции замены |
Переключает содержимое двух IUnknown параметров, чтобы они указывали на целевой объект друг друга. |
Бесплатные операторы
Функция | Описание |
---|---|
оператор!= (оператор неравенства) | Возвращает значение, указывающее, относятся ли два параметра к разным целевым объектам. |
оператор< (оператор меньше, чем оператор) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем второй параметр. |
оператор <= (оператор меньше или равно) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем в том же расположении, что и второй параметр. |
оператор == (оператор равенства) | Возвращает значение, указывающее, относятся ли два параметра к одному интерфейсу и /или объекту. |
оператор> (оператор больше) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем второй параметр. |
оператор >= (оператор больше или равно) | Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем в том же расположении, что и второй параметр. |
Конструктор 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;
Параметры
IUnknown::as function
Возвращает запрошенный интерфейс, если он поддерживается. Бросает, если это не так. Эта функция полезна, если вы хотите запросить интерфейс, который не нужно передавать вызывающей стороне.
Синтаксис
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) или false
(bool
-returning перегрузка), если она отсутствует. Эта функция полезна, если вы хотите запросить интерфейс, который не нужно передавать вызывающей стороне.
Синтаксис
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
(bool
-returning перегрузки).
Если 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 для работы.
функция 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;
Параметры
Возвращаемое значение
true
, если два параметра указывают на разные целевые объекты, в противном случае false
.
оператор< (меньше оператора)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем второй параметр.
Синтаксис
bool operator<(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
Возвращаемое значение
true
, если адрес памяти целевого объекта первого параметра меньше адреса памяти второго параметра, в противном случае false
.
оператор<= (оператор меньше или равно)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра раньше в памяти, чем в том же расположении, что и второй параметр.
Синтаксис
bool operator<=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
Возвращаемое значение
true
, если адрес памяти целевого объекта первого параметра меньше или равен значению второго параметра, в противном случае false
.
operator== (оператор равенства)
Возвращает значение, указывающее, относятся ли два параметра к одному интерфейсу и /или объекту.
Синтаксис
bool operator==(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
Возвращаемое значение
true
, если два параметра указывают на один и тот же целевой объект, в противном случае false
.
оператор> (оператор больше)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем второй параметр.
Синтаксис
bool operator>(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
Возвращаемое значение
true
, если адрес памяти целевого объекта первого параметра больше второго параметра, в противном случае false
.
оператор>= (оператор больше или равно)
Возвращает значение, указывающее, происходит ли целевой объект первого параметра позже в памяти, чем в том же расположении, что и второй параметр.
Синтаксис
bool operator>=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
Параметры
Возвращаемое значение
true
, если адрес памяти целевого объекта первого параметра больше или равен значению второго параметра, в противном случае false
.
функция put_abi
Возвращает адрес базового необработанного интерфейса IUnknown указателем на указатель на указатель на void; эта функция помогает вызывать методы (например, методы COM), возвращающие ссылки в качестве параметров с помощью указателя на указатель на void.
Синтаксис
void** put_abi(winrt::Windows::Foundation::IUnknown& object) noexcept;
Параметры
object
значение IUnknown для работы.
Возвращаемое значение
Адрес базового необработанного интерфейса IUnknown указателя.
Функция переключения
Переключает содержимое двух IUnknown параметров, чтобы они указывали на целевой объект друг друга.
Синтаксис
void swap(winrt::Windows::Foundation::IUnknown& left, winrt::Windows::Foundation::IUnknown& right) noexcept;
Параметры
left
right
значение IUnknown, указатель которого на взаимоключение с другим параметром.
См. также
- пространства имен winrt