Usare la rete ospitata wireless, la condivisione della connessione Internet

La rete ospitata wireless è una nuova funzionalità WLAN supportata in Windows 7 e Windows 8. È supportato anche in Windows Server 2012 e Windows Server 2008 R2 con il servizio LAN wireless installato. Questa funzionalità implementa due funzioni principali:

  • La virtualizzazione di una scheda wireless fisica in più di una scheda wireless virtuale talvolta definita Wi-Fi virtuale.
  • Un punto di accesso wireless basato su software (AP) talvolta definito SoftAP che usa una scheda wireless virtuale designata.

Internet Connection Sharing (ICS) è una funzionalità di Windows fornita tramite il servizio SharedAccess. In linea di principio, SharedAccess consente la condivisione di rete tramite un computer in cui l'accesso alla rete condivisa non fornisce necessariamente l'accesso a Internet. In questa sezione viene usato il termine ICS e SharedAccess in modo intercambiabile, poiché la condivisione della connessione Internet è uno scenario principale per la rete ospitata wireless e il termine ICS è meglio noto alla community degli utenti.

La rete ospitata wireless è strettamente legata a ICS per abilitare sia la rete di area personale wireless (PAN) che gli scenari di condivisione Internet. Questa sezione fornisce consigli generali per gli sviluppatori di applicazioni su come integrare rete ospitata wireless e ICS usando le API ICS e rete ospitata wireless pubblica.

Condivisione connessione Internet

Il servizio ICS opera in una delle due modalità possibili:

  • Modalità autonoma

    Solo la funzione server DHCPv4 funziona quando viene richiamato il servizio ICS. Si tratta di una modalità operativa speciale per ICS e viene resa disponibile solo tramite la rete ospitata wireless. Un utente o un'applicazione non è in grado di avviare e arrestare direttamente ICS autonomo tramite API ICS pubbliche o comandi netsh . L'avvio della rete ospitata wireless comporta in genere l'avvio di ICS in modalità autonoma per usare la funzione server DHCPv4 per fornire indirizzi IPv4 privati per i dispositivi connessi. La comunicazione di rete per i dispositivi connessi è limitata all'invio e alla ricezione di pacchetti di rete tra un dispositivo connesso e il computer locale che ospita la rete ospitata wireless e tra i dispositivi connessi stessi. Ciò consente in modo efficace lo scenario di rete wireless dell'area personale per la rete ospitata wireless.

  • Modalità completa

    Tutte le funzionalità di ICS funzionano quando viene richiamato il servizio, ad esempio la conversione degli indirizzi di rete e le funzioni del server DHCP per IPv4 e IPv6. Questa è la modalità normale di funzionamento per ICS. Un utente o un'applicazione può avviare e arrestare la modalità ICS completa tramite API pubbliche o comandi netshell. Ad esempio, questo servizio può essere arrestato usando net stop sharedaccess da un prompt dei comandi con privilegi elevati. La combinazione di rete ospitata wireless con ICS completo, la comunicazione di rete per i dispositivi connessi non è limitata alla pan wireless. Qualsiasi dispositivo connesso ha accesso alla rete (ad esempio Internet) tramite la connessione di rete condivisa dal computer che esegue la rete ospitata wireless. Ciò consente in modo efficace lo scenario di condivisione di rete per la rete ospitata wireless.

In questa sezione viene usato il termine ICS completo per indicare il caso in cui tutte le funzioni ICS vengono richiamate nel servizio ICS per fornire l'accesso a tutte le funzionalità ICS complete con la rete ospitata wireless.

Le due modalità operative ICS si escludono a vicenda con ICS completo che ha la precedenza più elevata. Il servizio ICS può passare dalla modalità autonoma alla modalità completa, ma non dalla modalità completa alla modalità autonoma. La modalità autonoma ICS è stata introdotta in Windows 7 e in Windows Server 2008 R2 con il servizio LAN wireless installato insieme alla funzionalità Rete ospitata wireless. Non è disponibile nelle versioni precedenti di Windows.

Qualsiasi operazione ICS completa prevede due schede di rete diverse nel sistema:

  • Interfaccia pubblica. Si tratta dell'interfaccia di rete con accesso a Internet. Si tratta di questa interfaccia usata dal computer locale che esegue ICS per condividere Internet con client e dispositivi che si connettono a esso tramite SoftAP.
  • Interfaccia privata. Si tratta dell'interfaccia di rete usata da altri dispositivi per connettersi al computer locale che esegue ICS. Un server DHCPv4 è in esecuzione su questa interfaccia privata per fornire indirizzi IP locali privati agli altri computer remoti.

