Поделиться через


Использование виртуальной беспроводной сети и общего доступа к Интернету

Беспроводная размещённая сеть — это новая функция WLAN, поддерживаемая в операционных системах Windows 7 и Windows 8. Она также поддерживается в Windows Server 2012 и Windows Server 2008 R2 с установленной беспроводной локальной сетью. Эта функция реализует две основные функции:

  • Виртуализация физического беспроводного адаптера в несколько виртуальных беспроводных адаптеров иногда называется Virtual Wi-Fi.
  • Программная беспроводная точка доступа (AP), иногда называемая SoftAP, использующая этот назначенный виртуальный беспроводной адаптер.

Общий доступ к Интернету (ICS) — это функция в Windows, предоставляемая через службу SharedAccess. Строго говоря, SharedAccess обеспечивает общий доступ к сети через компьютер, где общий сетевой доступ не обязательно предоставляет доступ к Интернету. Мы используем термин ICS и SharedAccess взаимозаменяемо в этом разделе, так как общий доступ к Интернету является основным сценарием для беспроводной размещенной сети, и термин ICS лучше известен сообществу пользователей.

Беспроводная размещенная сеть тесно связана с ICS, чтобы обеспечить как беспроводные личные сети (PAN), так и сценарии общего доступа к Интернету. В этом разделе приведены общие рекомендации для разработчиков приложений по интеграции беспроводной размещенной сети и ICS с помощью общедоступных API-интерфейсов беспроводной сети и ICS.

Общий доступ к Интернету

Служба ICS работает в одном из двух возможных режимов:

  • Автономный режим

    Только функция сервера DHCPv4 работает при вызове службы ICS. Это специальный режим эксплуатации для ICS и доступен только через беспроводную размещённую сеть. Пользователь или приложение не может напрямую запускать и останавливать автономные ICS с использованием общедоступных API ICS или команд netsh. Запуск беспроводной размещенной сети обычно включает запуск ICS в автономном режиме для использования функции сервера DHCPv4 для предоставления частных IPv4-адресов для подключенных устройств. Сетевая связь для подключенных устройств ограничена отправкой и получением сетевых пакетов между подключенным устройством и локальным компьютером, на котором размещена беспроводная размещённая сеть, и между подключенными устройствами. Это позволяет эффективно использовать сценарий беспроводной личной сети для беспроводной размещенной сети.

  • Полный режим

    Все функции ICS работают при вызове службы, таких как преобразование сетевых адресов и функции DHCP-сервера для IPv4 и IPv6. Это обычный режим работы для ICS. Пользователь или приложение могут запускать и останавливать полный режим ICS с помощью общедоступных API или команд netshell. Например, эту службу можно остановить с помощью net stop sharedaccess из командной строки с повышенными привилегиями. Объединение беспроводной размещенной сети с полной ICS, сетевое подключение для подключенных устройств не ограничено беспроводной PAN-сетью. Любое подключенное устройство имеет доступ к сети (например, Интернет) через общее сетевое подключение с компьютера под управлением беспроводной размещенной сети. Это эффективно активирует сценарий общего доступа к беспроводной развернутой сети.

В этом разделе мы используем термин "full ICS" в значении случая, когда все функции ICS вызываются в службе ICS для обеспечения доступа ко всем возможностям полного ICS в беспроводной размещенной сети.

Два режима работы ICS являются взаимоисключающими, причем полный режим ICS имеет более высокий приоритет. Служба ICS может переходить от автономного режима к полному режиму, но не из полного режима в автономный режим. Автономный режим ICS появился в Windows 7 и Windows Server 2008 R2 со службой беспроводной локальной сети, установленной в сочетании с функцией беспроводной размещенной сети. Она недоступна в предыдущих версиях Windows.

Любая полная операция ICS включает два разных сетевых адаптера в системе:

  • Общедоступный интерфейс. Это сетевой интерфейс с доступом к Интернету. Это интерфейс, который локальный компьютер под управлением ICS использует для совместного использования Интернета с клиентами и устройствами, подключающимися к нему через SoftAP.
  • Закрытый интерфейс. Это сетевой интерфейс, используемый другими устройствами для подключения к локальному компьютеру под управлением ICS. Сервер DHCPv4 работает на этом частном интерфейсе для предоставления частных локальных IP-адресов другим удаленным компьютерам.

