다음을 통해 공유


winrt::capture 함수 템플릿(C++/WinRT)

지정된 함수 또는 메서드를 호출하는 함수 템플릿(자동으로 winrt::check_hresult 호출)은 함수 또는 메서드에서 출력되는 인터페이스 포인터를 캡처하고, Windows::Foundation::IUnknown에서 파생되는 경우 T 템플릿 매개 변수 typename T 로 반환하고, 그렇지 않으면 winrt::com_ptr 반환합니다. 성공하지 못하면 throw합니다.

winrt::com_ptr::capture 함수도 참조하세요.

구문

template <typename T, typename F, typename...Args>
impl::com_ref<T> capture(F function, Args&& ...args);

template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> capture(O* p, M method, Args&& ...args);

template <typename T, typename O, typename M, typename...Args>
impl::com_ref<T> capture(com_ptr<O> const& object, M method, Args&& ...args);

템플릿 매개 변수

typename T 함수 또는 메서드에서 출력되는 인터페이스 포인터의 형식입니다.

typename F free 함수 또는 std::function과 같은 함수 개체 형식입니다.

typename O 인터페이스 형식입니다.

typename M 메서드 형식입니다.

typename Args 0개 이상의 인수 형식입니다.

매개 변수

function 형식 F의 함수 개체입니다.

p 형식 O의 개체에 대한 포인터입니다.

objectwinrt::com_ptr 형식O입니다.

method형식M의 메서드(구현)O입니다.

args 형식의 인수가 0개 이상입니다 Args.

반환 값

TWindows::Foundation::IUnknown에서 파생되는 경우 T 반환하고, 그렇지 않으면 winrt::com_ptr 반환합니다. 성공하지 못하면 throw합니다.

설명

  • 오버로드는 capture(F function, Args&&...args) 함수 개체를 호출합니다.
  • capture(O* p, M method, Args&& ...args) 오버로드는 포인터에서 메서드를 호출합니다.
  • capture(winrt::com_ptr<O> const& object, M method, Args&&...args) 오버로드는 개체에서 메서드를 호출합니다.

모든 오버로드는 사용자가 제공하는 추가 인수를 호출 수신자에게 전달합니다. 또한 모든 오버로드는 이러한 호출에 필요한 두 개의 추가 인수, 특히 REFIID ( winrt::com_ptr 대상의 ID) 및 void** ( winrt::com_ptr 대상에 대한 포인터의 주소)를 전달합니다.

요구 사항

지원되는 최소 SDK: Windows SDK 버전 10.0.17134.0(Windows 10, 버전 1803)

네임스페이스: winrt

헤더: %WindowsSdkDir%IncludeWindowsTargetPlatformVersion<>\cppwinrt\winrt\base.h(기본적으로 포함)

참고 항목