Вызов WinRT::MiracastReceiver из настольного приложения (Win32/C++) не поддерживается
Во-первых, я использую WinRT::MiracastReceiver(Win10 sdk) в рамках «Проекта упаковки приложений Windows» в проекте Win32/C++. 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
- Пакет SDK для Win10 10.0.19041.0
- ОС Win10 2004 (19041)
1 ответ
Я потратил 8 часов на решение именно этой проблемы и в конце концов обнаружил, что если я скомпилирую приложение как x64 вместо ориентации на [любой процессор], я смогу заставить его работать.