Если общедоступный интерфейс не имеет доступа к Интернету, DHCP-сервер на частном интерфейсе продолжает предоставлять локальные IP-адреса подключенным устройствам. Автономный ICS включает только частный интерфейс, на котором выполняется SoftAP; Он не включает в себя открытый интерфейс.

В любое время на локальном компьютере выполняется по крайней мере один экземпляр полного ICS. Если на локальном компьютере уже запущен полный ICS, запуск другого полного ICS демонстрирует следующее функциональное поведение:

  • Если общедоступные и частные интерфейсы нового полного ICS совпадают с существующими полными ICS, запуск второго полного ICS эквивалентен no-op.
  • Если новый общедоступный интерфейс отличается от старого общедоступного интерфейса, но новый частный интерфейс совпадает со старым частным интерфейсом, запуск второго полного ICS мало влияет на подключенные устройства, использующие тот же частный интерфейс. Возможность доступа к Интернету может измениться с помощью нового общедоступного интерфейса.
  • Если новый частный интерфейс отличается от старого частного интерфейса, функции ICS перестают работать над старым частным интерфейсом и начинают применяться к новому частному интерфейсу. Любое удаленное устройство, подключающееся к локальному компьютеру с помощью старого частного интерфейса, потеряет IP-подключение к локальному компьютеру.

Если полный ICS уже запущен, вызов второго полного ICS нарушает работу удаленно подключенных устройств с помощью прежнего закрытого интерфейса, поскольку вторая интеграция ICS использует другой новый закрытый интерфейс.

Чтобы управлять и использовать службу ICS для поддержки интеграции ICS с беспроводной размещенной сетью, программное приложение должно сначала получить интерфейс INetSharingManager. Интерфейс INetSharingManager предоставляет доступ напрямую или косвенно ко всем другим com-интерфейсам в API ICS. Метод get_SharingInstalled интерфейса INetSharingManager сообщает, поддерживает ли локальный компьютер общий доступ к подключениям. Метод get_EnumEveryConnection в интерфейсе INetSharingManager извлекает интерфейс перечисления для всех подключений в папке подключений. Метод get_INetSharingConfigurationForINetConnection получает интерфейс INetSharingConfiguration для указанного подключения. Методы в интерфейсе INetSharingConfiguration можно использовать для запроса и изменения параметров ICS.

Перед вызовом метода get_EnumEveryConnection в интерфейсе INetSharingManager необходимо запустить беспроводную сеть, чтобы перечислить все подключения в папке подключений.

Сведения об ICS и общедоступных интерфейсах и методах, которые можно использовать для запроса и изменения параметров ICS, см. в документации по о совместном использовании подключений к Интернету и брандмауэре подключения к Интернету.

Интеграция размещенной сети и ICS

Если полная служба ICS не запущена, запуск беспроводной гостевой сети также внешне запускает службу ICS в самостоятельном режиме только с функцией DHCPv4 для выделения IP-адресов для подключенных устройств на беспроводном интерфейсе. Диапазон адресов подсети для автономного сервера DHCPv4 — 192.168.173.0/24. Это отличается от диапазона подсети 192.168.137.0/24, используемого с полными ICS.

При запуске беспроводной размещенной сети с полным ICS используется следующая логика:

  • Если полная служба ICS еще не запущена, запуск беспроводной размещенной сети также запускает службу ICS с автономным сервером DHCPv4.
  • Если полное ICS уже запущено и частный интерфейс — это интерфейс беспроводной размещенной сети, просто запустите беспроводную размещенную сеть.
  • Если полная среда ICS уже запущена, но частный интерфейс не является интерфейсом беспроводной размещенной сети, это сеть будет запущена без функции сервера DHCPv4 на интерфейсе размещенной сети.

