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