Función winrt::get_unknown (C++/WinRT)

Función auxiliar que devuelve la dirección de (es decir, un puntero a) la interfaz IUnknown sin formato subyacente de un objeto de un tipo proyectado (para obtener información sobre los tipos proyectados, vea Consumir API con C++/WinRT).

Esta función le ayuda a llamar a métodos (como métodos COM) que esperan un puntero a ::IUnknown. Consulte la sección Ejemplo de este tema para obtener más detalles. Vea también la estructura winrt::Windows::Foundation::IUnknown.

Es una buena idea usar #include <unknwn.h> de forma explícita cada vez que utilices winrt::get_unknown, aunque otro encabezado haya incluido dicho encabezado.

Sintaxis

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

Parámetros

objectObjeto de un tipo proyectado en el que operar (o en cualquier valor winrt::Windows::Foundation::IUnknown).

Valor devuelto

Dirección de la interfaz IUnknown sin formato subyacente como puntero a IUnknown.

Ejemplo

#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 función get_unknown no está pensada para los casos en los que está creando un tipo que implementa una interfaz COM, pero que no implementa un tipo de Windows Runtime. En un caso como este, puede pasar un puntero al tipo siempre que se espere ::IUnknown , como se muestra a continuación.

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

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

Para obtener más información, consulta Crear API con C++/WinRT.

Requisitos

SDK mínimo admitido: Windows SDK versión 10.0.17134.0 (Windows 10, versión 1803)

Espacio de nombres: winrt

Encabezado: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (incluido de forma predeterminada)

Consulte también