Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A rede hospedada sem fio é um novo recurso WLAN suportado no Windows 7 e Windows 8. Também é suportado no Windows Server 2012 e no Windows Server 2008 R2 com o Serviço de LAN sem fios instalado. Este recurso implementa duas funções principais:
- A virtualização de um adaptador sem fio físico em mais de um adaptador sem fio virtual às vezes referido como Wi-Fi Virtual.
- Um ponto de acesso sem fio (AP) baseado em software às vezes referido como um SoftAP que usa um adaptador sem fio virtual designado.
O Compartilhamento de Conexão com a Internet (ICS) é um recurso do Windows fornecido por meio do Serviço SharedAccess. Estritamente falando, SharedAccess permite o compartilhamento de rede através de um computador onde o acesso à rede compartilhada não fornece necessariamente acesso à Internet. Usamos o termo ICS e SharedAccess de forma intercambiável nesta seção, uma vez que o Compartilhamento de Conexão com a Internet é um cenário importante para a Rede Hospedada sem fio e o termo ICS é mais conhecido pela comunidade de usuários.
A rede hospedada sem fio está intimamente ligada ao ICS para habilitar os cenários de rede pessoal sem fio (PAN) e de compartilhamento de Internet. Esta seção fornece recomendações gerais aos desenvolvedores de aplicativos sobre como integrar a Rede Hospedada sem fio e o ICS usando a Rede Hospedada sem fio pública e as APIs ICS.
Compartilhamento de conexão com a Internet
O Serviço ICS opera em um dos dois modos possíveis:
Modo autónomo
Somente a função de servidor DHCPv4 está operando quando o serviço ICS é invocado. Este é um modo de operação especial para ICS e só é disponibilizado através da rede hospedada sem fio. Um utilizador ou aplicação não consegue iniciar ou parar diretamente o ICS autónomo através de APIs públicas do ICS ou comandos netsh. Iniciar a rede hospedada sem fio normalmente envolve iniciar o ICS no modo autônomo para usar a função de servidor DHCPv4 para fornecer endereços IPv4 privados para dispositivos conectados. A comunicação de rede para os dispositivos conectados está limitada ao envio e recebimento de pacotes de rede entre um dispositivo conectado e o computador local que hospeda a rede hospedada sem fio e entre os próprios dispositivos conectados. Isso habilita efetivamente o cenário de rede de área pessoal sem fio para a rede hospedada sem fio.
Modo completo
Todos os recursos do ICS estão operando quando o serviço é invocado, como conversão de endereços de rede e funções de servidor DHCP para IPv4 e IPv6. Este é o modo normal de operação para ICS. Um usuário ou aplicativo pode iniciar e parar o modo ICS completo por meio de APIs públicas ou comandos netshell. Por exemplo, esse serviço pode ser interrompido usando net stop sharedaccess a partir de um prompt de comando elevado. Combinando rede hospedada sem fio com ICS completo, a comunicação de rede para os dispositivos conectados não está limitada ao PAN sem fio. Qualquer dispositivo conectado tem acesso à rede (como a Internet) através da conexão de rede compartilhada do computador que executa a rede hospedada sem fio. Isso habilita efetivamente o cenário de compartilhamento de rede para a rede hospedada sem fio.
Nesta seção, usamos o termo ICS completo para significar o caso em que todas as funções ICS são invocadas no Serviço ICS para fornecer acesso a todos os recursos completos do ICS com a rede hospedada sem fio.
Os dois modos de operação ICS são mutuamente exclusivos, com ICS completo tendo maior precedência. O Serviço ICS pode fazer a transição do modo autónomo para o modo completo, mas não do modo completo para o modo autónomo. O modo autônomo ICS foi introduzido no Windows 7 e no Windows Server 2008 R2 com o serviço de LAN sem fio instalado em conjunto com o recurso de rede hospedada sem fio. Não está disponível em versões anteriores do Windows.
Qualquer operação ICS completa envolve dois adaptadores de rede diferentes no sistema:
- A interface pública. Esta é a interface de rede com acesso à Internet. É esta interface que o computador local que executa o ICS usa para compartilhar a Internet com clientes e dispositivos que se conectam a ele via SoftAP.
- A interface privada. Esta é a interface de rede que outros dispositivos usam para se conectar ao computador local que está executando o ICS. Um servidor DHCPv4 está sendo executado nessa interface privada para fornecer endereços IP locais privados para os outros computadores remotos.
Quando a interface pública não tem acesso à Internet, o servidor DHCP na interface privada continua a fornecer endereços IP locais para os dispositivos conectados. ICS autônomo envolve apenas a interface privada na qual o SoftAP está sendo executado; não envolve qualquer interface pública.
A qualquer momento, há no máximo uma instância de ICS completo em execução no computador local. Se o ICS completo já estiver em execução no computador local, iniciar outro ICS completo exibirá os seguintes comportamentos funcionais:
- Se as interfaces públicas e privadas do novo ICS completo forem as mesmas que as do ICS completo existente, iniciar o segundo ICS completo é equivalente a um no-op.
- Se a nova interface pública for diferente da interface pública antiga, mas a nova interface privada for a mesma que a interface privada antiga, iniciar um segundo ICS completo terá pouco impacto nos dispositivos conectados na mesma interface privada. A capacidade de acessar a Internet pode mudar com a nova interface pública.
- Se a nova interface privada for diferente da interface privada antiga, as funções ICS deixarão de funcionar na interface privada antiga e começarão a ser aplicadas à nova interface privada. Qualquer dispositivo remoto que se conecte ao computador local usando a interface privada antiga perderá a conectividade IP com o computador local.
Quando o ICS completo já está em execução, invocar um segundo ICS completo é perturbador para dispositivos conectados remotamente usando a interface privada antiga, desde que a segunda integração ICS utilize uma nova interface privada.
Para gerir e usar o serviço ICS para dar suporte à integração ICS com a rede sem fios alojada, um aplicativo de software deve primeiro obter uma interface INetSharingManager. A interface INetSharingManager fornece acesso direto ou indireto a todas as outras interfaces COM na API ICS. O método get_SharingInstalled na interface INetSharingManager do indica se o computador local suporta a partilha de conexão. O método get_EnumEveryConnection na interface INetSharingManager recupera uma interface de enumeração para todas as conexões na pasta connections. O método get_INetSharingConfigurationForINetConnection recupera um INetSharingConfiguration interface para a conexão especificada. Os métodos na interface INetSharingConfiguration podem ser usados para consultar e alterar as configurações do ICS.
A Rede Hospedada sem Fio deve ser iniciada antes de se chamar o método get_EnumEveryConnection na interface INetSharingManagerdopara enumerar todas as conexões na pasta de conexões.
Para obter informações sobre o ICS e as interfaces e métodos públicos que podem ser usados para consultar e alterar as configurações do ICS, consulte a documentação em Sobre o compartilhamento de conexão com a Internet e o firewall de conexão com a Internet.
Rede hospedada e integração ICS
Quando o ICS completo não está em execução, iniciar uma rede hospedada sem fio também inicia internamente o serviço ICS no modo autônomo com apenas a função de servidor DHCPv4 para alocar endereços IP para os dispositivos conectados na interface de rede hospedada sem fio. O intervalo de endereços de sub-rede para o servidor DHCPv4 autônomo é 192.168.173.0/24. Isso é diferente do intervalo de sub-rede de 192.168.137.0/24 que é usado com ICS completo.
Iniciar uma rede hospedada sem fio com ICS completo emprega a seguinte lógica:
- Se o ICS completo ainda não estiver em execução, iniciar uma rede hospedada sem fio também inicia o serviço ICS com o servidor DHCPv4 autônomo.
- Se o ICS completo já estiver em execução e a interface privada for a interface de rede hospedada sem fio, basta iniciar a rede hospedada sem fio.
- Se o ICS completo já estiver em execução, mas a interface privada não for a interface de rede hospedada sem fio, a rede hospedada sem fio será iniciada sem a função de servidor DHCPv4 na interface de rede hospedada sem fio.
O impacto da lógica acima evidencia os seguintes factos:
- O ICS não faz a transição do modo completo para o modo autônomo.
- O modo autónomo só pode ser invocado pela rede alojada sem fios quando o ICS não está a funcionar no modo completo.
- Se o ICS estiver sendo executado no modo autônomo, ele será antecipado para o modo completo se um usuário ou aplicativo iniciar o ICS no modo completo.
- A transição do modo autônomo para o modo completo no ICS será perturbadora para dispositivos conectados no PAN sem fio se a interface privada do ICS completo não for a mesma do SoftAP.
Leva tempo para iniciar ou parar o serviço ICS no computador local no modo completo ou autônomo. Um aplicativo deve verificar o estado do Serviço ICS usando a função NotifyServiceStatusChange para certificar-se de que o Serviço ICS não está no estado pendente de início/parada antes de iniciar ou parar a Rede Hospedada sem fio para uso com integração ICS.
Iniciando e parando a rede hospedada sem fio
O Windows fornece uma plataforma onde mais de um aplicativo simultâneo tem permissão para gerenciar uma rede hospedada sem fio ao mesmo tempo. Especificamente, cada aplicativo pode iniciar e parar a rede hospedada sem fio por conta própria, sem conhecimento prévio sobre outros aplicativos.
Existem dois conjuntos de funções para iniciar e parar uma rede hospedada.
Várias aplicações podem exigir a utilização da rede alojada sem fios. As funções WlanHostedNetworkStartUsing e WlanHostedNetworkStopUsing iniciam e param uma rede hospedada sem fio de uma forma compatível com outras aplicações simultâneas. As funções WlanHostedNetworkStartUsing e WlanHostedNetworkStopUsing permitem que um aplicativo tenha uma referência à rede hospedada sem fio. Este mecanismo mantém a rede alojada sem fios em funcionamento desde que pelo menos uma outra aplicação tenha uma referência atual à rede alojada sem fios. Qualquer usuário pode chamar essas funções. As chamadas bem-sucedidas para WlanHostedNetworkStartUsing devem ser correspondidas por chamadas para a função WlanHostedNetworkStopUsing. Qualquer alteração de estado da Rede Hospedada causada pela função WlanHostedNetworkStartUsing será automaticamente desfeita se o aplicativo de chamada fechar seu identificador de chamada (chamando WlanCloseHandle com o mesmo parâmetro hClientHandle passado para WlanHostedNetworkStartUsing) ou se o processo terminar.
As funções WlanHostedNetworkForceStart e WlanHostedNetworkForceStop forçam o início e a paragem de uma rede hospedada sem fio. Essas funções só podem ser chamadas se o usuário tiver o privilégio elevado apropriado. Dependendo do design da aplicação, chamadas bem-sucedidas para WlanHostedNetworkForceStart podem eventualmente ser correspondidas por uma chamada para a função WlanHostedNetworkForceStop. Essas funções fazem a transição do estado da Rede Hospedada sem fio sem associar a solicitação ao identificador de chamada do aplicativo. Qualquer alteração de estado da Rede Hospedada causada pela função WlanHostedNetworkForceStart não será desfeita automaticamente se o aplicativo de chamada fechar seu identificador de chamada (chamando WlanCloseHandle com o mesmo parâmetro hClientHandle passado para WlanHostedNetworkStartUsing) ou se o processo terminar. Se o aplicativo que chamou a função WlanHostedNetworkForceStart fechar sem chamar uma das funções para parar a rede hospedada sem fio, a rede hospedada permanecerá em execução. Um aplicativo pode vir a chamar a função WlanHostedNetworkForceStart depois de garantir que um utilizador com privilégios elevados no sistema aceite os requisitos elevados de energia envolvidos na execução da rede hospedada sem fios por longos períodos de tempo.
As recomendações gerais sobre quais funções chamar para iniciar e parar uma rede hospedada sem fio são as seguintes:
- Use o WlanHostedNetworkStartUsando e WlanHostedNetworkStopUsando funções dentro de um aplicativo para iniciar e parar uma rede hospedada sem fio.
- Não use a funçãoWlanHostedNetworkForceStart para iniciar uma rede hospedada sem fio, a menos que seja absolutamente necessário pelo aplicativo. A função WlanHostedNetworkForceStart também requer privilégios elevados.
- Use apenas a função WlanHostedNetworkForceStop como um método de recuperação. A função WlanHostedNetworkForceStop faz com que uma rede hospedada sem fio pare imediatamente. Outros aplicativos que escutam notificações de rede hospedada sem fio podem precisar executar ações de recuperação. Para obter mais informações, consulte a discussão abaixo sobre a sequência de recuperação para rede hospedada sem fio.
Seqüência de início para rede hospedada sem fio
Para um aplicativo que inicia uma rede hospedada sem fio com ICS completo, a recomendação é iniciar a rede hospedada sem fio e, em seguida, iniciar o ICS completo. Se uma rede hospedada sem fio já estiver em execução, um aplicativo deve usar a função WlanHostedNetworkForceStop para parar a rede hospedada sem fio somente se o ICS completo for necessário, mas não tiver sido habilitado antes da rede hospedada ser iniciada. Isso permitirá que outros aplicativos se recuperem de possíveis interrupções causadas pelo início do ICS completo. Para obter mais informações, consulte a discussão abaixo sobre a sequência de recuperação para rede hospedada sem fio. A operação conjunta deve ser bem-sucedida ou malograda como um todo.
Observação
A rede hospedada sem fio deve ser iniciada antes de tentar enumerar o adaptador correspondente usando a interfaceIEnumNetSharingEveryConnection.
As seguintes etapas ordenadas são a sequência de início recomendada em um aplicativo usando rede hospedada sem fio com ICS completo:
- Chame a função WlanHostedNetworkInitSettings para garantir que a Rede Hospedada Sem Fio esteja configurada e pronta para ser usada.
- Chame as funções WlanHostedNetworkQueryStatus e WlanHostedNetworkQueryProperty para determinar se a Rede Hospedada Sem Fio é permitida e está disponível. Se a rede hospedada sem fio não for permitida e não estiver disponível, devolve um erro.
- Teste para ver se o serviço ICS usado para ICS completo é permitido. Se o serviço ICS não puder ser iniciado, retorne um erro.
- Chame a função WlanHostedNetworkForceStop para forçar uma paragem da rede hospedada sem fio.
- Chame a função WlanHostedNetworkStartUsing para iniciar a rede hospedada sem fio.
- Se a rede hospedada sem fio falhar ao iniciar, retorne um erro.
- Se o ICS completo já estiver em execução e a interface pública ou privada atual for diferente da nova interface a ser usada, armazene em cache as interfaces públicas e privadas atuais. Um aplicativo também pode optar por retornar um erro ou avisar o usuário se a integração ICS já estiver em execução.
- Inicie o ICS completo com as novas configurações para as interfaces pública e privada.
- Se o ICS completo falhar ao iniciar com essas configurações, tente iniciar o serviço ICS completo com as interfaces públicas e privadas armazenadas em cache se o ICS completo estiver sendo executado antes. Chame a função WlanHostedNetworkForceStop para parar a rede hospedada sem fio e retornar um erro.
- Confirmação de sucesso de que a rede sem fio hospedada e os Serviços de Internet completos foram bem-sucedidos.
Seqüência de parada para rede hospedada sem fio
Ao usar a rede hospedada sem fio com ICS completo, um aplicativo que terminou seu trabalho pode querer parar a rede hospedada sem fio e o serviço ICS usado para ICS completo. Nesse caso, é recomendável que a funçãoWlanHostedNetworkForceStop seja chamada para parar a rede hospedada em vez de chamar a funçãoWlanHostedNetworkStopUsing . A função WlanHostedNetworkForceStop para a rede hospedada sem fio e também serve para permitir que outros aplicativos se recuperem. Para obter mais informações, consulte a discussão abaixo sobre a sequência de recuperação para rede hospedada sem fio.
As seguintes etapas ordenadas são a sequência de parada recomendada em um aplicativo usando rede hospedada sem fio e ICS completo:
- Interrompa o ICS completo.
- Chame a função WlanHostedNetworkForceStop para parar a rede sem fios hospedada.
Uma aplicação usando uma rede hospedada sem fios sem ICS completo que terminou o seu trabalho só precisa chamar a função WlanHostedNetworkStopUsing ou WlanHostedNetworkForceStop para parar a rede hospedada sem fios. Se a função WlanHostedNetworkStartUsing foi chamada para iniciar a rede hospedada sem fio, o aplicativo deve chamar a função WlanHostedNetworkStopUsing para parar a rede hospedada sem fio. Se a rede hospedada sem fio já tiver sido iniciada antes pelo aplicativo ou se o aplicativo tiver chamado a função WlanHostedNetworkForceStart para forçar a inicialização da rede hospedada sem fio, então o aplicativo pode chamar a função WlanHostedNetworkForceStop para parar a rede hospedada sem fio ou não fazer nada, mantendo a rede hospedada sem fio ativa, dependendo do cenário.
Sequência de recuperação para rede hospedada sem fio
Um aplicativo que usa a rede hospedada sem fio pode ser afetado pelas ações de outros aplicativos. O serviço ICS e as interfaces para gerenciar o ICS não fornecem nenhum método para um aplicativo se registrar para notificações de alteração ICS. Se outro aplicativo chamar o EnableSharing ou o DisableSharing na interface INetSharingConfiguration para habilitar ou desabilitar o compartilhamento em uma conexão, uma mensagem será enviada para a interface do usuário (a tela) no computador local, mas não para outros aplicativos. Portanto, um aplicativo precisa confiar nas notificações da Rede Hospedada sem fio para executar ações de recuperação quando ocorrerem alterações no ICS ou na Rede Hospedada sem fio.
Um aplicativo que usa a rede hospedada sem fio deve se registrar para notificações de rede hospedada sem fio chamando o WlanRegisterNotification. Se forem necessárias notificações apenas para a rede hospedada sem fio, então a aplicação deverá passar WLAN_NOTIFICATION_SOURCE_HNWK no parâmetro dwNotifSource passado para o WlanRegisterNotification. Se outras noticações sem fio também forem necessárias, então WLAN_NOTIFICATION_SOURCE_HNWK deve ser combinada com as constantes de fonte de notificação para outros tipos de notificações sem fio desejadas e passar esse valor no parâmetro dwNotifSource.
A sequência de recuperação é a mesma para aplicativos com ou sem ICS completo, supondo que os aplicativos não queiram iniciar o serviço ICS novamente. Ao receber uma notificação de rede hospedada sem fio de que a rede hospedada parou, faça o seguinte:
- Se o aplicativo tiver chamado WlanHostedNetworkForceStart para iniciar a rede hospedada sem fio, então reinicie a rede hospedada chamando WlanHostedNetworkForceStart. Caso contrário, chame WlanHostedNetworkStartUsing para reiniciar a rede hospedada sem fio.
Sequência de recuperação para dispositivos conectados
Os dispositivos remotos ou computadores ligados à Rede Alojada sem fios podem ser afetados pelas ações de outras aplicações que afetam o ICS e a Rede Alojada sem fios. Felizmente, a maioria dos dispositivos tem lógica de repetição incorporada no aplicativo para lidar com uma perda temporária de sinal ou roaming.
Uma possível sequência de recuperação para dispositivos ou computadores conectados à rede hospedada sem fio que perdem contato é a seguinte:
- O driver de dispositivo sem fio indica uma desconexão de mídia nas camadas superiores da pilha de rede do dispositivo.
- O aplicativo do dispositivo inicia verificações periódicas para a disponibilidade da rede hospedada sem fio.
- Uma vez que o aplicativo do dispositivo deteta novamente a rede hospedada sem fio, o dispositivo inicia uma conexão sem fio.
- Após uma conexão bem-sucedida com a rede hospedada sem fio, o aplicativo do dispositivo atualiza suas configurações de IP de acordo.
Tópicos relacionados