Partilhar via


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:

  1. Localiza a interface Wlan que está em teste chamando a função WlanEnumInterfaces.

  2. Exclui o perfil de teste chamado WDTFWlanTestProfile (se existir) chamando a função WlanGetProfile() e a função WlanDeleteProfile().

  3. 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.

  4. Conecta-se ao perfil recém-criado chamando a função WlanConnect(). Espere receber uma notificação de conexão completa em 30 segundos.

  5. 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.

  6. Chama a função GetAdaptersInfo() para determinar o endereço do gateway que corresponde ao adaptador de teste.

  7. 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%.

  8. Desconecta-se da rede chamando a função WlanDisconnect().

  9. 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:

  1. Examine a documentação de teste para entender o cenário de teste.

  2. Examine Visão geral da cobertura de teste para entender como o plug-in testa um dispositivo ou driver.

  3. 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.

  4. 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.

  5. Habilite o rastreamento no driver de teste e examine os rastreamentos do driver a partir do momento em que o teste registrou os erros.

  6. 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

Solução de problemas de teste de confiabilidade de conceitos básicos do dispositivo usando o Windows HLK

Solução de problemas do Windows HLK

Suporte ao Windows HLK