winrt::get_unknown, fonction (C++/WinRT)

Fonction d’assistance qui retourne l’adresse de (en d’autres termes, pointeur vers) l’interface IUnknown brute sous-jacente d’un objet d’un type projeté (pour plus d’informations sur les types projetés, voir Consommer des API avec C++/WinRT).

Cette fonction vous aide à appeler des méthodes (telles que des méthodes COM) qui attendent un pointeur vers ::IUnknown. Pour plus d’informations, consultez la section Exemple de cette rubrique. Voir également le struct winrt::Windows::Foundation::IUnknown.

Il est judicieux d’inclure #include <unknwn.h> explicitement chaque fois que vous utilisez winrt::get_unknown, même si cet en-tête a été inclus par un autre en-tête.

Syntaxe

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

Paramètres

objectObjet d’un type projeté à utiliser (ou toute valeur winrt::Windows::Foundation::IUnknown).

Valeur retournée

Adresse de l’interface IUnknown brute sous-jacente en tant que pointeur vers IUnknown.

Exemple

#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 fonction get_unknownn’est pas destinée aux cas où vous créez un type qui implémente une interface COM, mais qui n’implémente pas de type Windows Runtime. Dans un cas comme cela, vous pouvez passer un pointeur à votre type où que ::IUnknown soit attendu, comme indiqué ci-dessous.

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

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

Pour plus d’informations, consultez Créer des API avec C++/WinRT.

Spécifications

Kit de développement logiciel (SDK) pris en charge minimum : Windows SDK version 10.0.0.17134.0 (Windows 10, version 1803)

Espace de noms : winrt

En-tête : %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (inclus par défaut)

Voir aussi