Funzione winrt::get_unknown (C++/WinRT)

Funzione helper che restituisce l'indirizzo di (in altre parole, un puntatore a) l'interfaccia IUnknown non elaborata sottostante di un oggetto di un tipo proiettato (per informazioni sui tipi proiettati, vedere Utilizzare LE API con C++/WinRT).

Questa funzione consente di chiamare metodi (ad esempio i metodi COM) che prevedono un puntatore a ::IUnknown. Per altri dettagli, vedere la sezione Esempio in questo argomento. Vedi anche lo struct winrt::Windows::Foundation::IUnknown.

È consigliabile eseguire #include <unknwn.h> in modo esplicito ogni volta che usi winrt::get_unknown, anche se tale intestazione è stata inclusa da un'altra intestazione.

Sintassi

inline ::IUnknown* get_unknown(winrt::Windows::Foundation::IUnknown const& object) noexcept;

Parametri

objectOggetto di un tipo proiettato su cui operare (o su qualsiasi valore winrt::Windows::Foundation::IUnknown).

Valore restituito

Indirizzo dell'interfaccia IUnknown non elaborata sottostante come puntatore a IUnknown.

Esempio

#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())
);

La funzione get_unknown non è destinata ai casi in cui si crea un tipo che implementa un'interfaccia COM, ma che non implementa un tipo Windows Runtime. In un caso simile, è possibile passare un puntatore al tipo ovunque sia previsto ::IUnknown , come illustrato di seguito.

HRESULT FunctionThatExpectsAnIUnknown(::IUnknown * pUnk);
...
struct MyRuntimeClass : winrt::implements<MyRuntimeClass, IMyCOMInterface>
{
    ...

    HRESULT MyRuntimeClass::MemberFunction()
    {
        return FunctionThatExpectsAnIUnknown(this);
    }
}

Per altre info, vedi Creare API con C++/WinRT.

Requisiti

SDK minimo supportato: Windows SDK versione 10.0.17134.0 (Windows 10, versione 1803)

Spazio dei nomi: winrt

Intestazione: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluso per impostazione predefinita)

Vedi anche