Windows.Devices.WiFiDirect.Services Espacio de nombres
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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);
}
}
}
}