【问题标题】:Calling WinRT::MiracastReceiver from a Desktop Application(Win32/C++), it's non support从桌面应用程序(Win32/C++)调用 WinRT::MiracastReceiver,不支持
【发布时间】:2021-03-27 20:07:42
【问题描述】:

首先,我在 Win32/C++ 项目中使用“Windows 应用程序打包项目”的 WinRT::MiracastReceiver(Win10 sdk)。 https://docs.microsoft.com/zh-tw/windows/msix/desktop/desktop-to-uwp-packaging-dot-net。 所以它已经有了包标识(私有网络和 Internet 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)

【问题讨论】:

    标签: windows winapi uwp c++-winrt miracast


    【解决方案1】:

    我在这个确切的问题上花了 8 个小时,最终发现如果我将应用程序编译为 x64 而不是以 [Any CPU] 为目标,我可以让它工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多