Влияние приведенной выше логики подчеркивает следующие факты:

  • ICS не переходит от полного режима к автономному режиму.
  • Автономный режим может вызываться только беспроводной размещенной сетью, если ICS не работает в полном режиме.
  • Если ICS работает в автономном режиме, он будет переключён на полный режим, если пользователь или приложение запускает ICS в полном режиме.
  • Переход от автономного режима к полному режиму в ICS будет разрушительным для подключенных устройств в беспроводном PAN, если частный интерфейс полной ICS не совпадает с тем, что и для SoftAP.

Требуется время, чтобы запустить или остановить службу ICS на локальном компьютере в полном или автономном режиме. Приложение должно проверить состояние службы ICS с помощью функции NotifyServiceStatusChange, чтобы убедиться, что служба ICS не находится в состоянии ожидания запуска и остановки перед началом или остановкой беспроводной размещенной сети для использования с интеграцией ICS.

Запуск и остановка беспроводной размещенной сети

Windows предоставляет платформу, в которой одновременно разрешено управлять беспроводной размещенной сетью несколькими параллельными приложениями. В частности, каждое приложение может запускать и останавливать эту беспроводную размещенную сеть самостоятельно, без предварительного знания о других приложениях.

Существует два набора функций для запуска и остановки размещенной сети.

Для нескольких приложений может потребоваться использование беспроводной размещенной сети. WlanHostedNetworkStartUsing и WlanHostedNetworkStopUsing запускают и останавливают беспроводную размещенную сеть таким образом, чтобы это было совместимо с другими одновременно работающими приложениями. Функции WlanHostedNetworkStartUsing и WlanHostedNetworkStopUsing позволяют приложению иметь ссылку на беспроводную размещенную сеть. Этот механизм обеспечивает работу беспроводной размещенной сети, если хотя бы одно другое приложение имеет текущую ссылку на беспроводной размещенной сети. Любой пользователь может вызывать эти функции. Успешные вызовы WlanHostedNetworkStartUsing должны сопровождаться вызовами функции WlanHostedNetworkStopUsing. Любое изменение состояния размещенной сети, вызванное функцией WlanHostedNetworkStartUsing, будет автоматически отменено, если вызывающее приложение закрывает вызывающий дескриптор, вызывая WlanCloseHandle с тем же параметром hClientHandle, переданным в WlanHostedNetworkStartUsing, или если процесс завершается.

функции WlanHostedNetworkForceStart и WlanHostedNetworkForceStop принудительно запускают и останавливают беспроводную размещенную сеть. Эти функции можно вызывать только в том случае, если у пользователя есть соответствующие повышенные привилегии. Успешные вызовы WlanHostedNetworkForceStart могут в конечном итоге сопровождаться вызовом функции WlanHostedNetworkForceStop в зависимости от дизайна приложения. Эти функции переводят состояние беспроводной сети хостинга без ассоциации запроса с дескриптором вызова приложения. Любое изменение состояния размещенной сети, вызванное функцией WlanHostedNetworkForceStart, не будет автоматически отменено, если приложение, которое вызывает её, закроет свой вызывающий дескриптор (используя WlanCloseHandle с тем же параметром hClientHandle, который был передан в WlanHostedNetworkStartUsing) или если процесс завершится. Если приложение, которое вызывает функцию WlanHostedNetworkForceStart, закрывается без вызова одной из функций для остановки беспроводной размещенной сети, то размещенная сеть продолжает работать. Приложение может вызвать функцию WlanHostedNetworkForceStart после того, как администратор системы согласится с повышенными требованиями к мощности, связанными с работой беспроводной размещенной сети в течение длительного периода времени.

Общие рекомендации по вызову функций для запуска и остановки беспроводной размещенной сети следующие:

  • Используйте функции WlanHostedNetworkStartUsing и WlanHostedNetworkStopUsing в приложении для запуска и остановки беспроводной размещенной сети.
  • Не используйте функцию WlanHostedNetworkForceStart для запуска беспроводной размещенной сети, если она не требуется приложению. Функция WlanHostedNetworkForceStart также требует повышенных привилегий.
  • Используйте функцию WlanHostedNetworkForceStop только в качестве метода восстановления. Функция WlanHostedNetworkForceStop приводит к немедленной остановке беспроводной сети Hosted Network. Другим приложениям, которые прослушивают уведомления беспроводной размещенной сети, может потребоваться выполнить действия по восстановлению. Дополнительные сведения см. в описании ниже последовательности восстановления для беспроводной размещенной сети.

