Windows.Devices.WiFiDirect.Services Namespace

Importante

O Windows. O namespace Devices.WiFiDirect.Services foi preterido.

Fornece suporte para implementar seu próprio Wi-Fi Direct Services.

Wi-Fi Direct é uma tecnologia que permite que dois dispositivos se conectem diretamente um ao outro usando Wi-Fi, sem a necessidade de ingressar em uma rede existente por meio de um ponto de acesso. Wi-Fi Serviços Diretos são a maneira como um dispositivo (um Anunciante de Serviço) oferece recursos para outro dispositivo (um Buscador de Serviço) por meio de uma conexão Wi-Fi Direct. Um buscador usa um serviço anunciado estabelecendo uma sessão. Um determinado dispositivo pode anunciar vários serviços e também buscar vários serviços. As funções Seeker e Advertiser são definidas em relação à forma como os dispositivos interagem em uma sessão específica.

Embora a especificação Wi-Fi Direct Services defina vários serviços padrão, essa API dá suporte apenas ao serviço Habilitar . Ele não dá suporte à funcionalidade Enviar, Reproduzir, Imprimir ou Exibir .

Classes

Nome Description
WiFiDirectService

Importante

O Windows. O namespace Devices.WiFiDirect.Services foi preterido.

Representa um serviço Wi-Fi Direct. Essa classe é usada por código em um dispositivo que busca usar um serviço Wi-Fi Direct, para estabelecer uma sessão de serviço direto Wi-Fi com o provedor de serviços.

WiFiDirectServiceAdvertiser

Preterido. Representa um anunciante de serviços. Essa classe é usada por código em um dispositivo que anuncia Wi-Fi Serviços Diretos, para anunciar o serviço.

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

Preterido. Retornado quando um evento WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected é gerado.

WiFiDirectServiceProvisioningInfo

Preterido. Contém informações de provisionamento sobre um Serviço Direto Wi-Fi.

WiFiDirectServiceRemotePortAddedEventArgs

Preterido. Retornado quando um evento WiFiDirectServiceSession.RemotePortAdded é acionado. O manipulador de eventos deve usar essas informações para estabelecer novas conexões de soquete com a nova porta.

WiFiDirectServiceSession

Preterido. Representa uma sessão do WFDS (Wi-Fi Direct Services).

WiFiDirectServiceSessionDeferredEventArgs

Preterido. Retornado quando um evento WiFiDirectService.SessionDeferred é acionado.

WiFiDirectServiceSessionRequest

Preterido. Descreve uma solicitação de sessão do Serviço Direto Wi-Fi.

WiFiDirectServiceSessionRequestedEventArgs

Preterido. Retornado quando um evento WiFiDirectServiceAdvertiser.SessionRequested é gerado.

Enumerações

Nome Description
WiFiDirectServiceAdvertisementStatus

Preterido. Valores usados para WiFiDirectServiceAdvertiser.AdvertisementStatus.

WiFiDirectServiceConfigurationMethod

Preterido. Valores que descrevem como a configuração de serviço é executada quando uma sessão está sendo estabelecida. Normalmente, nenhuma entrada é necessária ou um dispositivo na sessão exibe um PIN e o outro dispositivo requer que o PIN seja inserido.

WiFiDirectServiceError

Preterido. Valores usados para a propriedade WiFiDirectServiceAdvertiser.ServiceError .

WiFiDirectServiceIPProtocol

Preterido. Define constantes que especificam o protocolo IP da nova porta quando um evento WiFiDirectServiceSession.RemotePortAdded é acionado.

WiFiDirectServiceSessionErrorStatus

Preterido. Valores usados na propriedade WiFiDirectServiceSession.ErrorStatus .

WiFiDirectServiceSessionStatus

Preterido. Valores usados para descrever o status de uma sessão de serviço direto Wi-Fi.

WiFiDirectServiceStatus

Preterido. Valores usados para descrever o status do serviço.

Comentários

Definindo o proprietário do grupo (GO)

Talvez você queira poder exercer um controle preciso sobre qual dos membros de um grupo P2P (Ponto a Ponto) é o Proprietário do Grupo (GO). Seu código deve usar a propriedade WiFiDirectAdvertiser.PreferGroupOwnerMode para especificar que um determinado anunciante deseja ser o GO. No entanto, se dois dispositivos tiverem sido emparelhados anteriormente por meio de Wi-Fi Direct, o Wi-Fi funções diretas no perfil salvo desse emparelhamento substituirão a preferência especificada pelo anunciante. Para garantir que um determinado dispositivo em um emparelhamento P2P seja o GO, primeiro você deve excluir todos os dados de emparelhamento existentes, usando métodos fornecidos pelo Windows. Devices.Enumeration namespace.

Observe que um perfil de emparelhamento emparelha dois endereços MAC, portanto, o não pagamento de dois dispositivos se aplica a todos os aplicativos que usam Wi-Fi Direct entre esses dois dispositivos. Seu aplicativo nunca deve assumir que um perfil de emparelhamento existe ou que ele não foi alterado por outro aplicativo, mesmo que ele tenha emparelhado com um dispositivo no passado. Você deve obter informações de perfil atuais do perfil atual em vez de armazenar informações de perfil e supondo que elas ainda sejam verdadeiras em uma data posterior. Outro aplicativo pode ter alterado o perfil de emparelhamento nesse ínterim.

O código a seguir localiza qualquer Wi-Fi perfil de emparelhamento direto entre o dispositivo local e outro dispositivo e não paga os dois dispositivos. Depois que esse código tiver não pago com êxito os dois dispositivos, o emparelhamento subsequente obedecerá ao valor WiFiDirectAdvertiser.PreferGroupOwnerMode ativo no momento do emparelhamento.

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);
            }
        }
    }
}

Confira também