gpt4 book ai didi

windows-runtime - WiFiDirectDevice::FromIdAsync 抛出 Win32 控制台应用程序

转载 作者:行者123 更新时间:2023-12-04 07:18:40 38 4
gpt4 key购买 nike

我正在尝试使用 Windows 10 SDK 中的 WiFiDirect API,并在 Win32 控制台应用程序中实现连接器方案。我已经在基本控制台应用程序和集成代码中启用了 C++/CX Microsoft's example on GitHub .

现在我可以成功发现设备,如果设备已经配对,甚至可以连接和传输数据。但是,当我尝试从头开始将它们配对时,FromIdAsync 任务以已取消结束,下面的最后一行引发异常,提示 “远程过程调用失败。”

        WiFiDirectConnectionParameters^ connectionParams = ref new WiFiDirectConnectionParameters();
connectionParams->GroupOwnerIntent = (short)(wcstoul(txtGOIntent->Text->Data(), nullptr, 10));

// IMPORTANT: FromIdAsync needs to be called from the UI thread
concurrency::task<WiFiDirectDevice^> fromIdTask(WiFiDirectDevice::FromIdAsync(discoveredDevice->DeviceInfo->Id, connectionParams));
fromIdTask.then([this](concurrency::task<WiFiDirectDevice^> fromIdResultTask)
{
try
{
WiFiDirectDevice^ wfdDevice = fromIdResultTask.get();

我认为它无法显示带有 PIN 输入的弹出窗口,但如何克服这个问题?

最佳答案

[更新] TH2 已经推出一段时间了,所以 custom device pairing API是我最初暗示的。有一个 SDK sample它还向您展示了如何使用它。 checkout 示例中的场景 9。

明确地说,您可以通过 3-4 种方式在应用中配对设备:

  1. 使用设备选择器控件,它可以内嵌配对设备
  2. 使用简单的配对 API。如前所述,它必须在应用程序 UI 线程上调用,否则 shell 可能无法确定在何处绘制应用程序模式对话框
  3. 使用自定义设备配对 API
  4. 使用入站配对 API(仅适用于物联网设备上的蓝牙)

Windows.Devices.Enumeration* 中的大多数 API 都被视为“双重”API,这意味着它们既可以在应用程序容器中工作,也可以在中等 IL win32 类型的进程中工作。异常(exception)情况是生成 UI 的 API(即 #1 和 #2),因此在您的场景中,只有 #3 可以在桌面控制台应用程序中运行。

在 TH2 之前,上面的 #2 会隐式发生。 RPC 调用失败,因为控制台应用程序不在应用程序容器中,因此 shell 无法注入(inject)模态对话框。

[原始回复] 显然这是一个应该可行的方案。您应该在 Threshold 2 中使用 WiFiDirect WinRT API 寻找对 win32 应用程序的更好支持。很快就会发布给大家。您现在可以尝试使用 Windows 10 的内部测试版本。我认为您问题中的场景应该可行。

我建议您随时查看 TH2 SDK。查看是否有新的 API 可以解决您的问题。发货后请联系我,我可以为您提供有关如何管理 WFD 配对的更多详细信息。

关于windows-runtime - WiFiDirectDevice::FromIdAsync 抛出 Win32 控制台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32583567/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com