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

objectEin 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)

Siehe auch