winrt::get_unknown 関数 (C++/WinRT)

投影された型のオブジェクトの基になる生の IUnknown インターフェイス のアドレス (つまり、ポインター) を返すヘルパー関数 ( 射影された型については、「 C++/WinRT を使用した API の使用」を参照)。

この関数は、 ::IUnknown へのポインターを必要とするメソッド (COM メソッドなど) を呼び出すのに役立ちます。 詳細については、このトピックの 「例 」セクションを参照してください。 winrt::Windows::Foundation::IUnknown 構造体も参照してください。

winrt::get_unknown を使用するときは常に、そのヘッダーが別のヘッダーにインクルードされている場合でも、明示的に #include <unknwn.h> することをお勧めします。

構文

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

パラメーター

object操作対象の射影された型のオブジェクト (または winrt::Windows::Foundation::IUnknown 値)。

戻り値

IUnknown へのポインターとしての基になる生の IUnknown インターフェイスアドレス。

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

get_unknown関数は、COM インターフェイスを実装するが、Windows ランタイム型を実装していない型を作成する場合を対象としていません。 そのような場合は、次に示すように、 ::IUnknown が予想される場所であれば、型へのポインターを渡すことができます。

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

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

詳細については、「C++/WinRT での API の作成」を参照してください。

必要条件

サポートされている最小 SDK: Windows SDK バージョン 10.0.17134.0 (Windows 10、バージョン 1803)

名前空間: winrt

ヘッダー: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h (既定で含まれています)

こちらもご覧ください