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

Fungsi pembantu yang mengembalikan alamat (dengan kata lain, pointer ke) antarmuka IUnknown mentah mendasar dari objek dari jenis yang diproyeksikan (untuk info tentang jenis yang diproyeksikan, lihat Menggunakan API dengan C++/WinRT).

Fungsi ini membantu Anda memanggil metode (seperti metode COM) yang mengharapkan pointer ke ::IUnknown. Lihat bagian Contoh dalam topik ini untuk detail selengkapnya. Lihat juga winrt::Windows::Foundation::IUnknown struct.

Ada baiknya untuk #include <unknwn.h> eksplisit setiap kali Anda menggunakan winrt::get_unknown, bahkan jika header tersebut telah disertakan oleh header lain.

Sintaks

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

Parameter

object Objek dari jenis yang diproyeksikan untuk dioperasikan pada (atau winrt::Windows::Foundation::IUnknown value).

Mengembalikan nilai

Alamat antarmuka IUnknown mentah yang mendasar sebagai penunjuk ke IUnknown.

Contoh

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

Fungsi get_unknown tidak ditujukan untuk kasus di mana Anda menulis jenis yang mengimplementasikan antarmuka COM, tetapi tidak mengimplementasikan jenis Windows Runtime. Dalam kasus seperti itu, Anda dapat meneruskan pointer ke jenis Anda di mana pun ::IUnknown diharapkan, seperti yang ditunjukkan di bawah ini.

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

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

Untuk informasi selengkapnya, lihat API Pembuat dengan C++/WinRT.

Persyaratan

SDK minimum yang didukung: Windows SDK versi 10.0.17134.0 (Windows 10, versi 1803)

Namespace: winrt

Header: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h (disertakan secara default)

Lihat juga