Použití bezdrátové hostované sítě, sdílení připojení k internetu
Bezdrátová hostovaná síť je nová funkce WLAN podporovaná ve Windows 7 a Windows 8. Podporuje se také v systémech Windows Server 2012 a Windows Server 2008 R2 s nainstalovanou službou Wireless LAN Service. Tato funkce implementuje dvě hlavní funkce:
- Virtualizace fyzického bezdrátového adaptéru do více než jednoho virtuálního bezdrátového adaptéru se někdy označuje jako Virtuální Wi-Fi.
- Softwarový přístupový bod (AP) se někdy označuje jako SoftAP, který používá určený virtuální bezdrátový adaptér.
Sdílení připojení k internetu (ICS) je funkce ve Windows poskytovaná prostřednictvím služby SharedAccess. Přesněji řečeno, SharedAccess umožňuje sdílení sítě prostřednictvím počítače, kde sdílený síťový přístup nemusí nutně poskytovat přístup k internetu. Termín ICS a SharedAccess zaměnitelně používáme v této části, protože sdílení připojení k internetu je hlavním scénářem bezdrátové hostované sítě a termín ICS je pro komunitu uživatelů lépe známý.
Bezdrátová hostovaná síť je úzce svázaná s ICS, aby umožňovala jak síť PAN (Wireless Personal Area Network), tak scénáře sdílení internetu. Tato část obsahuje obecná doporučení pro vývojáře aplikací o tom, jak integrovat bezdrátovou hostované síť a ICS pomocí veřejné bezdrátové hostované sítě a rozhraní ICS API.
Sdílení připojení k internetu
Služba ICS funguje v jednom ze dvou možných režimů:
Samostatný režim
Při vyvolání služby ICS funguje pouze funkce serveru DHCPv4. Jedná se o speciální režim provozu ICS a je zpřístupněn pouze prostřednictvím bezdrátové hostované sítě. Uživatel nebo aplikace nemohou přímo spustit a zastavit samostatně pracující ICS prostřednictvím veřejných API rozhraní nebo příkazů netsh. Spuštění bezdrátové hostované sítě obvykle zahrnuje spuštění ICS v samostatném režimu pro použití funkce serveru DHCPv4 k poskytování privátních IPv4 adres pro připojená zařízení. Síťová komunikace připojených zařízení je omezená na odesílání a přijímání síťových paketů mezi připojeným zařízením a místním počítačem, který je hostitelem bezdrátové hostované sítě a mezi připojenými zařízeními. To efektivně umožňuje scénář bezdrátové osobní sítě pro hostovanou bezdrátovou síť.
Plný režim
Všechny funkce ICS fungují při vyvolání služby, jako je překlad síťových adres a funkce serveru DHCP pro protokol IPv4 i IPv6. Jedná se o běžný režim provozu ICS. Uživatel nebo aplikace může spustit a zastavit úplný režim ICS prostřednictvím veřejných rozhraní API nebo příkazů netshellu. Tuto službu můžete například zastavit pomocí příkazu net stop sharedaccess z příkazového řádku se zvýšenými oprávněními. Kombinace bezdrátové hostované sítě s úplným ICS znamená, že síťová komunikace pro připojená zařízení není omezena pouze na bezdrátovou PAN. Jakékoli připojené zařízení má přístup k síti (například k internetu) prostřednictvím sdíleného síťového připojení z počítače, na kterém běží bezdrátová hostovaná síť. To umožňuje scénář sdílení sítě pro bezdrátovou hostované síť.
V této části používáme termín full ICS, abychom zjistili, kdy jsou všechny funkce ICS vyvolány ve službě ICS, abychom zajistili přístup ke všem úplným funkcím ICS pomocí bezdrátové hostované sítě.
Dva režimy operací ICS se vzájemně vylučují, přičemž plný ICS má vyšší prioritu. Služba ICS může přejít ze samostatného režimu do úplného režimu, ale ne z úplného režimu do samostatného režimu. Samostatný režim ICS byl zaveden v systému Windows 7 a v systému Windows Server 2008 R2 se službou Wireless LAN nainstalovanou ve spojení s funkcí bezdrátové hostované sítě. Není k dispozici v předchozích verzích Windows.
Jakákoli úplná operace ICS zahrnuje v systému dva různé síťové adaptéry:
- Veřejné rozhraní. Toto je síťové rozhraní s přístupem k internetu. Toto rozhraní používá místní počítač, na kterém běží ICS, ke sdílení internetu s klienty a zařízeními, která se k němu připojují přes SoftAP.
- Privátní rozhraní. Toto je síťové rozhraní, které ostatní zařízení používají pro připojení k místnímu počítači, na kterém běží ICS. Na tomto privátním rozhraní běží server DHCPv4, který poskytuje privátní místní IP adresy ostatním vzdáleným počítačům.
Pokud veřejné rozhraní nemá přístup k internetu, server DHCP v privátním rozhraní nadále poskytuje místní IP adresy připojeným zařízením. Samostatné ICS zahrnuje pouze privátní rozhraní, na kterém běží SoftAP; nezahrnuje žádné veřejné rozhraní.
V každém okamžiku je na místním počítači spuštěna maximálně jedna instance úplného ICS. Pokud už je na místním počítači spuštěná úplná služba ICS, spuštění dalšího úplného ICS vykazuje následující funkční chování:
- Pokud jsou veřejná a privátní rozhraní nového úplného systému ICS stejná jako u stávajícího úplného systému ICS, pak je zahájení druhého úplného systému ICS ekvivalentní no-op.
- Pokud se nové veřejné rozhraní liší od starého veřejného rozhraní, ale nové privátní rozhraní je stejné jako staré privátní rozhraní, spuštění druhého úplného ICS má malý vliv na připojená zařízení ve stejném privátním rozhraní. Možnost přístupu k internetu se může změnit pomocí nového veřejného rozhraní.
- Pokud se nové privátní rozhraní liší od starého privátního rozhraní, funkce ICS přestanou fungovat na starém privátním rozhraní a začnou platit pro nové privátní rozhraní. Jakékoli vzdálené zařízení, které se připojuje k místnímu počítači pomocí starého privátního rozhraní, ztratí připojení IP k místnímu počítači.
Pokud je již spuštěná úplná služba ICS, vyvolání druhého úplného ICS naruší vzdálené připojení zařízení pomocí starého privátního rozhraní, pokud druhá integrace ICS používá jiné nové privátní rozhraní.
Aby bylo možné spravovat a používat službu ICS pro podporu integrace ICS s bezdrátovou hostované sítí, musí softwarová aplikace nejprve získat INetSharingManager rozhraní. Rozhraní INetSharingManager poskytuje přístup přímo nebo nepřímo ke všem ostatním rozhraním COM v rozhraní ICS API. Metoda get_SharingInstalled v rozhraní INetSharingManager hlásí, zda místní počítač podporuje sdílení připojení. Metoda get_EnumEveryConnection na rozhraní INetSharingManager načte rozhraní výčtu pro všechna připojení ve složce připojení. Metoda get_INetSharingConfigurationForINetConnection načte rozhraní INetSharingConfiguration pro zadané připojení. Metody v rozhraní INetSharingConfiguration lze použít k dotazování a změně nastavení ICS.
Před voláním metody get_EnumEveryConnection ve INetSharingManager rozhraní musí být spuštěna bezdrátová hostovaná síť, aby bylo možné zobrazit výčet všech připojení ve složce připojení.
Informace o ICS, veřejných rozhraních a metodách, které lze použít k dotazování a změně nastavení ICS, najdete v dokumentaci k O sdílení internetového připojení a bráně firewall internetového připojení.
Integrace hostované sítě a ICS
Pokud není spuštěna úplná síť ICS, spuštění bezdrátové hostované sítě také interně spustí službu ICS v samostatném režimu s pouze funkcí serveru DHCPv4 pro přidělení IP adres připojeným zařízením v bezdrátovém hostované síťovém rozhraní. Rozsah adres podsítě pro samostatný server DHCPv4 je 192.168.173.0/24. Liší se od rozsahu podsítě 192.168.137.0/24, která se používá s úplným ICS.
Spuštění bezdrátové hostované sítě s úplným ICS využívá následující logiku:
- Pokud ještě není spuštěná úplná služba ICS, spuštění bezdrátové hostované sítě také spustí službu ICS se samostatným serverem DHCPv4.
- Pokud je protokol ICS již spuštěný a privátní rozhraní je bezdrátové hostované síťové rozhraní, jednoduše spusťte bezdrátovou hostovanou síť.
- Pokud už je úplné ICS spuštěné, ale privátní rozhraní není bezdrátové hostované síťové rozhraní, bezdrátové hostované síťové rozhraní se spustí bez funkce serveru DHCPv4.
Dopad výše uvedené logiky zvýrazňuje následující fakta:
- ICS nepřechází z plného režimu do samostatného režimu.
- Samostatný režim může vyvolat pouze bezdrátová hostovaná síť, pokud ICS není spuštěn v plném režimu.
- Pokud je ICS spuštěný v samostatném režimu, bude předem přepnut do úplného režimu, pokud uživatel nebo aplikace spustí ICS v plném režimu.
- Přechod ze samostatného režimu na plný režim v ICS bude rušivý pro připojená zařízení v bezdrátové PAN, pokud privátní rozhraní plného ICS není stejné jako to pro SoftAP.
Spuštění nebo zastavení služby ICS na místním počítači v plném nebo samostatném režimu trvá nějakou dobu. Aplikace by měla zkontrolovat stav služby ICS pomocí funkce NotifyServiceStatusChange, aby se před spuštěním nebo zastavením bezdrátové hostované sítě pro použití s integrací ICS ujistěte, že služba ICS není ve stavu čekání na spuštění nebo zastavení.
Spuštění a zastavení bezdrátové hostované sítě
Systém Windows poskytuje platformu, ve které může současně spravovat bezdrátovou hostované síť více než jednu souběžnou aplikaci. Konkrétně každá aplikace může spustit a zastavit bezdrátovou hostované síť samostatně, bez předchozích znalostí o jiných aplikacích.
Ke spuštění a zastavení hostované sítě existují dvě sady funkcí.
Použití bezdrátové hostované sítě může vyžadovat více aplikací. WlanHostedNetworkStartUsing a WlanHostedNetworkStopUsing spustí a zastaví bezdrátovou hostovanou síť způsobem kompatibilním s jinými souběžnými aplikacemi. Funkce WlanHostedNetworkStartUsing a WlanHostedNetworkStopUsing umožňují aplikaci mít odkaz na bezdrátovou hostované síť. Tento mechanismus udržuje bezdrátové hostované sítě spuštěné za předpokladu, že alespoň jedna jiná aplikace má aktuální odkaz na bezdrátovou hostované síť. Tyto funkce může volat libovolný uživatel. Úspěšná volání WlanHostedNetworkStartUsing musí být doprovázena voláním funkce WlanHostedNetworkStopUsing. Jakákoli změna stavu hostované sítě způsobená funkcí WlanHostedNetworkStartUsing bude automaticky vrácena, pokud volající aplikace zavře svůj volající popisovač (voláním WlanCloseHandle se stejným parametrem hClientHandle předaným WlanHostedNetworkStartUsing) nebo pokud proces skončí.
Funkce WlanHostedNetworkForceStart a WlanHostedNetworkForceStop vynutí spuštění a zastavení bezdrátové hostované sítě. Tyto funkce lze volat pouze v případě, že má uživatel odpovídající zvýšená oprávnění. Úspěšná volání WlanHostedNetworkForceStart mohou být nakonec následována voláním funkce WlanHostedNetworkForceStop v závislosti na návrhu aplikace. Tyto funkce přecházejí stav bezdrátové hostované sítě bez přidružení požadavku k volajícímu popisovači aplikace. Jakákoli změna stavu hostované sítě způsobená funkcí WlanHostedNetworkForceStart by nebyla automaticky vrácena v případě, že volající aplikace zavře svůj popisovač (voláním WlanCloseHandle s tím samým parametrem hClientHandle předaným do WlanHostedNetworkStartUsing), nebo pokud proces skončí. Pokud se aplikace, která volala funkci WlanHostedNetworkForceStart, zavře bez volání jedné z funkcí k zastavení bezdrátové hostované sítě, hostovaná síť zůstane spuštěná. Po zajištění toho, aby uživatel s vyššími systémovými oprávněními přijal zvýšené nároky na napájení spojené s provozováním bezdrátové hostované sítě po delší časové úseky, může aplikace zavolat funkci WlanHostedNetworkForceStart.
Obecná doporučení ohledně funkcí, které je potřeba volat pro spuštění a zastavení bezdrátové hostované sítě, jsou následující:
- Pomocí WlanHostedNetworkStartUsing a WlanHostedNetworkStopUsing funkcí v aplikaci spusťte a zastavte bezdrátovou hostované síť.
- Nepoužívejte funkci WlanHostedNetworkForceStart ke spuštění bezdrátové hostované sítě, pokud ji aplikace nevyžaduje. Funkce WlanHostedNetworkForceStart také vyžaduje zvýšená oprávnění.
- Jako metodu obnovení použijte pouze funkci WlanHostedNetworkForceStop. Funkce WlanHostedNetworkForceStop způsobí okamžité zastavení bezdrátové hostované sítě. Další aplikace, které naslouchají oznámením bezdrátové hostované sítě, mohou potřebovat provést akce obnovení. Další informace najdete v diskuzi níže o sekvenci obnovení bezdrátové hostované sítě.
Spouštěcí sekvence pro bezdrátovou hostované síť
Pro aplikaci, která spouští bezdrátovou hostované síť s úplným ICS, doporučujeme spustit bezdrátovou hostované síť a pak spustit úplné ICS. Pokud už je spuštěná bezdrátová hostovaná síť, měla by aplikace používat funkci WlanHostedNetworkForceStop k zastavení bezdrátové hostované sítě pouze v případě, že je vyžadována úplná síť ICS, ale nebyla povolena před spuštěním hostované sítě. To umožní ostatním aplikacím obnovit se z potenciálních přerušení způsobených začátkem úplného ICS. Další informace najdete v diskuzi níže o sekvenci obnovení bezdrátové hostované sítě. Kombinovaná operace by měla být úspěšná a neúspěšná jako celek.
Poznámka
Před pokusem o vytvoření výčtu odpovídajícího adaptéru pomocí rozhraní IEnumNetSharingEveryConnection musí být spuštěna bezdrátová hostovaná síť.
Následující seřazené kroky jsou doporučenou spouštěcí sekvencí v aplikaci používající bezdrátovou hostovanou síť s úplným ICS:
- Zavolejte funkci WlanHostedNetworkInitSettings, abyste měli jistotu, že je nakonfigurovaná bezdrátová hostovaná síť a připravená k použití.
- Zavolejte tyto funkce WlanHostedNetworkQueryStatus a WlanHostedNetworkQueryProperty, abyste zjistili, jestli je bezdrátová hostovaná síť povolená a dostupná. Pokud není povolená bezdrátová hostovaná síť a není dostupná, vraťte chybu.
- Ověřte, zda je povolena služba ICS používaná pro kompletní ICS. Pokud službu ICS nejde spustit, vraťte chybu.
- Chcete-li vynutit zastavení bezdrátové hostované sítě, zavolejte funkci WlanHostedNetworkForceStop.
- Zavoláte funkci WlanHostedNetworkStartUsing, aby se spustila bezdrátová hostovaná síť.
- Pokud se bezdrátové hostované síti nepodaří spustit, zobrazte chybu.
- Pokud je již spuštěná úplná služba ICS a aktuální veřejné nebo privátní rozhraní se liší od nového rozhraní, které se má použít, uloží aktuální veřejná a privátní rozhraní do mezipaměti. Aplikace se může také rozhodnout vrátit chybu nebo vyzvat uživatele, pokud je integrace ICS již spuštěná.
- Spusťte úplné ICS s novým nastavením pro veřejná a privátní rozhraní.
- Pokud se úplné ICS nepodaří spustit s těmito nastaveními, zkuste spustit úplnou službu ICS s veřejnými a privátními rozhraními uloženými v mezipaměti, pokud byla služba ICS spuštěna dříve. Zavolejte funkci WlanHostedNetworkForceStop, která zastaví bezdrátovou hostovanou síť a vrátí chybu.
- Uveďte, že bezdrátová hostovaná síť a plná konfigurace sdílení internetového připojení (ICS) byly úspěšné.
Sekvence ukončení pro bezdrátovou hostovanou síť
Při použití bezdrátové hostované sítě s úplným ICS, aplikace, která dokončila svou práci, může chtít zastavit bezdrátovou hostované síť a službu ICS použitou pro úplné ICS. V tomto případě se doporučuje volat funkci WlanHostedNetworkForceStop, než volat funkci WlanHostedNetworkStopUsing. Funkce WlanHostedNetworkForceStop zastaví bezdrátovou hostované síť a slouží také k umožnění obnovení jiných aplikací. Další informace najdete v diskuzi níže o sekvenci obnovení bezdrátové hostované sítě.
Následující seřazené kroky představují doporučenou posloupnost zastavení v aplikaci používající bezdrátovou hostovanou síť a úplné ICS:
- Zastavte úplné ICS.
- Zavolejte funkci WlanHostedNetworkForceStop, aby se zastavila bezdrátová hostovaná síť.
Aplikace využívající bezdrátovou hostovanou síť bez úplné ICS, která ukončila svou práci, může jednoduše zavolat funkci WlanHostedNetworkStopUsing nebo WlanHostedNetworkForceStop k zastavení bezdrátové hostované sítě. Pokud byla volána funkce WlanHostedNetworkStartUsing, aby se spustila bezdrátová hostovaná síť, měla by aplikace volat funkci WlanHostedNetworkStopUsing, aby zastavila bezdrátovou hostovanou síť. Pokud byla bezdrátová hostovaná síť již spuštěna před spuštěním aplikace nebo jestli aplikace zavolala funkci WlanHostedNetworkForceStart pro vyvolání bezdrátové hostované sítě, pak aplikace může zavolat funkci WlanHostedNetworkForceStop k zastavení bezdrátové hostované sítě, nebo nemusí dělat nic (nechat bezdrátovou hostovanou síť běžet) podle potřeby.
Sekvence obnovení pro bezdrátovou hostované síť
Akce jiných aplikací můžou mít vliv na aplikaci používající bezdrátovou hostované síť. Služba ICS a rozhraní pro správu ICS neposkytují aplikaci žádnou metodu pro registraci oznámení o změnách ICS. Pokud jiná aplikace volá EnableSharing nebo DisableSharing metody v rozhraní INetSharingConfiguration pro povolení nebo zakázání sdílení na připojení, odešle se zpráva uživatelskému rozhraní, obrazovka, na místním počítači, nikoli do jiných aplikací. Aplikace proto musí spoléhat na oznámení o bezdrátové hostované síti, aby prováděla akce obnovení, když dojde ke změnám ICS nebo bezdrátové hostované sítě.
Aplikace používající bezdrátovou hostovanou síť by se měla zaregistrovat k odběru oznámení bezdrátové hostované sítě voláním WlanRegisterNotification. Pokud jsou potřeba oznámení pouze pro bezdrátovou hostovanou síť, měla by aplikace předat WLAN_NOTIFICATION_SOURCE_HNWK v parametru dwNotifSource předanému WlanRegisterNotification. Pokud jsou potřeba i další bezdrátové notifikace, WLAN_NOTIFICATION_SOURCE_HNWK by měly být kombinovány se zdrojovými konstantami oznámení pro jiné typy bezdrátových oznámení požadovaných a předat tuto hodnotu v parametru dwNotifSource.
Sekvence obnovení je stejná pro aplikace s úplným ICS nebo bez úplného ICS za předpokladu, že aplikace nechtějí službu ICS spouštět znovu. Po přijetí oznámení o zastavení hostované bezdrátové sítě postupujte takto:
- Pokud aplikace s názvem WlanHostedNetworkForceStart slouží k zahájení bezdrátové hostované sítě, restartujte tuto hostovanou síť voláním WlanHostedNetworkForceStart. V opačném případě zavolejte WlanHostedNetworkStartUsing pro restartování bezdrátové hostované sítě.
Sekvence obnovení pro připojená zařízení
Na vzdálená zařízení nebo počítače připojené k bezdrátové hostované síti můžou mít vliv akce jiných aplikací, které mají vliv na ICS a bezdrátovou hostované síť. Naštěstí většina zařízení má v aplikaci zařízení integrovanou logiku opakování, která řeší dočasnou ztrátu signálu nebo roamingu.
Možná sekvence obnovení pro zařízení nebo počítače připojené k bezdrátové hostované síti, která ztratí kontakt, je následující:
- Ovladač bezdrátového zařízení označuje odpojení média k horním vrstvám síťového zásobníku v zařízení.
- Aplikace zařízení spouští pravidelné kontroly dostupnosti bezdrátové hostované sítě.
- Jakmile aplikace zařízení znovu zjistí bezdrátovou hostované síť, zařízení zahájí bezdrátové připojení.
- Po úspěšném připojení k bezdrátové hostované síti aplikace zařízení odpovídajícím způsobem aktualizuje nastavení IP adresy.
Související témata