Windows.Devices.WiFiDirect.Services Spazio dei nomi

Fornisce supporto per l'implementazione di servizi Wi-Fi Direct personalizzati.

Wi-Fi Direct è una tecnologia che consente a due dispositivi di connettersi direttamente tra loro tramite Wi-Fi, senza dover aggiungere una rete esistente tramite un punto di accesso. Wi-Fi Servizi diretti sono il modo in cui un dispositivo (un inserzionista di servizi) offre funzionalità a un altro dispositivo ( cercatore di servizi) su una connessione Wi-Fi diretta. Un cercatore usa un servizio pubblicizzato stabilendo una sessione. Un determinato dispositivo può annunciare più servizi e cercare anche più servizi. I ruoli Cercatore e Inserzionista sono definiti in relazione al modo in cui i dispositivi interagiscono in una determinata sessione.

Anche se la specifica di Wi-Fi Direct Services definisce diversi servizi standard, questa API supporta solo il servizio Abilita . Non supporta la funzionalità Send, Play, Print o Display .

Classi

WiFiDirectService

Rappresenta un servizio Wi-Fi Direct. Questa classe viene usata dal codice in un dispositivo che cerca di usare un servizio Wi-Fi diretto per stabilire una sessione del servizio diretto Wi-Fi con il provider di servizi.

WiFiDirectServiceAdvertiser

Rappresenta un inserzionista di servizi. Questa classe viene usata dal codice in un dispositivo che annuncia Wi-Fi Servizi diretti per annunciare il servizio.

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

Restituito quando viene generato un evento WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected .

WiFiDirectServiceProvisioningInfo

Contiene informazioni di provisioning su un servizio Wi-Fi Diretto.

WiFiDirectServiceRemotePortAddedEventArgs

Restituito quando viene generato un evento WiFiDirectServiceSession.RemotePortAdded . Il gestore eventi deve usare queste informazioni per stabilire nuove connessioni socket alla nuova porta.

WiFiDirectServiceSession

Rappresenta una sessione di Wi-Fi Direct Services (WFDS).

WiFiDirectServiceSessionDeferredEventArgs

Restituito quando viene generato un evento WiFiDirectService.SessionDeferred .

WiFiDirectServiceSessionRequest

Descrive una Wi-Fi richiesta di sessione del servizio diretto.

WiFiDirectServiceSessionRequestedEventArgs

Restituito quando viene generato un evento WiFiDirectServiceAdvertiser.SessionRequested .

Enumerazioni

WiFiDirectServiceAdvertisementStatus

Valori utilizzati per WiFiDirectServiceAdvertiser.AdvertisementStatus.

WiFiDirectServiceConfigurationMethod

Valori che descrivono come viene eseguita la configurazione del servizio quando viene stabilita una sessione. In genere, non è necessario alcun input o un dispositivo nella sessione visualizza un PIN e l'altro dispositivo richiede che il PIN venga immesso.

WiFiDirectServiceError

Valori utilizzati per la proprietà WiFiDirectServiceAdvertiser.ServiceError .

WiFiDirectServiceIPProtocol

Definisce costanti che specificano il protocollo IP della nuova porta quando viene generato un evento WiFiDirectServiceSession.RemotePortAdded .

WiFiDirectServiceSessionErrorStatus

Valori utilizzati nella proprietà WiFiDirectServiceSession.ErrorStatus .

WiFiDirectServiceSessionStatus

Valori usati per descrivere lo stato di una sessione del servizio diretto di Wi-Fi.

WiFiDirectServiceStatus

Valori utilizzati per descrivere lo stato del servizio.

Commenti

Impostazione del proprietario del gruppo (GO)

Potrebbe essere necessario essere in grado di esercitare un controllo preciso su quale dei membri di un gruppo peer-to-peer (P2P) è il proprietario del gruppo (GO). Il codice deve usare la proprietà WiFiDirectAdvertiser.PreferGroupOwnerMode per specificare che un determinato inserzionista vuole essere go. Tuttavia, se due dispositivi sono stati abbinati in precedenza tramite Wi-Fi Direct, il Wi-Fi ruoli diretti nel profilo salvato da tale associazione sostituiscono la preferenza specificata dell'inserzionista. Per garantire che un determinato dispositivo in un'associazione P2P sia go, è necessario innanzitutto eliminare tutti i dati di associazione esistenti, usando i metodi forniti dallo spazio dei nomi Windows.Devices.Enumeration .

Si noti che un profilo di associazione associa due indirizzi MAC, quindi l'annullamento dell'associazione di due dispositivi si applica a tutte le app che usano Wi-Fi Direct tra questi due dispositivi. L'app non deve mai presupporre che esista un profilo di associazione o che non sia stata modificata da un'altra app, anche se è associata a un dispositivo in passato. È consigliabile ottenere le informazioni correnti del profilo dal profilo corrente anziché archiviare le informazioni del profilo e presupponendo che siano ancora vere in un secondo momento. Un'altra app potrebbe aver modificato il profilo di associazione nel frattempo.

Il codice seguente trova qualsiasi profilo di associazione diretta Wi-Fi tra il dispositivo locale e un altro dispositivo e annulla l'associazione dei due dispositivi. Dopo che questo codice ha rimosso correttamente l'associazione dei due dispositivi, l'associazione successiva obbedirà al valore WiFiDirectAdvertiser.PreferGroupOwnerMode attivo al momento dell'associazione.

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

Vedi anche