Quando l'interfaccia pubblica non ha accesso a Internet, il server DHCP nell'interfaccia privata continua a fornire indirizzi IP locali ai dispositivi connessi. L'ICS autonomo prevede solo l'interfaccia privata in cui è in esecuzione SoftAP; non implica alcuna interfaccia pubblica.

In qualsiasi momento, è presente al massimo un'istanza di ICS completo in esecuzione nel computer locale. Se il servizio ICS completo è già in esecuzione nel computer locale, l'avvio di un altro ICS completo mostra i comportamenti funzionali seguenti:

  • Se le interfacce pubbliche e private del nuovo ICS completo sono identiche a tutte le interfacce ICS complete esistenti, l'avvio del secondo ICS completo equivale a un'operazione no-op.
  • Se la nuova interfaccia pubblica è diversa dall'interfaccia pubblica precedente, ma la nuova interfaccia privata è la stessa dell'interfaccia privata precedente, l'avvio di un secondo ICS completo ha un impatto minimo sui dispositivi connessi sulla stessa interfaccia privata. La possibilità di accedere a Internet può cambiare con la nuova interfaccia pubblica.
  • Se la nuova interfaccia privata è diversa dall'interfaccia privata precedente, le funzioni ICS smetteranno di lavorare sull'interfaccia privata precedente e inizieranno a essere applicate alla nuova interfaccia privata. Qualsiasi dispositivo remoto che si connette al computer locale usando l'interfaccia privata precedente perderà la connettività IP al computer locale.

Quando l'ICS completo è già in esecuzione, richiamare un secondo ICS completo è un'interruzione dei dispositivi connessi in remoto usando l'interfaccia privata precedente, purché la seconda integrazione ICS usi una nuova interfaccia privata diversa.

Per gestire e usare il servizio ICS per supportare l'integrazione ICS con la rete ospitata wireless, un'applicazione software deve prima ottenere un'interfaccia INetSharingManager . L'interfaccia INetSharingManager consente di accedere direttamente o indirettamente a tutte le altre interfacce COM nell'API ICS. Il metodo get_SharingInstalled nell'interfaccia INetSharingManager indica se il computer locale supporta la condivisione delle connessioni. Il metodo get_EnumEveryConnection nell'interfaccia INetSharingManager recupera un'interfaccia di enumerazione per tutte le connessioni nella cartella connections. Il metodo get_INetSharingConfigurationForINetConnection recupera un'interfaccia INetSharingConfiguration per la connessione specificata. I metodi nell'interfaccia INetSharingConfiguration possono essere usati per eseguire query e modificare le impostazioni ICS.

La rete ospitata wireless deve essere avviata prima di chiamare il metodo get_EnumEveryConnection sull'interfaccia INetSharingManager per enumerare tutte le connessioni nella cartella connections.

Per informazioni su ICS e sulle interfacce e i metodi pubblici che possono essere usati per eseguire query e modificare le impostazioni ICS, vedere la documentazione su Condivisione connessione Internet e Firewall connessione Internet.

Integrazione di rete ospitata e ICS

Quando ICS completo non è in esecuzione, l'avvio di una rete ospitata wireless avvia internamente anche il servizio ICS in modalità autonoma con solo la funzione del server DHCPv4 per allocare indirizzi IP per i dispositivi connessi nell'interfaccia di rete ospitata wireless. L'intervallo di indirizzi della subnet per il server DHCPv4 autonomo è 192.168.173.0/24. Questo comportamento è diverso dall'intervallo di subnet 192.168.137.0/24 usato con ICS completo.

L'avvio di una rete ospitata wireless con ICS completo usa la logica seguente:

  • Se il servizio ICS completo non è già in esecuzione, l'avvio di una rete ospitata wireless avvia anche il servizio ICS con il server DHCPv4 autonomo.
  • Se ICS completo è già in esecuzione e l'interfaccia privata è l'interfaccia di rete ospitata wireless, è sufficiente avviare la rete ospitata wireless.
  • Se ICS completo è già in esecuzione, ma l'interfaccia privata non è l'interfaccia di rete ospitata wireless, la rete ospitata wireless verrà avviata senza la funzione del server DHCPv4 nell'interfaccia di rete ospitata wireless.

