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