Utiliser le réseau hébergé sans fil, le partage de connexion Internet
Le réseau hébergé sans fil est une nouvelle fonctionnalité WLAN prise en charge sur Windows 7 et Windows 8. Il est également pris en charge sur Windows Server 2012 et Windows Server 2008 R2 avec le service LAN sans fil installé. Cette fonctionnalité implémente deux fonctions principales :
- Virtualisation d’un adaptateur sans fil physique en plusieurs cartes sans fil virtuelles parfois appelées Wi-Fi virtuel.
- Point d’accès sans fil logiciel (AP) parfois appelé SoftAP qui utilise une carte sans fil virtuelle désignée.
Le partage de connexion Internet (ICS) est une fonctionnalité de Windows fournie par le biais du service SharedAccess. À proprement parler, SharedAccess permet le partage réseau via un ordinateur où l’accès réseau partagé ne fournit pas nécessairement l’accès à Internet. Nous utilisons les termes ICS et SharedAccess de manière interchangeable dans cette section, car le partage de connexion Internet est un scénario majeur pour le réseau hébergé sans fil et le terme ICS est mieux connu de la communauté des utilisateurs.
Le réseau hébergé sans fil est étroitement lié à ICS pour permettre à la fois le réseau personnel sans fil (PAN) et les scénarios de partage Internet. Cette section fournit des recommandations générales aux développeurs d’applications sur la façon d’intégrer le réseau hébergé sans fil et l’ICS à l’aide du réseau hébergé sans fil public et des API ICS.
Partage de connexion Internet
Le service ICS fonctionne dans l’un des deux modes possibles :
Mode autonome
Seule la fonction serveur DHCPv4 fonctionne lorsque le service ICS est appelé. Il s’agit d’un mode d’opération spécial pour ICS qui est uniquement disponible via le réseau hébergé sans fil. Un utilisateur ou une application ne peut pas démarrer et arrêter directement ics autonome via des API ICS publiques ou des commandes netsh . Le démarrage du réseau hébergé sans fil implique généralement le démarrage d’ICS en mode autonome pour utiliser la fonction serveur DHCPv4 pour fournir des adresses IPv4 privées pour les appareils connectés. La communication réseau pour les appareils connectés se limite à l’envoi et à la réception de paquets réseau entre un appareil connecté et l’ordinateur local hébergeant le réseau hébergé sans fil et entre les appareils connectés eux-mêmes. Cela active efficacement le scénario de réseau personnel sans fil pour le réseau hébergé sans fil.
Mode complet
Toutes les fonctionnalités d’ICS fonctionnent lorsque le service est appelé, comme la traduction d’adresses réseau et les fonctions de serveur DHCP pour IPv4 et IPv6. Il s’agit du mode de fonctionnement normal pour ICS. Un utilisateur ou une application peut démarrer et arrêter le mode ICS complet via des API publiques ou des commandes netshell. Par exemple, ce service peut être arrêté à l’aide de net stop sharedaccess à partir d’une invite de commandes avec élévation de privilèges. En combinant le réseau hébergé sans fil à l’ICS complet, la communication réseau pour les appareils connectés ne se limite pas au PAN sans fil. Tout appareil connecté a accès au réseau (par exemple, Internet) via la connexion réseau partagée à partir de l’ordinateur exécutant le réseau hébergé sans fil. Cela active efficacement le scénario de partage de réseau pour le réseau hébergé sans fil.
Dans cette section, nous utilisons le terme ICS complet pour désigner le cas où toutes les fonctions ICS sont appelées dans le service ICS pour fournir l’accès à toutes les fonctionnalités ICS complètes avec le réseau hébergé sans fil.
Les deux modes de fonctionnement ICS s’excluent mutuellement, l’ICS complet étant plus prioritaire. Le service ICS peut passer du mode autonome au mode complet, mais pas du mode complet au mode autonome. Le mode autonome ICS a été introduit dans Windows 7 et sur Windows Server 2008 R2 avec le service LAN sans fil installé conjointement avec la fonctionnalité réseau hébergé sans fil. Il n’est pas disponible dans les versions précédentes de Windows.
Toute opération ICS complète implique deux cartes réseau différentes dans le système :
- Interface publique. Il s’agit de l’interface réseau avec accès à Internet. C’est cette interface que l’ordinateur local exécutant ICS utilise pour partager Internet avec des clients et des appareils qui s’y connectent via SoftAP.
- Interface privée. Il s’agit de l’interface réseau que les autres appareils utilisent pour se connecter à l’ordinateur local qui exécute ICS. Un serveur DHCPv4 s’exécute sur cette interface privée pour fournir des adresses IP locales privées aux autres ordinateurs distants.
Lorsque l’interface publique n’a pas accès à Internet, le serveur DHCP sur l’interface privée continue de fournir des adresses IP locales aux appareils connectés. ICS autonome implique uniquement l’interface privée sur laquelle SoftAP s’exécute ; elle n’implique aucune interface publique.
À tout moment, il existe tout au plus un instance d’ICS complet en cours d’exécution sur l’ordinateur local. Si icS complet est déjà en cours d’exécution sur l’ordinateur local, le démarrage d’un autre ICS complet présente les comportements fonctionnels suivants :
- Si les interfaces publiques et privées du nouvel ICS complet sont identiques à l’ICS complet existant, le démarrage du deuxième ICS complet équivaut à une opération sans opération.
- Si la nouvelle interface publique est différente de l’ancienne interface publique, mais que la nouvelle interface privée est identique à l’ancienne interface privée, le démarrage d’un deuxième ICS complet a peu d’impact sur les appareils connectés sur la même interface privée. La possibilité d’accéder à Internet peut changer avec la nouvelle interface publique.
- Si la nouvelle interface privée est différente de l’ancienne interface privée, les fonctions ICS cesseront de fonctionner sur l’ancienne interface privée et commenceront à s’appliquer à la nouvelle interface privée. Tout appareil distant qui se connecte à l’ordinateur local à l’aide de l’ancienne interface privée perd la connectivité IP à l’ordinateur local.
Lorsque l’ICS complet est déjà en cours d’exécution, l’appel d’un deuxième ICS complet perturbe les appareils connectés à distance à l’aide de l’ancienne interface privée tant que la deuxième intégration ICS utilise une autre nouvelle interface privée.
Pour gérer et utiliser le service ICS pour prendre en charge l’intégration d’ICS au réseau hébergé sans fil, une application logicielle doit d’abord obtenir une interface INetSharingManager . L’interface INetSharingManager permet d’accéder directement ou indirectement à toutes les autres interfaces COM de l’API ICS. La méthode get_SharingInstalled sur l’interface INetSharingManager indique si l’ordinateur local prend en charge le partage de connexion. La méthode get_EnumEveryConnection de l’interface INetSharingManager récupère une interface d’énumération pour toutes les connexions dans le dossier connexions. La méthode get_INetSharingConfigurationForINetConnection récupère une interface INetSharingConfiguration pour la connexion spécifiée. Les méthodes de l’interface INetSharingConfiguration peuvent être utilisées pour interroger et modifier les paramètres ICS.
Le réseau hébergé sans fil doit être démarré avant d’appeler la méthode get_EnumEveryConnection sur l’interface INetSharingManager pour énumérer toutes les connexions dans le dossier connexions.
Pour plus d’informations sur ICS et les interfaces et méthodes publiques qui peuvent être utilisées pour interroger et modifier les paramètres ICS, consultez la documentation relative au partage de connexion Internet et au pare-feu de connexion Internet.
Intégration réseau hébergé et ICS
Lorsque l’ICS complet n’est pas en cours d’exécution, le démarrage d’un réseau hébergé sans fil démarre également en interne le service ICS en mode autonome avec uniquement la fonction serveur DHCPv4 pour allouer des adresses IP pour les appareils connectés sur l’interface réseau hébergé sans fil. La plage d’adresses de sous-réseau pour le serveur DHCPv4 autonome est 192.168.173.0/24. Cela diffère de la plage de sous-réseaux 192.168.137.0/24 qui est utilisée avec ICS complet.
Le démarrage d’un réseau hébergé sans fil avec ICS complet utilise la logique suivante :
- Si le service ICS complet n’est pas encore en cours d’exécution, le démarrage d’un réseau hébergé sans fil démarre également le service ICS avec un serveur DHCPv4 autonome.
- Si l’ICS complet est déjà en cours d’exécution et que l’interface privée est l’interface réseau hébergé sans fil, démarrez simplement le réseau hébergé sans fil.
- Si l’ICS complet est déjà en cours d’exécution, mais que l’interface privée n’est pas l’interface réseau hébergé sans fil, le réseau hébergé sans fil démarre sans la fonction serveur DHCPv4 sur l’interface réseau hébergé sans fil.
L’impact de la logique ci-dessus met en évidence les faits suivants :
- ICS ne passe pas du mode complet au mode autonome.
- Le mode autonome peut uniquement être appelé par le réseau hébergé sans fil lorsque ICS ne s’exécute pas en mode complet.
- Si ICS s’exécute en mode autonome, il est préempté en mode complet si un utilisateur ou une application démarre ICS en mode complet.
- La transition du mode autonome au mode complet dans ICS perturbera les appareils connectés dans le PAN sans fil si l’interface privée de l’ICS complet n’est pas la même que celle de SoftAP.
Il faut du temps pour démarrer ou arrêter le service ICS sur l’ordinateur local en mode complet ou autonome. Une application doit case activée l’état du service ICS à l’aide de la fonction NotifyServiceStatusChange pour s’assurer que le service ICS n’est pas dans l’état d’attente de démarrage/arrêt avant de démarrer ou d’arrêter le réseau hébergé sans fil à utiliser avec l’intégration ICS.
Démarrage et arrêt du réseau hébergé sans fil
Windows fournit une plateforme dans laquelle plusieurs applications simultanées sont autorisées à gérer un réseau hébergé sans fil en même temps. En particulier, chaque application peut démarrer et arrêter le réseau hébergé sans fil par elle-même, sans connaître au préalable les autres applications.
Il existe deux ensembles de fonctions pour démarrer et arrêter un réseau hébergé.
Plusieurs applications peuvent nécessiter l’utilisation du réseau hébergé sans fil. Les fonctions WlanHostedNetworkStartUsing et WlanHostedNetworkStopUsing démarrent et arrêtent un réseau hébergé sans fil d’une manière compatible avec d’autres applications simultanées. Les fonctions WlanHostedNetworkStartUsing et WlanHostedNetworkStopUsing permettent à une application d’avoir une référence au réseau hébergé sans fil. Ce mécanisme maintient le réseau hébergé sans fil en cours d’exécution, à condition qu’au moins une autre application ait une référence actuelle au réseau hébergé sans fil. N’importe quel utilisateur peut appeler ces fonctions. Les appels réussis à WlanHostedNetworkStartUsing doivent être mis en correspondance par des appels à la fonction WlanHostedNetworkStopUsing . Toute modification d’état du réseau hébergé provoquée par la fonction WlanHostedNetworkStartUsing est automatiquement annulée si l’application appelante ferme son handle d’appel (en appelant WlanCloseHandle avec le même paramètre hClientHandle passé à WlanHostedNetworkStartUsing) ou si le processus se termine.
Les fonctions WlanHostedNetworkForceStart et WlanHostedNetworkForceStop forcent le démarrage et l’arrêt d’un réseau hébergé sans fil. Ces fonctions ne peuvent être appelées que si l’utilisateur dispose du privilège élevé approprié. Les appels réussis à WlanHostedNetworkForceStart peuvent éventuellement être mis en correspondance par un appel à la fonction WlanHostedNetworkForceStop , en fonction de la conception de l’application. Ces fonctions transfèrent l’état du réseau hébergé sans fil sans associer la demande au handle d’appel de l’application. Tout changement d’état du réseau hébergé provoqué par la fonction WlanHostedNetworkForceStart ne serait pas automatiquement annulé si l’application appelante ferme son handle d’appel (en appelant WlanCloseHandle avec le même paramètre hClientHandle passé à WlanHostedNetworkStartUsing) ou si le processus se termine. Si l’application qui a appelé la fonction WlanHostedNetworkForceStart se ferme sans appeler l’une des fonctions pour arrêter le réseau hébergé sans fil, le réseau hébergé reste en cours d’exécution. Une application peut appeler la fonction WlanHostedNetworkForceStart après s’être assuré qu’un utilisateur du système avec élévation de privilèges accepte les exigences d’alimentation accrues associées à l’exécution du réseau hébergé sans fil pendant de longues périodes.
Les recommandations générales sur les fonctions à appeler pour démarrer et arrêter un réseau hébergé sans fil sont les suivantes :
- Utilisez les fonctions WlanHostedNetworkStartUsing et WlanHostedNetworkStopUsing au sein d’une application pour démarrer et arrêter un réseau hébergé sans fil.
- N’utilisez pas la fonction WlanHostedNetworkForceStart pour démarrer un réseau hébergé sans fil, sauf si cela est absolument requis par l’application. La fonction WlanHostedNetworkForceStart nécessite également des privilèges élevés.
- Utilisez uniquement la fonction WlanHostedNetworkForceStop comme méthode de récupération. La fonction WlanHostedNetworkForceStop entraîne l’arrêt immédiat d’un réseau hébergé sans fil. D’autres applications qui écoutent les notifications de réseau hébergé sans fil peuvent avoir besoin d’effectuer des actions de récupération. Pour plus d’informations, consultez la discussion ci-dessous sur la séquence de récupération pour le réseau hébergé sans fil.
Séquence de démarrage pour le réseau hébergé sans fil
Pour une application qui démarre un réseau hébergé sans fil avec ICS complet, il est recommandé de démarrer le réseau hébergé sans fil, puis de démarrer l’ICS complet. Si un réseau hébergé sans fil est déjà en cours d’exécution, une application doit utiliser la fonction WlanHostedNetworkForceStop pour arrêter le réseau hébergé sans fil uniquement si icS complet est requis mais n’a pas été activé avant le démarrage du réseau hébergé. Cela permettra à d’autres applications de récupérer après des interruptions potentielles causées par le début d’ICS complet. Pour plus d’informations, consultez la discussion ci-dessous sur la séquence de récupération pour le réseau hébergé sans fil. L’opération combinée doit réussir et échouer dans son ensemble.
Notes
Le réseau hébergé sans fil doit être démarré avant de tenter d’énumérer la carte correspondante à l’aide de l’interface IEnumNetSharingEveryConnection .
Les étapes triées suivantes sont la séquence de démarrage recommandée dans une application utilisant un réseau hébergé sans fil avec ICS complet :
- Appelez la fonction WlanHostedNetworkInitSettings pour vous assurer que le réseau hébergé sans fil est configuré et prêt à être utilisé.
- Appelez les fonctions WlanHostedNetworkQueryStatus et WlanHostedNetworkQueryProperty pour déterminer si le réseau hébergé sans fil est autorisé et disponible. Si le réseau hébergé sans fil n’est pas autorisé et n’est pas disponible, retournez une erreur.
- Testez pour voir si le service ICS utilisé pour ics complet est autorisé. Si le service ICS ne peut pas être démarré, retournez une erreur.
- Appelez la fonction WlanHostedNetworkForceStop pour forcer l’arrêt du réseau hébergé sans fil.
- Appelez la fonction WlanHostedNetworkStartUsing pour démarrer le réseau hébergé sans fil.
- Si le réseau hébergé sans fil ne parvient pas à démarrer, retournez une erreur.
- Si icS complet est déjà en cours d’exécution et que l’interface publique ou privée actuelle est différente de la nouvelle interface à utiliser, mettez en cache les interfaces publiques et privées actuelles. Une application peut également choisir de retourner une erreur ou d’inviter l’utilisateur si l’intégration ICS est déjà en cours d’exécution.
- Démarrez ics complet avec les nouveaux paramètres des interfaces publiques et privées.
- Si icS complet ne parvient pas à démarrer avec ces paramètres, essayez de démarrer le service ICS complet avec les interfaces publiques et privées mises en cache si icS complet était en cours d’exécution auparavant. Appelez la fonction WlanHostedNetworkForceStop pour arrêter le réseau hébergé sans fil et retourner une erreur.
- Retourne la réussite du réseau hébergé sans fil et de l’ICS complet.
Séquence d’arrêt pour le réseau hébergé sans fil
Lors de l’utilisation d’un réseau hébergé sans fil avec ics complet, une application qui a terminé son travail peut vouloir arrêter le réseau hébergé sans fil et le service ICS utilisé pour l’ics complet. Dans ce cas, il est recommandé d’appeler la fonction WlanHostedNetworkForceStop pour arrêter le réseau hébergé au lieu d’appeler la fonction WlanHostedNetworkStopUsing . La fonction WlanHostedNetworkForceStop arrête le réseau hébergé sans fil et permet également à d’autres applications de récupérer. Pour plus d’informations, consultez la discussion ci-dessous sur la séquence de récupération pour le réseau hébergé sans fil.
Les étapes triées suivantes sont la séquence d’arrêt recommandée dans une application utilisant un réseau hébergé sans fil et icS complet :
- Arrêtez icS complet.
- Appelez la fonction WlanHostedNetworkForceStop pour arrêter le réseau hébergé sans fil.
Une application utilisant un réseau hébergé sans fil sans ics complet qui est terminée avec son travail doit simplement appeler la fonction WlanHostedNetworkStopUsing ou WlanHostedNetworkForceStop pour arrêter le réseau hébergé sans fil. Si la fonction WlanHostedNetworkStartUsing a été appelée pour démarrer le réseau hébergé sans fil, l’application doit appeler la fonction WlanHostedNetworkStopUsing pour arrêter le réseau hébergé sans fil. Si le réseau hébergé sans fil a déjà été démarré avant l’application ou que l’application a appelé la fonction WlanHostedNetworkForceStart pour forcer le démarrage du réseau hébergé sans fil, l’application peut appeler la fonction WlanHostedNetworkForceStop pour arrêter le réseau hébergé sans fil ou ne rien faire (laissez le réseau hébergé sans fil démarré) selon le scénario.
Séquence de récupération pour le réseau hébergé sans fil
Une application utilisant le réseau hébergé sans fil peut être affectée par les actions d’autres applications. Le service ICS et les interfaces de gestion ics ne fournissent aucune méthode permettant à une application de s’inscrire aux notifications de modification ICS. Si une autre application appelle les méthodes EnableSharing ou DisableSharing sur l’interface INetSharingConfiguration pour activer ou désactiver le partage sur une connexion, un message est envoyé à l’interface utilisateur (l’écran) de l’ordinateur local et non à d’autres applications. Par conséquent, une application doit s’appuyer sur les notifications de réseau hébergé sans fil pour effectuer des actions de récupération lorsque des modifications icS ou réseau hébergé sans fil se produisent.
Une application utilisant le réseau hébergé sans fil doit s’inscrire aux notifications de réseau hébergé sans fil en appelant wlanRegisterNotification. Si des notifications sont nécessaires uniquement pour le réseau hébergé sans fil, l’application doit passer WLAN_NOTIFICATION_SOURCE_HNWK dans le paramètre dwNotifSource passé à WlanRegisterNotification. Si d’autres notications sans fil sont également nécessaires, WLAN_NOTIFICATION_SOURCE_HNWK doivent être combinées avec les constantes de source de notification pour d’autres types de notifications sans fil souhaitées et passer cette valeur dans le paramètre dwNotifSource .
La séquence de récupération est la même pour les applications avec ou sans ICS complet, en supposant que les applications ne veulent pas redémarrer le service ICS. Lorsque vous recevez une notification de réseau hébergé sans fil indiquant que le réseau hébergé s’est arrêté, procédez comme suit :
- Si l’application a appelé WlanHostedNetworkForceStart pour démarrer le réseau hébergé sans fil, redémarrez le réseau hébergé en appelant WlanHostedNetworkForceStart. Sinon, appelez WlanHostedNetworkStartUsing pour redémarrer le réseau hébergé sans fil.
Séquence de récupération pour les appareils connectés
Les appareils ou ordinateurs distants connectés au réseau hébergé sans fil peuvent être affectés par les actions d’autres applications qui affectent ICS et le réseau hébergé sans fil. Heureusement, la plupart des appareils ont intégré une logique de nouvelle tentative dans l’application d’appareil pour faire face à une perte temporaire de signal ou d’itinérance.
Voici une séquence de récupération possible pour les appareils ou ordinateurs connectés au réseau hébergé sans fil qui perdent le contact :
- Le pilote de périphérique sans fil indique une déconnexion de média vers les couches supérieures de la pile réseau sur l’appareil.
- L’application d’appareil démarre des vérifications périodiques de la disponibilité du réseau hébergé sans fil.
- Une fois que l’application de l’appareil détecte à nouveau le réseau hébergé sans fil, l’appareil lance une connexion sans fil.
- En cas de connexion réussie avec le réseau hébergé sans fil, l’application de l’appareil met à jour ses paramètres IP en conséquence.
Rubriques connexes