windows - 从桌面应用程序(Win32/C++)调用 WinRT::MiracastReceiver,不支持
问题描述
首先,我在 Win32/C++ 项目中通过“Windows 应用程序打包项目”使用 WinRT::MiracastReceiver(Win10 sdk)。 https://docs.microsoft.com/zh-tw/windows/msix/desktop/desktop-to-uwp-packaging-dot-net。所以它已经有包标识(私有网络和互联网 C/S 能力)。
我检查了这个 API 有 DualApiPartition 属性,所以桌面应用程序可以调用 WinRT API。 https://docs.microsoft.com/zh-tw/windows/win32/apiindex/uwp-apis-callable-from-a-classic-desktop-app
当我启动 MiracastReceiver 会话时,我得到 MiracastNotSupported 的结果?我该如何解决这个问题?
当我将相同的代码放入 WinRT/UWP 项目时,它是成功的。
int main()
{
winrt::init_apartment();
receiver_ = MiracastReceiver();
receiver_.StatusChanged( {&OnStatusChanged} );
MiracastReceiverSettings settings = receiver_.GetDefaultSettings();
settings.FriendlyName(L"MiracastReceiver.2020.1217");
settings.AuthorizationMethod(MiracastReceiverAuthorizationMethod::None);
settings.ModelName(receiver_.GetDefaultSettings().ModelName());
settings.ModelNumber(receiver_.GetDefaultSettings().ModelNumber());
settings.RequireAuthorizationFromKnownTransmitters(false);
auto settings_sts = receiver_.DisconnectAllAndApplySettings(settings);
session_ = receiver_.CreateSession(nullptr);
session_.AllowConnectionTakeover(true);
session_.ConnectionCreated( {&OnConnectionCreated} );
session_.Disconnected( {&OnDisconnected} );
session_.MediaSourceCreated( {&OnMediaSourceCreated} );
MiracastReceiverSessionStartResult result = session_.Start();
MiracastReceiverSessionStartStatus status = result.Status();
std::wostringstream message;
message << L"ClickHandler: session_.Start, status=" << (int)status << std::endl;
OutputDebugString(message.str().c_str());
system("PAUSE");
}
状态 = MiracastNotSupported
环境:
- Visual Studio 2017 v15.9.30
- Win10 SDK 10.0.19041.0
- Win10 操作系统 2004 (19041)
解决方案
我在这个确切的问题上花了 8 个小时,最终发现如果我将应用程序编译为 x64 而不是以 [Any CPU] 为目标,我可以让它工作。
推荐阅读
- c# - C# Selenium:使用 WebDriver 检索网页上所有 WebElement 的列表?
- aws-lambda - 您如何访问 AWS Lambda 函数上的 IAM 角色?
- javascript - 如何在 node.js 上使用cheerio 获得价值
- java - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") 没有按预期工作
- windows - 为什么我的骰子游戏会跳过代码中最重要的几行?
- c++ - 永远不会收到发送到本地主机端口的数据包
- tableau-api - 为什么 Tableau 数据源必须始终为您选择查看的每个数据源保留“首次加载数据源”
- python - 在 html 个人资料页面中使用注册名字
- angular - Angular 失去了最重要的东西,绑定?
- ssis - SSIS - 源助手未显示项目级连接