Windows.Devices.WiFiDirect.Services Пространство имен

Обеспечивает поддержку реализации собственных служб Wi-Fi Direct Services.

Wi-Fi Direct — это технология, которая позволяет двум устройствам напрямую подключаться друг к другу с помощью Wi-Fi, не подключаясь к существующей сети через точку доступа. Wi-Fi Службы Direct — это способ, которым одно устройство ( рекламодатель услуг) предоставляет возможности другому устройству ( искателю услуг) через Wi-Fi прямое подключение. Искатель использует рекламируемую службу, устанавливая сеанс. Данное устройство может объявлять несколько служб, а также искать несколько служб. Роли искателя и рекламодателя определяются с учетом того, как устройства взаимодействуют в определенном сеансе.

Хотя спецификация Wi-Fi Direct Services определяет несколько стандартных служб, этот API поддерживает только службу Enable . Он не поддерживает функции отправки, воспроизведения, печати или отображения .

Классы

WiFiDirectService

Представляет службу Wi-Fi Direct. Этот класс используется кодом на устройстве, которое пытается использовать Wi-Fi Direct Service, чтобы установить сеанс Wi-Fi Direct Service с поставщиком услуг.

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

Значения, описывающие, как выполняется настройка службы при создании сеанса. Как правило, ввод не требуется, либо одно устройство в сеансе отображает ПИН-код, а другое устройство требует ввода ПИН-кода.

WiFiDirectServiceError

Значения, используемые для свойства WiFiDirectServiceAdvertiser.ServiceError .

WiFiDirectServiceIPProtocol

Определяет константы, указывающие IP-протокол нового порта при возникновении события WiFiDirectServiceSession.RemotePortAdded .

WiFiDirectServiceSessionErrorStatus

Значения, используемые в свойстве WiFiDirectServiceSession.ErrorStatus .

WiFiDirectServiceSessionStatus

Значения, используемые для описания состояния сеанса Wi-Fi Direct Service.

WiFiDirectServiceStatus

Значения, используемые для описания состояния службы.

Комментарии

Настройка владельца группы (GO)

Возможно, вам потребуется иметь возможность точно контролировать, какой из членов одноранговой группы (P2P) является владельцем группы (GO). Код должен использовать свойство WiFiDirectAdvertiser.PreferGroupOwnerMode , чтобы указать, что данный рекламодатель хочет быть GO. Однако если два устройства ранее были связаны с помощью Wi-Fi Direct, то Wi-Fi прямые роли в сохраненном профиле из этого связывания переопределяют указанные предпочтения рекламодателя. Чтобы гарантировать, что данное устройство в паре P2P будет go, необходимо сначала удалить все существующие данные связывания, используя методы, предоставляемые пространством имен Windows.Devices.Enumeration .

Обратите внимание, что профиль связывания связывает два MAC-адреса, поэтому непарные два устройства применяются ко всем приложениям, которые используют Wi-Fi Direct между этими двумя устройствами. Приложение никогда не должно предполагать, что профиль связывания существует или что он не был изменен другим приложением, даже если он был связан с устройством в прошлом. Вы должны получать текущие данные профиля из текущего профиля, а не хранить данные профиля и предполагать, что они по-прежнему верны позже. Другое приложение могло изменить профиль связывания в промежуточном режиме.

Следующий код находит любой 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);
            }
        }
    }
}

См. также раздел