winrt::Windows::Foundation::IUnknown 結構 (C++/WinRT)
每個 C++/WinRT 運行時間類別 (Windows 或第三方運行時間類別) 衍生自 winrt::Windows::Foundation::IUnknown。 它代表 COM IUnknown 介面,並提供查詢不同介面、abi 函式和比較運算符等功能。
Syntax
struct IUnknown
規格需求
最低支援的 SDK:Windows SDK 10.0.17134.0 版 (Windows 10 版本 1803)
命名空間: winrt
標頭: %WindowsSdkDir%包含<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 參數的參考。 |
swap 函式 | 交換兩個 IUnknown 參數的內容,使其指向彼此的目標。 |
免費運算子
函式 | 描述 |
---|---|
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 函式
如果支援,則傳回要求的介面。 如果不是,則會擲回 。 如果您想要查詢不需要傳回給呼叫端的介面,此函式會很有用。
Syntax
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
傳回 (傳回多載) 。 如果您想要查詢不需要傳回給呼叫端的介面,此函式會很有用。
Syntax
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
傳回多載) 或 false
(bool
傳回多載) 。
如果 to
為 Null 參考,則傳 null
回 或 false
。
IUnknown::operator bool
檢查 IUnknown 物件是否參考介面。 如果 IUnknown 物件未參考介面,則其邏輯為 Null;否則,其邏輯上不是 Null。
Syntax
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 方法) 透過 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 值,其指標會與其他參數的指標相互交換。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應