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(기본적으로 포함)

참고 항목