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)
Namespace: 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指標的指標傳回作為 out 參數的參考。 |
交換函式 | 交換兩個 IUnknown 參數的內容,使其指向彼此的目標。 |
免費運算子
功能 | 描述 |
---|---|
運算子!= (不等運算子) | 傳回值,指出這兩個參數是否參考不同的目標。 |
運算子<(小於運算符) | 傳回值,指出第一個參數的目標是否比第二個參數早於記憶體中。 |
運算子<= (小於或等於運算子) | 傳回值,指出第一個參數的目標發生於記憶體中早於第二個參數的相同位置。 |
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
要接收要求介面之值的參考。 可以是 Null 參考。
傳回值
com_ptr 參考要求的介面,或要求介面的強型別智慧型手機別指標(由 C++/WinRT 或第三方宣告),如果支援要求的介面,則為 null
(auto
-returning 多載)或 false
(bool
-returning 多載)。
如果 to
為 null 參考,則傳回 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;
參數
傳回值
如果兩個參數指向不同的目標,則 true
,否則 false
。
運算子< (小於運算子)
傳回值,指出第一個參數的目標是否比第二個參數早於記憶體中。
語法
bool operator<(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;
參數
傳回值
如果第一個參數的目標記憶體位址小於第二個參數的記憶體位址,則 true
,否則 false
。
operator<= (less-than-or-equal-to operator)
傳回值,指出第一個參數的目標發生於記憶體中早於第二個參數的相同位置。
語法
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
。
operator> (大於運算子)
傳回值,指出第一個參數的目標是否晚於第二個參數的記憶體中發生。
語法
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
。
put_abi 函式
傳回基礎原始 IUnknown 介面的位址, 指標作為 void指標的指標;此函式可協助您呼叫方法(例如 COM 方法),透過指向 void指標的指標傳回作為 out 參數的參考。
語法
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 值,其指標會與其他參數的指標相互交換。