Compartir a través de


Windows.Devices.WiFiDirect.Services Espacio de nombres

Proporciona compatibilidad para implementar sus propios Wi-Fi Direct Services.

Wi-Fi Direct es una tecnología que permite que dos dispositivos se conecten directamente entre sí mediante Wi-Fi, sin necesidad de unirse a una red existente a través de un punto de acceso. Wi-Fi Direct Services son la forma en que un dispositivo (un anunciante de servicios) ofrece funcionalidades a otro dispositivo (un buscador de servicios) a través de una conexión directa Wi-Fi. Un solicitante utiliza un servicio anunciado estableciendo una sesión. Un dispositivo determinado puede anunciar varios servicios y también buscar varios servicios. Los roles Buscador y Anunciante se definen con respecto a cómo interactúan los dispositivos en una sesión determinada.

Aunque la especificación de Wi-Fi Direct Services define varios servicios estándar, esta API solo admite el servicio Enable . No admite la funcionalidad Enviar, Reproducir, Imprimir o Mostrar .

Clases

WiFiDirectService

Representa un servicio Wi-Fi Direct. El código usa esta clase en un dispositivo que busca usar un servicio directo de Wi-Fi para establecer una sesión de servicio directo Wi-Fi con el proveedor de servicios.

WiFiDirectServiceAdvertiser

Representa un anunciante del servicio. El código usa esta clase en un dispositivo que anuncia Wi-Fi Direct Services para anunciar el servicio.

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

Se devuelve cuando se genera un evento WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected .

WiFiDirectServiceProvisioningInfo

Contiene información de aprovisionamiento sobre un servicio directo de Wi-Fi.

WiFiDirectServiceRemotePortAddedEventArgs

Se devuelve cuando se genera un evento WiFiDirectServiceSession.RemotePortAdded . El controlador de eventos debe usar esta información para establecer nuevas conexiones de socket al nuevo puerto.

WiFiDirectServiceSession

Representa una sesión de Wi-Fi Direct Services (WFDS).

WiFiDirectServiceSessionDeferredEventArgs

Se devuelve cuando se genera un evento WiFiDirectService.SessionDeferred .

WiFiDirectServiceSessionRequest

Describe una solicitud de sesión de servicio directo Wi-Fi.

WiFiDirectServiceSessionRequestedEventArgs

Se devuelve cuando se genera un evento WiFiDirectServiceAdvertiser.SessionRequested .

Enumeraciones

WiFiDirectServiceAdvertisementStatus

Valores usados para WiFiDirectServiceAdvertiser.AdvertisementStatus.

WiFiDirectServiceConfigurationMethod

Valores que describen cómo se realiza la configuración del servicio cuando se establece una sesión. Normalmente, no se requiere ninguna entrada o un dispositivo de la sesión muestra un PIN y el otro dispositivo requiere que se escriba el PIN.

WiFiDirectServiceError

Valores usados para la propiedad WiFiDirectServiceAdvertiser.ServiceError .

WiFiDirectServiceIPProtocol

Define constantes que especifican el protocolo IP del nuevo puerto cuando se genera un evento WiFiDirectServiceSession.RemotePortAdded .

WiFiDirectServiceSessionErrorStatus

Valores usados en la propiedad WiFiDirectServiceSession.ErrorStatus .

WiFiDirectServiceSessionStatus

Valores usados para describir el estado de una sesión de servicio directo de Wi-Fi.

WiFiDirectServiceStatus

Valores usados para describir el estado del servicio.

Comentarios

Establecer el propietario del grupo (GO)

Es posible que quiera poder ejercer un control preciso sobre cuál de los miembros de un grupo de punto a punto (P2P) es el propietario del grupo (GO). El código debe usar la propiedad WiFiDirectAdvertiser.PreferGroupOwnerMode para especificar que un anunciante determinado quiere ser el GO. Sin embargo, si dos dispositivos se han emparejado previamente a través de Wi-Fi Direct, los Wi-Fi roles directos en el perfil guardado de ese emparejamiento invalidan la preferencia especificada del anunciante. Para garantizar que un dispositivo determinado en un emparejamiento P2P sea go, primero debe eliminar los datos de emparejamiento existentes, mediante los métodos proporcionados por el espacio de nombres Windows.Devices.Enumeration .

Tenga en cuenta que un perfil de emparejamiento empareja dos direcciones MAC, por lo que el despaquear dos dispositivos se aplica a todas las aplicaciones que usan Wi-Fi Direct entre esos dos dispositivos. La aplicación nunca debe suponer que existe un perfil de emparejamiento o que no ha cambiado por otra aplicación, incluso si se ha emparejado con un dispositivo en el pasado. Debe obtener información de perfil actual del perfil actual en lugar de almacenar la información del perfil y suponiendo que sigue siendo cierta en una fecha posterior. Es posible que otra aplicación haya cambiado el perfil de emparejamiento mientras tanto.

El código siguiente busca cualquier perfil de emparejamiento directo Wi-Fi entre el dispositivo local y otro dispositivo y quita los dos dispositivos. Una vez que este código haya desapareado correctamente los dos dispositivos, el emparejamiento posterior obedecerá el valor WiFiDirectAdvertiser.PreferGroupOwnerMode activo en el momento del emparejamiento.

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

Consulte también