Solicitando interação do usuário
A qualquer momento após a chamada para Dot11ExtIhvInitAdapter, a DLL de Extensões IHV pode solicitar interação com o usuário chamando a função Dot11ExtSendUIRequest . O sistema operacional encaminha todas as solicitações de interação do usuário para a DLL de Extensões de Interface do Usuário IHV, que processará a solicitação e exibirá as páginas de interface do usuário apropriadas para o usuário.
Quando a solicitação for concluída, o sistema operacional chamará a função Dot11ExtIhvProcessUIResponse para encaminhar os resultados da DLL de Extensões de Interface do Usuário IHV para a interação do usuário. Para obter mais informações sobre a DLL de extensões de interface do usuário IHV, consulte DLL de extensões de interface do usuário de IHV nativas 802.11.
Por exemplo, a DLL de Extensões IHV pode solicitar interação do usuário para qualquer uma das opções a seguir.
Notifique o usuário sobre os estágios de uma operação pré ou pós-associação.
Solicite que o usuário insira suas credenciais para autenticação durante a operação pós-associação.
Quando chama a função Dot11ExtSendUIRequest , a DLL de Extensões IHV passa um ponteiro para uma estrutura DOT11EXT_IHV_UI_REQUEST para o parâmetro pIhvUIRequest . A estrutura DOT11EXT_IHV_UI_REQUEST especifica a solicitação, como a GUID (ID global exclusiva), que identifica a solicitação de interface do usuário, bem como a ID da classe COM (CLSID) da página de interface do usuário de destino que manipulará essa solicitação.
Quando a DLL de Extensões de Interface do Usuário IHV tiver concluído a notificação do usuário, o sistema operacional chamará a função Dot11ExtIhvProcessUIResponse . Se o usuário tiver inserido dados por meio da notificação, o sistema operacional passará um ponteiro para o buffer, que contém os dados, para o parâmetro pvResponseBuffer .
O sistema operacional pode consultar periodicamente o status de solicitações de notificação pendentes. Nessa situação, o sistema operacional chama o Dot11ExtIhvIsUIRequestPending e passa o GUID da solicitação de interface do usuário para o parâmetro guidUIRequest .
Ao chamar Dot11ExtSendUIRequest, a DLL de Extensões IHV deve seguir essas diretrizes.
A DLL de Extensões IHV não precisa serializar as chamadas para Dot11ExtSendUIRequest. A DLL pode ter mais de uma solicitação de interface do usuário pendente a qualquer momento.
A solicitação de interface do usuário para um GUID específico é concluída somente quando Dot11ExtIhvProcessUIResponse é chamado para esse GUID. Nessa situação, a DLL de Extensões IHV não deve liberar recursos alocados para a solicitação de interface do usuário até que Dot11ExtIhvProcessUIResponse seja chamado.
Todas as solicitações de interface do usuário pendentes são canceladas sempre que Dot11ExtIhvAdapterReset ou Dot11ExtIhvDeinitAdapter for chamado. Todas as solicitações de interface do usuário pendentes também são canceladas sempre que Dot11ExtIhvProcessSessionChange é chamado com o parâmetro uEventType definido como WTS_SESSION_LOGOFF.
Nessas situações, a DLL de Extensões IHV deve liberar todos os recursos alocados para cada solicitação de interface do usuário pendente.
O sistema operacional pode iniciar a interação do usuário em si sempre que o estado de conexão for alterado na rede BSS (conjunto de serviços básico). Nessa situação, o sistema operacional chama a função Dot11ExtIhvQueryUIRequest . A DLL de Extensões IHV aloca um buffer e o formata como uma estrutura DOT11EXT_IHV_UI_REQUEST . A DLL define os membros da estrutura DOT11EXT_IHV_UI_REQUEST para fazer referência a uma página de interface do usuário apropriada para a alteração no status de conexão. O sistema operacional é responsável por exibir a página da interface do usuário.
Nota As Extensões IHV devem alocar o buffer que contém a estrutura DOT11EXT_IHV_UI_REQUEST por meio de Dot11ExtAllocateBuffer. A DLL não deve liberar o buffer depois de retornar de Dot11ExtIhvQueryUIRequest.