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

返回 (地址的帮助程序函数,即指向) 投影类型对象的基础原始 IUnknown 接口 的指针,以获取有关 投影 (类型的信息,请参阅 将 API 与 C++/WinRT) 配合使用。

此函数可帮助你调用 (的方法,例如 COM 方法) 需要指向 ::IUnknown 的指针。 有关更多详细信息,请参阅本主题中的 “示例 ”部分。 另请参阅 winrt::Windows::Foundation::IUnknown 结构

在使用 winrt::get_unknown 时,即使该标头已包含在另一个标头中,显式执行 #include <unknwn.h> 仍是不错的做法。

语法

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

parameters

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 (默认包含)

请参阅