L'impatto della logica precedente evidenzia i fatti seguenti:

  • ICS non passa dalla modalità completa alla modalità autonoma.
  • La modalità autonoma può essere richiamata solo dalla rete ospitata wireless quando ICS non è in esecuzione in modalità completa.
  • Se ICS è in esecuzione in modalità autonoma, verrà annullata in modalità completa se un utente o un'applicazione avvia ICS in modalità completa.
  • La transizione dalla modalità autonoma alla modalità completa in ICS comporterà un'interruzione dei dispositivi connessi nella pan wireless se l'interfaccia privata di ICS completo non è uguale a quella per SoftAP.

L'avvio o l'arresto del servizio ICS nel computer locale in modalità completa o autonoma richiede tempo. Un'applicazione deve controllare lo stato del servizio ICS usando la funzione NotifyServiceStatusChange per assicurarsi che il servizio ICS non sia nello stato di avvio/arresto in sospeso prima di avviare o arrestare la rete ospitata wireless per l'uso con l'integrazione ICS.

Avvio e arresto della rete ospitata wireless

Windows offre una piattaforma in cui più applicazioni simultanee possono gestire contemporaneamente una rete ospitata wireless. In particolare, ogni applicazione può avviare e arrestare la rete ospitata wireless autonomamente, senza conoscere in precedenza altre applicazioni.

Sono disponibili due set di funzioni per avviare e arrestare una rete ospitata.

Più applicazioni possono richiedere l'uso della rete ospitata wireless. Le funzioni WlanHostedNetworkStartUsing e WlanHostedNetworkStopUsing avviano e arrestano una rete ospitata wireless in modo compatibile con altre applicazioni simultanee. Le funzioni WlanHostedNetworkStartUsing e WlanHostedNetworkStopUsing consentono a un'applicazione di avere un riferimento alla rete ospitata wireless. Questo meccanismo mantiene in esecuzione la rete ospitata wireless, purché almeno un'altra applicazione abbia un riferimento corrente alla rete ospitata wireless. Qualsiasi utente può chiamare queste funzioni. Le chiamate riuscite a WlanHostedNetworkStartUsing devono essere abbinate dalle chiamate alla funzione WlanHostedNetworkStopUsing . Qualsiasi modifica dello stato della rete ospitata causata dalla funzione WlanHostedNetworkStartUsing viene annullata automaticamente se l'applicazione chiamante chiude l'handle chiamante (chiamando WlanCloseHandle con lo stesso parametro hClientHandle passato a WlanHostedNetworkStartUsing) o se il processo termina.

Le funzioni WlanHostedNetworkForceStart e WlanHostedNetworkForceStop forzano l'avvio e l'arresto di una rete ospitata wireless. Queste funzioni possono essere chiamate solo se l'utente dispone del privilegio con privilegi elevati appropriati. Le chiamate riuscite a WlanHostedNetworkForceStart potrebbero essere abbinate da una chiamata alla funzione WlanHostedNetworkForceStop , a seconda della progettazione dell'applicazione. Queste funzioni passano allo stato della rete ospitata wireless senza associare la richiesta all'handle chiamante dell'applicazione. Qualsiasi modifica dello stato della rete ospitata causata dalla funzione WlanHostedNetworkForceStart non verrà annullata automaticamente se l'applicazione chiamante chiude l'handle chiamante (chiamando WlanCloseHandle con lo stesso parametro hClientHandle passato a WlanHostedNetworkStartUsing) o se il processo termina. Se l'applicazione che ha chiamato la funzione WlanHostedNetworkForceStart si chiude senza chiamare una delle funzioni per arrestare la rete ospitata wireless, la rete ospitata rimane in esecuzione. Un'applicazione potrebbe chiamare la funzione WlanHostedNetworkForceStart dopo aver verificato che un utente di sistema con privilegi elevati accetti i maggiori requisiti di alimentazione necessari per l'esecuzione della rete ospitata wireless per lunghi periodi di tempo.