Последовательность запуска для беспроводной размещенной сети

Для приложения, которое запускает беспроводную размещённую сеть с полными компонентами ICS, рекомендуется сначала запустить беспроводную размещённую сеть, а затем полные компоненты ICS. Если беспроводная размещенная сеть уже запущена, приложение должно использовать функцию WlanHostedNetworkForceStop для остановки этой сети только в том случае, если требуется полное совместное использование интернет-соединения (ICS), но оно не было включено до запуска размещенной сети. Это позволит другим приложениям восстановиться после потенциальных сбоев, вызванных началом полного ICS. Дополнительные сведения см. в описании ниже последовательности восстановления для беспроводной размещенной сети. Объединенная операция должна либо завершиться успешно, либо потерпеть неудачу в целом.

Заметка

Перед попыткой перечисления соответствующего адаптера необходимо запустить беспроводную сеть с помощью интерфейса IEnumNetSharingEveryConnection.

 

Следующие упорядоченные шаги представляют собой рекомендуемую последовательность запуска в приложении, использующем беспроводную сеть-хост с полным общим доступом к Интернету (ICS).

  • Вызовите функцию WlanHostedNetworkInitSettings, чтобы убедиться, что размещенная беспроводная сеть настроена и готова к использованию.
  • Вызовите функции WlanHostedNetworkQueryStatus и WlanHostedNetworkQueryProperty, чтобы определить, разрешена и доступна ли беспроводная гостевая сеть. Если беспроводная размещённая сеть запрещена и недоступна, возвращается ошибка.
  • Проверьте, разрешена ли служба ICS, используемая для полноценной работы ICS. Если не удается запустить службу ICS, верните ошибку.
  • Вызовите функцию WlanHostedNetworkForceStop для принудительной остановки беспроводной размещённой сети.
  • Вызовите функцию WlanHostedNetworkStartUsing, чтобы запустить беспроводную размещенную сеть.
  • Если не удается запустить беспроводную размещенную сеть, сообщите об ошибке.
  • Если полный icS уже запущен, а текущий общедоступный или частный интерфейс отличается от нового интерфейса, кэшируйте текущие общедоступные и частные интерфейсы. Приложение может также вернуть ошибку или предупредить пользователя, если интеграция ICS уже запущена.
  • Запустите полный ICS с новыми параметрами для общедоступных и частных интерфейсов.
  • Если полный ICS не удается запустить с этими параметрами, попробуйте запустить полную службу ICS с кэшированными общедоступными и частными интерфейсами, если полный ICS работал ранее. Вызовите функцию WlanHostedNetworkForceStop для остановки беспроводной размещенной сети и возврата сообщения об ошибке.
  • Возвращает сообщение об успешной работе беспроводной размещенной сети и полной ICS.

Последовательность остановки для беспроводной хост-сети

При использовании беспроводной размещённой сети с полными функциями ICS приложению, которое завершило свою работу, может понадобиться остановить беспроводную размещённую сеть и службу ICS, используемую для полного ICS. В этом случае рекомендуется вызвать функцию WlanHostedNetworkForceStop, чтобы остановить размещенную сеть, вместо вызова функции WlanHostedNetworkStopUsing. Функция WlanHostedNetworkForceStop останавливает беспроводную хост-сеть и также позволяет другим приложениям восстанавливаться. Дополнительные сведения см. в описании ниже последовательности восстановления для беспроводной размещенной сети.

Следующие упорядоченные шаги представляют собой рекомендуемую последовательность остановки приложения с использованием беспроводной размещенной сети и полной ICS.

  • Остановите полный ICS.
  • Вызовите функцию WlanHostedNetworkForceStop, чтобы остановить размещённую беспроводную сеть.

