Windows.Devices.WiFiDirect.Services 命名空间

为实现你自己的 Wi-Fi Direct Services 提供支持。

Wi-Fi Direct 是一种技术,它使两个设备能够使用 Wi-Fi 直接相互连接,而无需通过接入点加入现有网络。 Wi-Fi Direct Services 是一台设备 (Service 广告商) 通过 Wi-Fi Direct 连接向另一台设备提供功能的方式, (Service Seeker) 。 搜寻器通过建立 会话来利用播发的服务。 给定设备可以播发多个服务,还可以寻求多个服务。 Seeker 和广告商角色是针对设备在特定会话中的交互方式定义的。

虽然 Wi-Fi Direct Services 规范定义了多个标准服务,但此 API 仅支持 启用 服务。 它不支持 发送播放打印显示 功能。

WiFiDirectService

表示 Wi-Fi Direct 服务。 此类由寻求使用 Wi-Fi Direct 服务的设备上的代码用于与服务提供商建立Wi-Fi Direct 服务会话。

WiFiDirectServiceAdvertiser

表示服务广告商。 此类由播发 Wi-Fi Direct Services 的设备上的代码用于播发服务。

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

在引发 WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected 事件时返回。

WiFiDirectServiceProvisioningInfo

包含有关 Wi-Fi Direct 服务的预配信息。

WiFiDirectServiceRemotePortAddedEventArgs

引发 WiFiDirectServiceSession.RemotePortAdded 事件时返回。 事件处理程序应使用此信息与新端口建立新的套接字连接。

WiFiDirectServiceSession

表示 Wi-Fi Direct Services (WFDS) 会话。

WiFiDirectServiceSessionDeferredEventArgs

引发 WiFiDirectService.SessionDeferred 事件时返回。

WiFiDirectServiceSessionRequest

描述Wi-Fi Direct Service 会话请求。

WiFiDirectServiceSessionRequestedEventArgs

引发 WiFiDirectServiceAdvertiser.SessionRequested 事件时返回。

枚举

WiFiDirectServiceAdvertisementStatus

用于 WiFiDirectServiceAdvertiser.AdvertisementStatus 的值

WiFiDirectServiceConfigurationMethod

描述建立会话时如何执行服务配置的值。 通常,无需输入,或者会话中的一台设备显示 PIN,而另一台设备要求输入 PIN。

WiFiDirectServiceError

用于 WiFiDirectServiceAdvertiser.ServiceError 属性的值。

WiFiDirectServiceIPProtocol

定义在引发 WiFiDirectServiceSession.RemotePortAdded 事件时指定新端口的 IP 协议的常量。

WiFiDirectServiceSessionErrorStatus

WiFiDirectServiceSession.ErrorStatus 属性中使用的值。

WiFiDirectServiceSessionStatus

用于描述 Wi-Fi Direct 服务会话状态的值。

WiFiDirectServiceStatus

用于描述服务状态的值。

注解

设置组所有者 (GO)

你可能希望能够精确控制 P2P (P2P) 组的哪些成员是组所有者 (GO) 。 代码应使用 WiFiDirectAdvertiser.PreferGroupOwnerMode 属性来指定给定广告客户希望成为 GO。 但是,如果两个设备以前已通过 Wi-Fi Direct 配对,则Wi-Fi该配对中保存的配置文件中的直接角色将替代广告商的指定首选项。 为了保证 P2P 配对中的给定设备为 GO,必须先使用 Windows.Devices.Enumeration 命名空间提供的方法删除任何现有的配对数据。

请注意,配对配置文件会配对两个 MAC 地址,因此取消配对两个设备适用于这两个设备之间使用 Wi-Fi Direct 的所有应用。 你的应用绝不应假定配对配置文件存在,或者它未被另一个应用更改过,即使它过去曾与设备配对。 应从当前配置文件获取当前配置文件信息,而不是存储配置文件信息,并假设稍后仍为 true。 另一个应用可能在此期间更改了配对配置文件。

以下代码查找本地设备与另一台设备之间的任何Wi-Fi直接配对配置文件,并取消配对这两个设备。 此代码成功取消配对两台设备后,后续配对将遵循配对时处于活动状态的 WiFiDirectAdvertiser.PreferGroupOwnerMode 值。

using Windows.Devices.Enumeration;

private async void Unpair_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    if (DiscoveredServices.Items.Count > 0)
    {
        DiscoveredDeviceWrapper service = 
            (DiscoveredDeviceWrapper)DiscoveredServices.Items[DiscoveredServices.SelectedIndex];

        String[] aepId = service.DeviceInfo.Id.Split('#');
        String deviceSelector = "System.Devices.DeviceInstanceId:=\"SWD\\WiFiDirect\\" + aepId[1] + "\"";

        // Check if device is paired
        DeviceInformationCollection pairedDeviceCollection = 
            await DeviceInformation.FindAllAsync(deviceSelector, null, DeviceInformationKind.DeviceInterface);

        if (pairedDeviceCollection.Count > 0)
        {
            try
            {
                DeviceInformation devInfo = pairedDeviceCollection[0];
                await devInfo.Pairing.UnpairAsync();
                MainPage.Current.NotifyUser("UnpairAsync succeeded", NotifyType.StatusMessage);
            }

            catch (Exception ex)
            {
                MainPage.Current.NotifyUser("UnpairAsync failed: " + ex.Message, NotifyType.ErrorMessage);
            }
        }
    }
}

另请参阅