Le raccomandazioni generali sulle funzioni da chiamare per avviare e arrestare una rete ospitata wireless sono le seguenti:

  • Usare le funzioni WlanHostedNetworkStartUsing e WlanHostedNetworkStopUsing all'interno di un'applicazione per avviare e arrestare una rete ospitata wireless.
  • Non usare la funzione WlanHostedNetworkForceStart per avviare una rete ospitata wireless, a meno che non sia assolutamente richiesta dall'applicazione. La funzione WlanHostedNetworkForceStart richiede anche privilegi elevati.
  • Usare solo la funzione WlanHostedNetworkForceStop come metodo di ripristino. La funzione WlanHostedNetworkForceStop causa l'arresto immediato di una rete ospitata wireless. Altre applicazioni in ascolto delle notifiche di rete ospitata wireless potrebbero dover eseguire azioni di ripristino. Per altre informazioni, vedere la discussione seguente sulla sequenza di ripristino per la rete ospitata wireless.

Sequenza di avvio per la rete ospitata wireless

Per un'applicazione che avvia una rete ospitata wireless con ICS completo, è consigliabile avviare la rete ospitata wireless, quindi avviare il servizio ICS completo. Se una rete ospitata wireless è già in esecuzione, un'applicazione deve usare la funzione WlanHostedNetworkForceStop per arrestare la rete ospitata wireless solo se è necessario il servizio ICS completo ma non è stato abilitato prima dell'avvio della rete ospitata. Ciò consentirà ad altre applicazioni di eseguire il ripristino da potenziali interruzioni causate dall'avvio del servizio ICS completo. Per altre informazioni, vedere la discussione seguente sulla sequenza di ripristino per la rete ospitata wireless. L'operazione combinata deve avere esito positivo e negativo nel suo complesso.

Nota

La rete ospitata wireless deve essere avviata prima di tentare di enumerare la scheda corrispondente usando l'interfaccia IEnumNetSharingEveryConnection .

 

I passaggi ordinati seguenti sono la sequenza di avvio consigliata in un'applicazione che usa la rete ospitata wireless con ICS completo:

  • Chiamare la funzione WlanHostedNetworkInitSettings per assicurarsi che la rete ospitata wireless sia configurata e pronta per l'uso.
  • Chiamare le funzioni WlanHostedNetworkQueryStatus e WlanHostedNetworkQueryProperty per determinare se la rete ospitata wireless è consentita e disponibile. Se la rete ospitata wireless non è consentita e non è disponibile, restituisce un errore.
  • Verificare se è consentito il servizio ICS usato per il servizio ICS completo. Se il servizio ICS non può essere avviato, restituire un errore.
  • Chiamare la funzione WlanHostedNetworkForceStop per forzare l'arresto della rete ospitata wireless.
  • Chiamare la funzione WlanHostedNetworkStartUsing per avviare la rete ospitata wireless.
  • Se l'avvio della rete ospitata wireless non riesce, restituisce un errore.
  • Se ICS completo è già in esecuzione e l'interfaccia pubblica o privata corrente è diversa dalla nuova interfaccia da usare, memorizzare nella cache le interfacce pubbliche e private correnti. Un'applicazione può anche scegliere di restituire un errore o richiedere all'utente se l'integrazione ICS è già in esecuzione.
  • Avviare il servizio ICS completo con le nuove impostazioni per le interfacce pubbliche e private.
  • Se l'ICS completo non viene avviato con queste impostazioni, provare ad avviare il servizio ICS completo con le interfacce pubbliche e private memorizzate nella cache se il servizio ICS completo era in esecuzione in precedenza. Chiamare la funzione WlanHostedNetworkForceStop per arrestare la rete ospitata wireless e restituire un errore.
  • Restituisce l'esito positivo che la rete ospitata wireless e l'ICS completo hanno esito positivo.

Sequenza di arresto per la rete ospitata wireless

Quando si usa la rete ospitata wireless con ICS completo, un'applicazione che ha terminato il proprio lavoro potrebbe voler arrestare la rete ospitata wireless e il servizio ICS usato per il servizio ICS completo. In questo caso, è consigliabile chiamare la funzione WlanHostedNetworkForceStop per arrestare la rete ospitata anziché chiamare la funzione WlanHostedNetworkStopUsing . La funzione WlanHostedNetworkForceStop arresta la rete ospitata wireless e serve anche per consentire il ripristino di altre applicazioni. Per altre informazioni, vedere la discussione seguente sulla sequenza di ripristino per la rete ospitata wireless.

