共用方式為


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 函式 如果支援,則傳回要求的介面。 如果不是 ,則傳回 nullfalse

成員運算子

算子 描述
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),如果不是,則傳回 falsebool傳回多載)。 如果您想要查詢不需要傳回給呼叫端的介面,此函式會很有用。

語法

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 或第三方宣告),如果支援要求的介面,則為 nullauto-returning 多載)或 falsebool-returning 多載)。

如果 to 為 null 參考,則傳回 nullfalse

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 介面,如果您需要將它傳遞至函式。 您可以在傳回的指標上呼叫 AddRefReleaseQueryInterface

語法

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;

參數

要與其他參數比較的目標記憶體位址 IUnknown 值。

傳回值

如果兩個參數指向不同的目標,則 true,否則 false

運算子< (小於運算子)

傳回值,指出第一個參數的目標是否比第二個參數早於記憶體中。

語法

bool operator<(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

參數

要與其他參數比較的目標記憶體位址 IUnknown 值。

傳回值

如果第一個參數的目標記憶體位址小於第二個參數的記憶體位址,則 true,否則 false

operator<= (less-than-or-equal-to operator)

傳回值,指出第一個參數的目標發生於記憶體中早於第二個參數的相同位置。

語法

bool operator<=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

參數

要與其他參數比較的目標記憶體位址 IUnknown 值。

傳回值

如果第一個參數的目標記憶體位址小於或等於第二個參數的記憶體位址,則 true,否則 false

operator== (等號運算符)

傳回值,指出兩個參數是否參考相同的介面和/或物件。

語法

bool operator==(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

參數

要與其他參數比較的目標記憶體位址 IUnknown 值。

傳回值

如果兩個參數指向相同的目標,則 true,否則 false

operator> (大於運算子)

傳回值,指出第一個參數的目標是否晚於第二個參數的記憶體中發生。

語法

bool operator>(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

參數

要與其他參數比較的目標記憶體位址 IUnknown 值。

傳回值

如果第一個參數的目標記憶體位址大於第二個參數的記憶體位址,則 true 否則 false

operator>= (大於或等於運算符)

傳回值,指出第一個參數的目標是否晚於記憶體中發生,或是在與第二個參數相同的位置發生。

語法

bool operator>=(winrt::Windows::Foundation::IUnknown const& left, winrt::Windows::Foundation::IUnknown const& right) noexcept;

參數

要與其他參數比較的目標記憶體位址 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 值,其指標會與其他參數的指標相互交換。

另請參閱