Usar red hospedada inalámbrica, uso compartido de conexión a Internet
La red inalámbrica hospedada es una nueva característica WLAN compatible con Windows 7 y Windows 8. También se admite en Windows Server 2012 y Windows Server 2008 R2 con el servicio LAN inalámbrico instalado. Esta característica implementa dos funciones principales:
- La virtualización de un adaptador inalámbrico físico en más de un adaptador inalámbrico virtual a veces se conoce como Wi-Fi virtual.
- Un punto de acceso inalámbrico basado en software (AP) a veces se conoce como softAP que usa un adaptador inalámbrico virtual designado.
El uso compartido de conexiones a Internet (ICS) es una característica de Windows proporcionada a través del servicio SharedAccess. En sentido estricto, SharedAccess permite el uso compartido de red a través de un equipo en el que el acceso a la red compartida no proporciona necesariamente acceso a Internet. Usamos el término ICS y SharedAccess indistintamente en esta sección, ya que el uso compartido de conexión a Internet es un escenario importante para la red hospedada inalámbrica y el término ICS es mejor conocido para la comunidad de usuarios.
La red hospedada inalámbrica está estrechamente vinculada a ICS para habilitar tanto la red de área personal inalámbrica (PAN) como los escenarios de uso compartido de Internet. En esta sección se proporcionan recomendaciones generales a los desarrolladores de aplicaciones sobre cómo integrar wireless Hosted Network e ICS mediante las API de ICS y red hospedada inalámbrica pública.
Conexión compartida a Internet
El servicio ICS funciona en uno de los dos modos posibles:
Modo independiente
Solo la función de servidor DHCPv4 funciona cuando se invoca el servicio ICS. Este es un modo de operación especial para ICS y solo está disponible a través de la red hospedada inalámbrica. Un usuario o aplicación no puede iniciar y detener directamente ICS independiente a través de las API públicas de ICS o los comandos netsh . El inicio de la red hospedada inalámbrica normalmente implica iniciar ICS en modo independiente para usar la función de servidor DHCPv4 para proporcionar direcciones IPv4 privadas para dispositivos conectados. La comunicación de red para los dispositivos conectados se limita a enviar y recibir paquetes de red entre un dispositivo conectado y el equipo local que hospeda la red hospedada inalámbrica y entre los propios dispositivos conectados. Esto habilita eficazmente el escenario de red de área personal inalámbrica para la red hospedada inalámbrica.
Modo completo
Todas las características de ICS funcionan cuando se invoca el servicio, como la traducción de direcciones de red y las funciones del servidor DHCP para IPv4 e IPv6. Este es el modo normal de funcionamiento para ICS. Un usuario o aplicación puede iniciar y detener el modo ICS completo a través de api públicas o comandos de netshell. Por ejemplo, este servicio se puede detener mediante net stop sharedaccess desde un símbolo del sistema con privilegios elevados. La combinación de red hospedada inalámbrica con ICS completo, la comunicación de red para los dispositivos conectados no se limita al PAN inalámbrico. Cualquier dispositivo conectado tiene acceso a la red (como Internet) a través de la conexión de red compartida desde el equipo que ejecuta la red hospedada inalámbrica. Esto habilita eficazmente el escenario de uso compartido de red para la red hospedada inalámbrica.
En esta sección, usamos el término ICS completo para significar el caso en el que todas las funciones ICS se invocan en el servicio ICS para proporcionar acceso a todas las características completas de ICS con la red hospedada inalámbrica.
Los dos modos de operación icS son mutuamente excluyentes con ICS completo que tienen mayor prioridad. El servicio ICS puede pasar del modo independiente al modo completo, pero no del modo completo al modo independiente. El modo independiente icS se introdujo en Windows 7 y en Windows Server 2008 R2 con el servicio LAN inalámbrico instalado junto con la característica de red hospedada inalámbrica. No está disponible en versiones anteriores de Windows.
Cualquier operación icS completa implica dos adaptadores de red diferentes en el sistema:
- Interfaz pública. Esta es la interfaz de red con acceso a Internet. Es esta interfaz que el equipo local que ejecuta ICS usa para compartir Internet con clientes y dispositivos que se conectan a él a través de SoftAP.
- Interfaz privada. Esta es la interfaz de red que otros dispositivos usan para conectarse al equipo local que ejecuta ICS. Un servidor DHCPv4 se ejecuta en esta interfaz privada para proporcionar direcciones IP locales privadas a los otros equipos remotos.
Cuando la interfaz pública no tiene acceso a Internet, el servidor DHCP de la interfaz privada sigue proporcionando direcciones IP locales a los dispositivos conectados. IcS independiente solo implica la interfaz privada en la que se ejecuta SoftAP; no implica ninguna interfaz pública.
En cualquier momento, hay como máximo una instancia de ICS completa que se ejecuta en el equipo local. Si el ICS completo ya se está ejecutando en el equipo local, al iniciar otro ICS completo se muestran los siguientes comportamientos funcionales:
- Si las interfaces públicas y privadas de la nueva ICS completa son las mismas que las icS completas existentes, iniciar el segundo ICS completo equivale a una operación sin operación.
- Si la nueva interfaz pública es diferente de la antigua interfaz pública, pero la nueva interfaz privada es la misma que la antigua interfaz privada, iniciar un segundo ICS completo tiene poco impacto en los dispositivos conectados en la misma interfaz privada. La capacidad de acceder a Internet puede cambiar con la nueva interfaz pública.
- Si la nueva interfaz privada es diferente de la antigua interfaz privada, las funciones ICS dejarán de funcionar en la interfaz privada antigua y comenzarán a aplicarse a la nueva interfaz privada. Cualquier dispositivo remoto que se conecte al equipo local mediante la interfaz privada antigua perderá la conectividad IP al equipo local.
Cuando el ICS completo ya se está ejecutando, invocar un segundo ICS completo es perjudicial para los dispositivos conectados de forma remota mediante la interfaz privada antigua, siempre y cuando la segunda integración de ICS use una nueva interfaz privada diferente.
Para administrar y usar el servicio ICS para admitir la integración de ICS con la red hospedada inalámbrica, una aplicación de software primero debe obtener una interfaz INetSharingManager . La interfaz INetSharingManager proporciona acceso directamente o indirectamente a todas las demás interfaces COM de la API icS. El método get_SharingInstalled en la interfaz INetSharingManager informa de si el equipo local admite el uso compartido de conexiones. El método get_EnumEveryConnection en la interfaz INetSharingManager recupera una interfaz de enumeración para todas las conexiones de la carpeta connections. El método get_INetSharingConfigurationForINetConnection recupera una interfaz INetSharingConfiguration para la conexión especificada. Los métodos de la interfaz INetSharingConfiguration se pueden usar para consultar y cambiar la configuración de ICS.
La red hospedada inalámbrica debe iniciarse antes de llamar al método get_EnumEveryConnection en la interfaz INetSharingManager para enumerar todas las conexiones de la carpeta de conexiones.
Para obtener información sobre ICS y las interfaces y los métodos públicos que se pueden usar para consultar y cambiar la configuración de ICS, consulte la documentación sobre el uso compartido de conexión a Internet y el firewall de conexión a Internet.
Integración de red hospedada e ICS
Cuando el ICS completo no se está ejecutando, iniciar una red hospedada inalámbrica también inicia internamente el servicio ICS en modo independiente con solo la función de servidor DHCPv4 para asignar direcciones IP para los dispositivos conectados en la interfaz inalámbrica de red hospedada. El intervalo de direcciones de subred del servidor DHCPv4 independiente es 192.168.173.0/24. Esto es diferente del intervalo de subredes de 192.168.137.0/24 que se usa con ICS completo.
El inicio de una red hospedada inalámbrica con ICS completo emplea la siguiente lógica:
- Si el ICS completo aún no se está ejecutando, al iniciar una red hospedada inalámbrica también se inicia el servicio ICS con un servidor DHCPv4 independiente.
- Si el ICS completo ya se está ejecutando y la interfaz privada es la interfaz de red hospedada inalámbrica, simplemente inicie la red hospedada inalámbrica.
- Si el ICS completo ya se está ejecutando, pero la interfaz privada no es la interfaz de red hospedada inalámbrica, la red hospedada inalámbrica se iniciará sin la función de servidor DHCPv4 en la interfaz de red hospedada inalámbrica.
El impacto de la lógica anterior resalta los siguientes hechos:
- ICS no realiza la transición del modo completo al modo independiente.
- El modo independiente solo puede ser invocado por la red hospedada inalámbrica cuando ICS no se ejecuta en modo completo.
- Si ICS se ejecuta en modo independiente, se adelantará al modo completo si un usuario o aplicación inicia ICS en modo completo.
- La transición del modo independiente al modo completo en ICS será perjudicial para los dispositivos conectados en el PAN inalámbrico si la interfaz privada de ICS completa no es la misma que la de SoftAP.
Se tarda en iniciar o detener el servicio ICS en el equipo local en modo completo o independiente. Una aplicación debe comprobar el estado del servicio ICS mediante la función NotifyServiceStatusChange para asegurarse de que el servicio ICS no está en el estado start/stop pendiente antes de iniciar o detener la red hospedada inalámbrica para su uso con la integración de ICS.
Iniciar y detener la red hospedada inalámbrica
Windows proporciona una plataforma en la que se permite que más de una aplicación simultánea administre una red hospedada inalámbrica al mismo tiempo. En concreto, cada aplicación puede iniciar y detener la red hospedada inalámbrica por sí misma, sin tener conocimiento previo sobre otras aplicaciones.
Hay dos conjuntos de funciones para iniciar y detener una red hospedada.
Es posible que varias aplicaciones requieran el uso de la red hospedada inalámbrica. Las funciones WlanHostedNetworkStartUsing y WlanHostedNetworkStopUsing inician y detienen una red hospedada inalámbrica de forma que sea compatible con otras aplicaciones simultáneas. Las funciones WlanHostedNetworkStartUsing y WlanHostedNetworkStopUsing permiten que una aplicación tenga una referencia a la red hospedada inalámbrica. Este mecanismo mantiene la red hospedada inalámbrica en ejecución siempre que al menos una otra aplicación tenga una referencia actual a la red hospedada inalámbrica. Cualquier usuario puede llamar a estas funciones. Las llamadas correctas a WlanHostedNetworkStartUsing deben coincidir con las llamadas a la función WlanHostedNetworkStopUsing . Cualquier cambio de estado de red hospedado causado por la función WlanHostedNetworkStartUsing se deshacería automáticamente si la aplicación que realiza la llamada cierra su identificador de llamada (llamando a WlanCloseHandle con el mismo parámetro hClientHandle pasado a WlanHostedNetworkStartUsing) o si finaliza el proceso.
Las funciones WlanHostedNetworkForceStart y WlanHostedNetworkForceStop obligan a iniciar y detener una red hospedada inalámbrica. Estas funciones solo se pueden llamar si el usuario tiene el privilegio elevado adecuado. Las llamadas correctas a WlanHostedNetworkForceStart pueden coincidir finalmente mediante una llamada a la función WlanHostedNetworkForceStop , dependiendo del diseño de la aplicación. Estas funciones realizan la transición del estado de red hospedada inalámbrica sin asociar la solicitud con el identificador de llamada de la aplicación. Cualquier cambio de estado de red hospedado causado por la función WlanHostedNetworkForceStart no se deshacerá automáticamente si la aplicación que realiza la llamada cierra su identificador de llamada (llamando a WlanCloseHandle con el mismo parámetro hClientHandle pasado a WlanHostedNetworkStartUsing) o si finaliza el proceso. Si la aplicación que llamó a la función WlanHostedNetworkForceStart se cierra sin llamar a una de las funciones para detener la red hospedada inalámbrica, la red hospedada queda en ejecución. Una aplicación podría llamar a la función WlanHostedNetworkForceStart después de asegurarse de que un usuario del sistema con privilegios elevados acepta los mayores requisitos de energía implicados en la ejecución de la red hospedada inalámbrica durante largos períodos de tiempo.
Las recomendaciones generales sobre qué funciones llamar a para iniciar y detener una red hospedada inalámbrica son las siguientes:
- Use las funciones WlanHostedNetworkStartUsing y WlanHostedNetworkStopUsing dentro de una aplicación para iniciar y detener una red hospedada inalámbrica.
- No use la función WlanHostedNetworkForceStart para iniciar una red hospedada inalámbrica a menos que sea absolutamente necesaria para la aplicación. La función WlanHostedNetworkForceStart también requiere privilegios elevados.
- Use solo la función WlanHostedNetworkForceStop como método de recuperación. La función WlanHostedNetworkForceStop hace que una red hospedada inalámbrica se detenga inmediatamente. Es posible que otras aplicaciones que escuchen notificaciones inalámbricas de red hospedada necesiten realizar acciones de recuperación. Para obtener más información, consulte la explicación siguiente sobre la secuencia de recuperación para la red hospedada inalámbrica.
Secuencia de inicio para la red hospedada inalámbrica
Para una aplicación que inicia una red hospedada inalámbrica con ICS completo, la recomendación es iniciar la red inalámbrica hospedada y, a continuación, iniciar icS completo. Si ya se está ejecutando una red hospedada inalámbrica, una aplicación debe usar la función WlanHostedNetworkForceStop para detener la red hospedada inalámbrica solo si se requiere ICS completo, pero no se ha habilitado antes de que se inicie la red hospedada. Esto permitirá que otras aplicaciones se recuperen de posibles interrupciones causadas por el inicio de ICS completo. Para obtener más información, consulte la explicación siguiente sobre la secuencia de recuperación para la red hospedada inalámbrica. La operación combinada debe realizarse correctamente y producir un error en su conjunto.
Nota
La red hospedada inalámbrica debe iniciarse antes de intentar enumerar el adaptador correspondiente mediante la interfaz IEnumNetSharingEveryConnection .
Los siguientes pasos ordenados son la secuencia de inicio recomendada en una aplicación mediante red hospedada inalámbrica con ICS completo:
- Llame a la función WlanHostedNetworkInitSettings para asegurarse de que la red hospedada inalámbrica está configurada y lista para usarse.
- Llame a las funciones WlanHostedNetworkQueryStatus y WlanHostedNetworkQueryProperty para determinar si la red hospedada inalámbrica está permitida y disponible. Si la red hospedada inalámbrica no está permitida y no está disponible, devuelva un error.
- Pruebe para ver si se permite el servicio ICS usado para el ICS completo. Si no se puede iniciar el servicio ICS, devuelva un error.
- Llame a la función WlanHostedNetworkForceStop para forzar una detención de la red hospedada inalámbrica.
- Llame a la función WlanHostedNetworkStartUsing para iniciar la red hospedada inalámbrica.
- Si la red hospedada inalámbrica no se inicia, devuelve un error.
- Si el ICS completo ya se está ejecutando y la interfaz pública o privada actual es diferente de la nueva interfaz que se va a usar, almacene en caché las interfaces públicas y privadas actuales. Una aplicación también puede optar por devolver un error o preguntar al usuario si ya se está ejecutando la integración de ICS.
- Comience el ICS completo con la nueva configuración de las interfaces públicas y privadas.
- Si el ICS completo no comienza con esta configuración, intente iniciar el servicio ICS completo con las interfaces públicas y privadas almacenadas en caché si se estaba ejecutando el ICS completo antes. Llame a la función WlanHostedNetworkForceStop para detener la red hospedada inalámbrica y devolver un error.
- Devuelve el éxito de que la red hospedada inalámbrica y el ICS completo se realicen correctamente.
Secuencia de detención para la red hospedada inalámbrica
Cuando se usa la red hospedada inalámbrica con ICS completo, una aplicación que ha terminado su trabajo puede querer detener la red hospedada inalámbrica y el servicio ICS utilizado para el ICS completo. En este caso, se recomienda llamar a la función WlanHostedNetworkForceStop para detener la red hospedada en lugar de llamar a la función WlanHostedNetworkStopUsing . La función WlanHostedNetworkForceStop detiene la red hospedada inalámbrica y también sirve para permitir que otras aplicaciones se recuperen. Para obtener más información, consulte la explicación siguiente sobre la secuencia de recuperación para la red hospedada inalámbrica.
Los siguientes pasos ordenados son la secuencia de detención recomendada en una aplicación mediante la red hospedada inalámbrica y el ICS completo:
- Detenga el ICS completo.
- Llame a la función WlanHostedNetworkForceStop para detener la red hospedada inalámbrica.
Una aplicación que usa una red hospedada inalámbrica sin ICS completo que termina con su trabajo simplemente necesita llamar a la función WlanHostedNetworkStopUsing o WlanHostedNetworkForceStop para detener la red hospedada inalámbrica. Si se llamó a la función WlanHostedNetworkStartUsing para iniciar la red hospedada inalámbrica, la aplicación debe llamar a la función WlanHostedNetworkStopUsing para detener la red hospedada inalámbrica. Si la red hospedada inalámbrica ya se inició antes de la aplicación o la aplicación llamó a la función WlanHostedNetworkForceStart para forzar el inicio de la red hospedada inalámbrica, la aplicación puede llamar a la función WlanHostedNetworkForceStop para detener la red hospedada inalámbrica o hacer nada (deje la red hospedada inalámbrica iniciada) en función del escenario.
Secuencia de recuperación para la red hospedada inalámbrica
Una aplicación que usa la red hospedada inalámbrica puede verse afectada por las acciones de otras aplicaciones. El servicio ICS y las interfaces para administrar ICS no proporcionan ningún método para que una aplicación se registre para las notificaciones de cambios de ICS. Si otra aplicación llama a los métodos EnableSharing o DisableSharing en la interfaz INetSharingConfiguration para habilitar o deshabilitar el uso compartido en una conexión, se envía un mensaje a la interfaz de usuario (la pantalla) del equipo local y no a otras aplicaciones. Por lo tanto, una aplicación debe confiar en las notificaciones inalámbricas de red hospedada para realizar acciones de recuperación cuando se producen cambios en icS o red hospedada inalámbrica.
Una aplicación que usa la red hospedada inalámbrica debe registrarse para recibir notificaciones inalámbricas de red hospedada llamando a WlanRegisterNotification. Si solo se necesitan notificaciones para la red hospedada inalámbrica, la aplicación debe pasar WLAN_NOTIFICATION_SOURCE_HNWK en el parámetro dwNotifSource pasado a WlanRegisterNotification. Si también se necesitan otras notaciones inalámbricas, WLAN_NOTIFICATION_SOURCE_HNWK debe combinarse con las constantes de origen de notificación para otros tipos de notificaciones inalámbricas deseadas y pasar este valor en el parámetro dwNotifSource .
La secuencia de recuperación es la misma para las aplicaciones con o sin ICS completa, suponiendo que las aplicaciones no quieren volver a iniciar el servicio ICS. Después de recibir una notificación de red hospedada inalámbrica que la red hospedada se ha detenido, haga lo siguiente:
- Si la aplicación llamada WlanHostedNetworkForceStart para iniciar la red hospedada inalámbrica, reinicie la red hospedada llamando a WlanHostedNetworkForceStart. De lo contrario, llame a WlanHostedNetworkStartUsing para reiniciar la red hospedada inalámbrica.
Secuencia de recuperación para dispositivos conectados
Los dispositivos o equipos remotos conectados a la red hospedada inalámbrica pueden verse afectados por las acciones de otras aplicaciones que afectan a ICS y a la red hospedada inalámbrica. Afortunadamente, la mayoría de los dispositivos han integrado lógica de reintento en la aplicación de dispositivo para tratar con una pérdida temporal de señal o itinerancia.
Una posible secuencia de recuperación para dispositivos o equipos conectados a la red hospedada inalámbrica que pierde contacto es la siguiente:
- El controlador de dispositivo inalámbrico indica una desconexión multimedia a las capas superiores de la pila de red en el dispositivo.
- La aplicación del dispositivo inicia comprobaciones periódicas de la disponibilidad de la red hospedada inalámbrica.
- Una vez que la aplicación de dispositivo detecta de nuevo la red hospedada inalámbrica, el dispositivo inicia una conexión inalámbrica.
- Tras una conexión correcta con la red hospedada inalámbrica, la aplicación del dispositivo actualiza su configuración de IP en consecuencia.
Temas relacionados