I passaggi ordinati seguenti sono la sequenza di arresto consigliata in un'applicazione che usa rete ospitata wireless e ICS completo:

Un'applicazione che usa la rete ospitata wireless senza ICS completo che è finito con il suo lavoro deve solo chiamare la funzione WlanHostedNetworkStopUsing o WlanHostedNetworkForceStop per arrestare la rete ospitata wireless. Se la funzione WlanHostedNetworkStartUsing è stata chiamata per avviare la rete ospitata wireless, l'applicazione deve chiamare la funzione WlanHostedNetworkStopUsing per arrestare la rete ospitata wireless. Se la rete ospitata wireless è stata già avviata prima dell'applicazione o dell'applicazione denominata funzione WlanHostedNetworkForceStart per forzare l'avvio della rete ospitata wireless, l'applicazione può chiamare la funzione WlanHostedNetworkForceStop per arrestare la rete ospitata wireless o non eseguire alcuna operazione (lasciare la rete ospitata wireless avviata) a seconda dello scenario.

Sequenza di ripristino per la rete ospitata wireless

Un'applicazione che usa la rete ospitata wireless può essere interessata dalle azioni di altre applicazioni. Il servizio ICS e le interfacce per la gestione di ICS non forniscono alcun metodo per la registrazione di un'applicazione per le notifiche di modifica ICS. Se un'altra applicazione chiama i metodi EnableSharing o DisableSharing nell'interfaccia INetSharingConfiguration per abilitare o disabilitare la condivisione in una connessione, viene inviato un messaggio all'interfaccia utente (schermo) nel computer locale non ad altre applicazioni. Pertanto, un'applicazione deve basarsi sulle notifiche della rete ospitata wireless per eseguire azioni di ripristino quando si verificano modifiche alla rete ospitata wireless o ICS.

Un'applicazione che usa la rete ospitata wireless deve registrarsi per le notifiche di rete ospitata wireless chiamando WlanRegisterNotification. Se sono necessarie notifiche solo per la rete ospitata wireless, l'applicazione deve passare WLAN_NOTIFICATION_SOURCE_HNWK nel parametro dwNotifSource passato a WlanRegisterNotification. Se sono necessarie anche altre noticazioni wireless, WLAN_NOTIFICATION_SOURCE_HNWK deve essere combinata con le costanti di origine delle notifiche per altri tipi di notifiche wireless desiderate e passare questo valore nel parametro dwNotifSource .

La sequenza di ripristino è la stessa per le applicazioni con o senza ICS completo, presupponendo che le applicazioni non vogliano riavviare il servizio ICS. Quando si riceve una notifica di rete ospitata wireless che la rete ospitata è stata arrestata, eseguire le operazioni seguenti:

Sequenza di ripristino per dispositivi connessi

I dispositivi remoti o i computer connessi alla rete ospitata wireless possono essere interessati dalle azioni di altre applicazioni che influiscono su ICS e sulla rete ospitata wireless. Fortunatamente, la maggior parte dei dispositivi ha incorporato la logica di ripetizione dei tentativi nell'applicazione del dispositivo per gestire una perdita temporanea di segnale o roaming.

Una possibile sequenza di ripristino per dispositivi o computer connessi alla rete ospitata wireless che perde contatto è la seguente:

  • Il driver del dispositivo wireless indica una disconnessione multimediale ai livelli superiori dello stack di rete nel dispositivo.
  • L'applicazione del dispositivo avvia controlli periodici per la disponibilità della rete ospitata wireless.
  • Quando l'applicazione del dispositivo rileva nuovamente la rete ospitata wireless, il dispositivo avvia una connessione wireless.
  • Al termine della connessione con la rete ospitata wireless, l'applicazione del dispositivo aggiorna le impostazioni IP di conseguenza.

Informazioni sulla rete ospitata wireless

Esempio di rete ospitata wireless

WlanHostedNetworkForceStart

WlanHostedNetworkInitSettings

WlanHostedNetworkQueryProperty

WlanHostedNetworkQuerySecondaryKey

WlanHostedNetworkQueryStatus

WlanHostedNetworkRefreshSecuritySettings

WlanHostedNetworkSetProperty

WlanHostedNetworkSetSecondaryKey

WlanHostedNetworkStartUsing

WlanHostedNetworkStopUsing

WlanRegisterVirtualStationNotification