Compartilhar via


Função winrt::get_unknown (C++/WinRT)

Uma função auxiliar que retorna o endereço de (em outras palavras, um ponteiro para) a interface IUnknown bruta subjacente de um objeto de um tipo projetado (para obter informações sobre tipos projetados, consulte Consumir APIs com C++/WinRT).

Essa função ajuda você a chamar métodos (como métodos COM) que esperam um ponteiro para ::IUnknown. Consulte a seção Exemplo neste tópico para obter mais detalhes. Consulte também o struct winrt::Windows::Foundation::IUnknown.

É uma boa ideia explicitar #include <unknwn.h> sempre que você usar winrt ::get_unknown, mesmo que esse cabeçalho tenha sido incluído por outro cabeçalho.

Sintaxe

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

Parâmetros

objectUm objeto de um tipo projetado para operar (ou qualquer valor winrt::Windows::Foundation::IUnknown).

Valor retornado

O endereço da interface IUnknown bruta subjacente como um ponteiro para IUnknown.

Exemplo

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

A função get_unknown não se destina a casos em que você está criando um tipo que implementa uma interface COM, mas que não implementa um tipo de Windows Runtime. Em um caso como esse, você pode passar um ponteiro para o tipo onde quer que ::IUnknown seja esperado, conforme mostrado abaixo.

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

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

Para obter mais informações, confira Criar APIs com C++/WinRT.

Requisitos

SDK com suporte mínimo: Windows SDK versão 10.0.17134.0 (Windows 10, versão 1803)

Namespace: winrt

Cabeçalho: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluído por padrão)

Confira também