Приложению, использующему беспроводную размещённую сеть без полноценного Internet Connection Sharing, чтобы завершить свою работу, необходимо просто вызвать функцию WlanHostedNetworkStopUsing или WlanHostedNetworkForceStop для остановки беспроводной размещённой сети. Если функция WlanHostedNetworkStartUsing была вызвана, чтобы запустить беспроводную хостинговую сеть, приложение должно вызвать функцию WlanHostedNetworkStopUsing, чтобы остановить беспроводную хостинговую сеть. Если беспроводная размещенная сеть уже была запущена до запуска приложения или если приложение вызвало функцию WlanHostedNetworkForceStart, чтобы принудительно запустить беспроводную размещенную сеть, приложение может вызвать функцию WlanHostedNetworkForceStop, чтобы остановить беспроводную размещенную сеть или ничего не предпринимать (оставив беспроводную размещенную сеть запущенной) в зависимости от сценария.

Последовательность восстановления для беспроводной виртуальной сети

Приложение, использующее беспроводную размещенную сеть, может повлиять на действия других приложений. Служба ICS и интерфейсы для управления ICS не предоставляют никаких методов для приложения для регистрации уведомлений об изменениях ICS. Если другое приложение вызывает метод EnableSharing или методы DisableSharing в интерфейсе INetSharingConfiguration, чтобы включить или отключить общий доступ к подключению, сообщение отправляется в пользовательский интерфейс (экран) на локальном компьютере не в другие приложения. Поэтому приложению необходимо полагаться на уведомления от беспроводной Hosted Network для выполнения действий восстановления при изменении ICS или беспроводной Hosted Network.

Приложение, использующее беспроводную размещенную сеть, должно подписаться на уведомления беспроводной размещенной сети, вызвав WlanRegisterNotification. Если необходимы уведомления только для беспроводной размещенной сети, приложение должно передавать WLAN_NOTIFICATION_SOURCE_HNWK в параметре dwNotifSource, переданном WlanRegisterNotification. Если также требуются другие виды беспроводных уведомлений, то WLAN_NOTIFICATION_SOURCE_HNWK следует объединить с константами источника уведомлений для других типов беспроводных уведомлений и передать это значение в параметре dwNotifSource.

Последовательность восстановления одинакова для приложений с полными ICS или без нее, если приложения не хотят снова запускать службу ICS. После получения уведомления беспроводной размещённой сети о том, что размещённая сеть остановлена, выполните следующие действия:

  • Если приложение вызвало WlanHostedNetworkForceStart для запуска беспроводной размещенной сети, то перезапустите размещенную сеть, вызвав WlanHostedNetworkForceStart. В противном случае вызовите WlanHostedNetworkStartUsing для перезапуска размещённой беспроводной сети.

Последовательность восстановления для подключенных устройств

Удаленные устройства или компьютеры, подключенные к беспроводной размещенной сети, могут повлиять на действия других приложений, влияющих на ICS и беспроводную размещенную сеть. К счастью, большинство устройств имеют встроенную логику повторных попыток в своих приложениях, чтобы справляться с временной потерей сигнала или при роуминге.

Возможная последовательность восстановления для устройств или компьютеров, подключенных к беспроводной размещенной сети, которая теряет контакт, является следующим:

  • Драйвер беспроводного устройства сообщает верхним уровням сетевого стека на устройстве о разрыве соединения с сетью.
  • Приложение устройства запускает периодические проверки доступности беспроводной размещенной сети.
  • После повторного обнаружения беспроводной размещенной сети устройство инициирует беспроводное подключение.
  • После успешного подключения к беспроводной размещенной сети приложение устройства обновляет параметры IP-адресов соответствующим образом.

О беспроводной размещенной сети

Пример хостинговой беспроводной сети

WlanHostedNetworkForceStart

WlanHostedNetworkInitSettings

WlanHostedNetworkQueryProperty

WlanHostedNetworkQuerySecondaryKey

WlanHostedNetworkQueryStatus

ОбновлениеПараметровБезопасностиСетиWlanHosted

WlanHostedNetworkSetProperty

WlanHostedNetworkSetSecondaryKey

WlanHostedNetworkStartUsing

ОстановитьИспользованиеХостинговойСетиWlan

WlanRegisterVirtualStationNotification