Compartilhar via


Windows.Devices.WiFiDirect.Services Namespace

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 Service Seeker) por meio de uma conexão Wi-Fi Direct. Um buscador faz uso de 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 com relação a 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

WiFiDirectService

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

WiFiDirectServiceAdvertiser

Representa um Anunciante de Serviços. Essa classe é usada pelo código em um dispositivo que anuncia Wi-Fi Direct Services, para anunciar o serviço.

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

Retornado quando um evento WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected é acionado.

WiFiDirectServiceProvisioningInfo

Contém informações de provisionamento sobre um Wi-Fi Direct Service.

WiFiDirectServiceRemotePortAddedEventArgs

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

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

WiFiDirectServiceSessionDeferredEventArgs

Retornado quando um evento WiFiDirectService.SessionDeferred é gerado.

WiFiDirectServiceSessionRequest

Descreve uma solicitação de sessão Wi-Fi Direct Service.

WiFiDirectServiceSessionRequestedEventArgs

Retornado quando um evento WiFiDirectServiceAdvertiser.SessionRequested é gerado.

Enumerações

WiFiDirectServiceAdvertisementStatus

Valores usados para WiFiDirectServiceAdvertiser.AdvertisementStatus.

WiFiDirectServiceConfigurationMethod

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 exige que o PIN seja inserido.

WiFiDirectServiceError

Valores usados para a propriedade WiFiDirectServiceAdvertiser.ServiceError .

WiFiDirectServiceIPProtocol

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

WiFiDirectServiceSessionErrorStatus

Valores usados na propriedade WiFiDirectServiceSession.ErrorStatus .

WiFiDirectServiceSessionStatus

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

WiFiDirectServiceStatus

Valores usados para descrever o serviço status.

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 GO (Proprietário do Grupo). 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 do Wi-Fi Direct, as 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 namespace Windows.Devices.Enumeration .

Observe que um perfil de emparelhamento emparelha dois endereços MAC, portanto, desabilitar dois dispositivos se aplica a todos os aplicativos que usam Wi-Fi Direct entre esses dois dispositivos. Seu aplicativo nunca deve assumir que existe um perfil de emparelhamento 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 desemparelha os dois dispositivos. Depois que esse código tiver desempatado 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