Windows.Devices.WiFiDirect.Services 命名空间

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

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

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

WiFiDirectService

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

WiFiDirectServiceAdvertiser

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

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

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

WiFiDirectServiceProvisioningInfo

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

WiFiDirectServiceRemotePortAddedEventArgs

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

WiFiDirectServiceSession

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

WiFiDirectServiceSessionDeferredEventArgs

在引发 WiFiDirectService.SessionDeferred 事件时返回。

WiFiDirectServiceSessionRequest

描述Wi-Fi直接服务会话请求。

WiFiDirectServiceSessionRequestedEventArgs

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

枚举

WiFiDirectServiceAdvertisementStatus

用于 WiFiDirectServiceAdvertiser.AdvertisementStatus 的值。

WiFiDirectServiceConfigurationMethod

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

WiFiDirectServiceError

用于 WiFiDirectServiceAdvertiser.ServiceError 属性的值。

WiFiDirectServiceIPProtocol

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

WiFiDirectServiceSessionErrorStatus

WiFiDirectServiceSession.ErrorStatus 属性中使用的值。

WiFiDirectServiceSessionStatus

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

WiFiDirectServiceStatus

用于描述服务状态的值。

注解

设置组所有者 (GO)

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

请注意,配对配置文件对两个 MAC 地址,因此取消配对两个设备适用于使用这两个设备之间Wi-Fi直接的所有应用。 你的应用绝不应假定存在配对配置文件,或者它尚未由另一个应用更改,即使它过去已与设备配对也是如此。 应从当前配置文件中获取当前配置文件信息,而不是存储配置文件信息,并且假定该信息在以后仍为 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);
            }
        }
    }
}

另请参阅