winrt::get_unknown-Funktion (C++/WinRT)
Eine Hilfsfunktion, die die Adresse (d. h. einen Zeiger auf) die zugrunde liegende unformatierte IUnknown-Schnittstelle eines Objekts eines projizierten Typs zurückgibt (informationen zu projektierten Typen finden Sie unter Verwenden von APIs mit C++/WinRT).
Diese Funktion hilft Ihnen beim Aufrufen von Methoden (z. B. COM-Methoden), die einen Zeiger auf ::IUnknown erwarten. Weitere Details finden Sie im Abschnitt "Beispiel " in diesem Thema. Siehe auch die winrt::Windows::Foundation::IUnknown struct.
Es empfiehlt sich, #include <unknwn.h>
explizit immer aufzunehmen, wenn du winrt::get_unknown verwendest, auch wenn dieser Header bereits in einem anderen Header enthalten ist.
Syntax
inline ::IUnknown* get_unknown(winrt::Windows::Foundation::IUnknown const& object) noexcept;
Parameter
object
Ein Objekt eines projektierten Typs, auf dem ausgeführt werden soll (oder winrt::Windows::Foundation:::IUnknown-Wert).
Rückgabewert
Die Adresse der zugrunde liegenden unformatierten IUnknown-Schnittstelle als Zeiger auf IUnknown.
Beispiel
#include <dxgi1_2.h>
#include <d3d12.h>
#include <unknwn.h>
#include <winrt/Windows.UI.Core.h>
...
winrt::com_ptr<::IDXGIFactory2> factory;
winrt::com_ptr<::ID3D12CommandQueue> commandQueue;
winrt::Windows::UI::Core::CoreWindow coreWindow{ nullptr };
DXGI_SWAP_CHAIN_DESC1 swapChainDesc{};
winrt::com_ptr<::IDXGISwapChain1> swapChain;
// Initialize the variables here.
winrt::check_hresult(
factory->CreateSwapChainForCoreWindow(
commandQueue.get(),
winrt::get_unknown(coreWindow),
&swapChainDesc,
nullptr,
swapChain.put())
);
Die get_unknown-Funktion ist nicht für Fälle vorgesehen, in denen Sie einen Typ erstellen, der eine COM-Schnittstelle implementiert, das jedoch keinen Windows-Runtime Typ implementiert. In einem Fall wie diesem können Sie einen Zeiger an Ihren Typ übergeben, wo immer ::IUnknown erwartet wird, wie unten dargestellt.
HRESULT FunctionThatExpectsAnIUnknown(::IUnknown * pUnk);
...
struct MyRuntimeClass : winrt::implements<MyRuntimeClass, IMyCOMInterface>
{
...
HRESULT MyRuntimeClass::MemberFunction()
{
return FunctionThatExpectsAnIUnknown(this);
}
}
Weitere Informationen finden Sie unter Erstellen von APIs mit C++/WinRT.
Anforderungen
Mindest unterstützte SDK: Windows SDK Version 10.0.17134.0 (Windows 10, Version 1803)
Namespace: winrt
Header: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (standardmäßig enthalten)