Solucionar problemas de falhas de plug-in WLAN SimpleIO registradas por testes de Conceitos Básicos do Dispositivo
Os testes de Conceitos Básicos do Dispositivo no Windows Hardware Lab Kit (Windows HLK) e no WDK (Windows Drivers Kit) usam plug-insWDTF (Windows Device Testing Framework)SimpleIO para testar a E/S específica do dispositivo quando eles são executados. Se existir um plug-in WDTF para o tipo de dispositivo que está sendo testado, os testes usarão a interface IWDTFSimpleIOStressAction2 para testar a E/S no dispositivo.
Este artigo contém informações que podem ajudar na solução de problemas de falhas registradas pelo plug-in WLAN SimpleIO do WDTF quando ele é usado para testar a E/S em adaptadores de rede sem fio durante o teste do dispositivo e do sistema no WDK e no Windows HLK.
Requisitos de configuração
O plug-in WLAN SimpleIO requer uma rede sem fio WPA2-PSK básica que usa o AES ao qual ele pode se conectar quando é executado. O SSID e a senha da rede sem fio devem ser passados como parâmetros para os testes que exigem eles. Esses parâmetros são nomeados da seguinte maneira nos testes que exigem: Wpa2PskAesSsid e Wpa2PskPassword. Os valores padrão dos dois parâmetros são kitstestssid e password, respectivamente.
Visão geral da cobertura de teste
O plug-in WLAN SimpleIO executa os seguintes testes no adaptador sem fio em teste:
Localiza a interface Wlan que está em teste chamando a função WlanEnumInterfaces.
Exclui o perfil de teste chamado WDTFWlanTestProfile (se existir) chamando a função WlanGetProfile() e a função WlanDeleteProfile().
Cria um novo perfil de teste chamado WDTFWlanTestProfile chamando a função WlanSetProfile() e usando um XML de perfil. O perfil usa o SSID e a senha da rede sem fio como parâmetros de entrada para o teste.
Conecta-se ao perfil recém-criado chamando a função WlanConnect(). Espere receber uma notificação de conexão completa em 30 segundos.
Verifica a conectividade chamando o método INetworkListManager::GetConnectivity da API do Gerenciador de Lista de Rede e procura NLM_CONNECTIVITY NLM_CONNECTIVITY_IPV4_INTERNET de enumeração ou sinalizadores de NLM_CONNECTIVITY_IPV4_LOCALNETWORK a serem definidos. O plug-in chama a função GetConnectivity() várias vezes (se necessário) enquanto aguarda uma conexão, antes que ela acabe atingindo o tempo limite e reporte um erro.
Chama a função GetAdaptersInfo() para determinar o endereço do gateway que corresponde ao adaptador de teste.
Abre um identificador ICMP chamando a função IcmpCreateFile() e chama uma função interna em um loop por vários minutos que executa ping no endereço do gateway IPv4 (usando a função IcmpSendEcho() com um tempo limite de um segundo) 500 vezes cada vez que é chamado e registra uma mensagem de erro se a qualquer momento for chamada, a taxa de falha é >de 10%.
Desconecta-se da rede chamando a função WlanDisconnect().
Exclui o perfil de teste chamando a função WlanGetProfile() e a função WlanDeleteProfile().
Diretrizes de solução de problemas
Identificar falhas registradas pelo plug-in WLAN SimpleIO
As mensagens de erro registradas pelo plug-in conterão o texto "WirelessPlugin:". O texto que segue imediatamente "WirelessPlugin:" fornece mais contexto sobre os erros. Por exemplo:
WDTF_SIMPLE_IO : ERROR : - Open(802.11n USB Wireless LAN Card USB\VID_XXXX&PID_XXXX\5&35DEE9D9&0&5 ) Failed : WirelessPlugin: ConnectToTestProfile() - Failed to connect to test profile; Reason string: "The specific network is not available." HRESULT=0x80004005
Diretrizes gerais de solução de problemas
Recomendamos que você siga as etapas de solução de problemas na ordem listada:
Examine a documentação de teste para entender o cenário de teste.
Examine Visão geral da cobertura de teste para entender como o plug-in testa um dispositivo ou driver.
Examine cuidadosamente as entradas de log que precedem a mensagem de erro e a própria mensagem de erro para entender o cenário de teste e o motivo da falha.
Solucionar problemas de configuração do roteador. Verifique se você pode se conectar manualmente ao roteador, se você pode executar ping no endereço do gateway depois de fazer a conexão e se o roteador está no intervalo para o computador de teste. Se o roteador falhar em qualquer um desses testes, redefina o roteador.
Habilite o rastreamento no driver de teste e examine os rastreamentos do driver a partir do momento em que o teste registrou os erros.
Habilite o rastreamento do so WLAN e examine os rastreamentos registrados a partir do momento em que o registrou os erros. Para obter mais informações sobre o rastreamento do sistema operacional WLAN, consulte Ferramentas para solução de problemas usando o Rastreamento de Rede no Windows 7.
Em alguns casos, é útil executar o teste com falha manualmente em uma linha de comando (sem usar o Windows HLK ou WDK) e, em seguida, revisar os rastreamentos do WPP do plug-in. Consulte Como executar testes na linha de comando e Exibir rastreamentos de plug-in WLAN.
Como executar testes na linha de comando
Recomendamos que você use um cliente HLK do Windows para executar testes manualmente porque os clientes do Windows HLK têm o WDTF instalado neles. Siga as etapas em Como executar os testes básicos do dispositivo HLK do Windows na linha de comando. Habilite o Verificador de Driver no Ndis.sys e no driver de Wi-Fi de teste.
Exibir rastreamentos de plug-in WLAN
O plug-in WLAN usa o rastreamento WPP para rastrear informações e erros que você pode achar úteis ao investigar falhas registradas pelo plug-in WLAN. Consulte Coletar e exibir rastreamentos do WDTF (Windows Device Testing Framework) para obter instruções sobre como coletar e exibir rastreamentos do WDTF.
Observação
WDTF_Action_SimpleIO_Wireless é o nome do provedor que você pode usar para filtragem.
Saída de rastreamento de exemplo
-->this(047BB318):?FinalConstruct@CWirelessImpl@@QEAAJXZ(void)
<--this(047BB318):?FinalConstruct@CWirelessImpl@@QEAAJXZ(): S_OK
o->this(047BB318):?SetTarget@CWirelessImpl@@UEAAJPEAUITarget@@UtagVARIANT@@@Z(pMainTarget = 0476BBAC, MoreTargets = 8)
INFO:Calling WlanOpenHandle() function
INFO:Calling WlanEnumInterfaces() function to find wlan interface under test: N300 USB Network Adapter" ({4138C082-E821-433C-ABB8-6FF864BF80B5})"
INFO:Found 1 wlan interfaces in total
INFO:Processing wlan interface: N300 USB Network Adapter""
INFO:Found the wlan interface under test!
INFO:Interface information: Interface Guid: {4138C082-E821-433C-ABB8-6FF864BF80B5}; Interface State: disconnected""
o<-this(047BB318):?SetTarget@CWirelessImpl@@UEAAJPEAUITarget@@UtagVARIANT@@@Z(): S_OK
o->this(047BB318):?Open@CWirelessImpl@@UEAAJXZ(void)
INFO:Calling WlanOpenHandle() function
-->this(047BB318):?FindAndDeleteTestProfile@CWirelessImpl@@AEAAJXZ(void)
INFO:Test profile WDTFWlanTestProfile" doesn't exist"
o<-this(047BB318):?FindAndDeleteTestProfile@CWirelessImpl@@AEAAJXZ(): S_OK
-->this(047BB318):?CreateTestProfile@CWirelessImpl@@AEAAJXZ(void)
INFO:Calling WlanSetProfile() with a profile XML to create a profile with name: WDTFWlanTestProfile"
o<-this(047BB318):?CreateTestProfile@CWirelessImpl@@AEAAJXZ(): S_OK
-->this(047BB318):?ConnectToTestProfile@CWirelessImpl@@AEAAJXZ(void)
INFO:Calling WlanRegisterNotification() to get notified of connect complete event
INFO:Calling WlanConnect() to connect to test profile with name: WDTFWlanTestProfile""
INFO:Waiting to receive connect complete notification
INFO:Received connect complete notification: 0
INFO:Calling WlanRegisterNotification() to unregister from notifications
o<-this(047BB318):?ConnectToTestProfile@CWirelessImpl@@AEAAJXZ(): S_OK
INFO:Calling an internal helper function to check for the connectivity state of the network connection
-->this(047BB318):?CheckForConnectivity@CWirelessImpl@@AEAAJPEA_N@Z(void)
INFO:Creating an instance of the NLM COM object
INFO:Calling NLM GetNetworkConnections() to get a list of network connections
INFO:Iterating through the network connections found looking for the connection corresponding to the test adapter ({4138C082-E821-433C-ABB8-6FF864BF80B5})
INFO:Calling NLM GetAdapterId() on a network connection found
INFO:Calling NLM GetAdapterId() on a network connection found
INFO:Found a network connection using the test adapter!
INFO:Calling NLM GetConectivity() on a network connection using the test adapter
INFO:NLM GetConectivity() reported the following connectivity state: 66
INFO:NLM GetConectivity() reported IPv4 connectivity!
o<-this(047BB318):?CheckForConnectivity@CWirelessImpl@@AEAAJPEA_N@Z(): S_OK
-->this(047BB318):?RefreshIPInfo@CWirelessImpl@@AEAAJXZ(void)
INFO:Calling GetAdaptersInfo() function to find IP address info for adapter {4138C082-E821-433C-ABB8-6FF864BF80B5}""
INFO:Found the adapter we are looking for!
INFO:Adapter Info: Index: 4, IPv4 Address: 192.168.1.147, Gateway Address: 192.168.1.1
o<-this(047BB318):?RefreshIPInfo@CWirelessImpl@@AEAAJXZ(): S_OK
INFO:Calling IcmpCreateFile() function
INFO:Pinging gateway (192.168.1.1) 10 times
-->this(047BB318):?TestPingGateway@CWirelessImpl@@AEAAJHH@Z(numPings: 10)
INFO:Calling IcmpSendEcho() to ping gateway (192.168.1.1) 10 times with a random input buffer of size 255 and a timeout value of 1000 milliseconds
o<-this(047BB318):?TestPingGateway@CWirelessImpl@@AEAAJHH@Z(): S_OK
o<-this(047BB318):?Open@CWirelessImpl@@UEAAJXZ(): S_OK
o->this(047BB318):?RunIO@CWirelessImpl@@UEAAJXZ(void)
-->this(047BB318):?TestPingGateway@CWirelessImpl@@AEAAJHH@Z(numPings: 500)
INFO:Calling IcmpSendEcho() to ping gateway (192.168.1.1) 500 times with a random input buffer of size 255 and a timeout value of 1000 milliseconds
o<-this(047BB318):?TestPingGateway@CWirelessImpl@@AEAAJHH@Z(): S_OK
o<-this(047BB318):?RunIO@CWirelessImpl@@UEAAJXZ(): S_OK
o->this(047BB318):?RunIO@CWirelessImpl@@UEAAJXZ(void)
-->this(047BB318):?TestPingGateway@CWirelessImpl@@AEAAJHH@Z(numPings: 500)
INFO:Calling IcmpSendEcho() to ping gateway (192.168.1.1) 500 times with a random input buffer of size 255 and a timeout value of 1000 milliseconds
o<-this(047BB318):?TestPingGateway@CWirelessImpl@@AEAAJHH@Z(): S_OK
o<-this(047BB318):?RunIO@CWirelessImpl@@UEAAJXZ(): S_OK
...
...
...
o->this(047BB318):?Close@CWirelessImpl@@UEAAJXZ(void)
-->this(047BB318):?DisconnectFromTestProfile@CWirelessImpl@@AEAAJXZ(void)
INFO:Calling WlanDisconnect() to disconnect
o<-this(047BB318):?DisconnectFromTestProfile@CWirelessImpl@@AEAAJXZ(): S_OK
-->this(047BB318):?FindAndDeleteTestProfile@CWirelessImpl@@AEAAJXZ(void)
INFO:Calling WlanDeleteProfile() to delete the previously created test profile with name WDTFWlanTestProfile""
o<-this(047BB318):?FindAndDeleteTestProfile@CWirelessImpl@@AEAAJXZ(): S_OK
o<-this(047BB318):?Close@CWirelessImpl@@UEAAJXZ(): S_OK