Problembehandlung bei WLAN-SimpleIO-Plug-In-Fehlern, die von Gerätegrundlagentests protokolliert werden
Gerätegrundsätze-Tests in Windows Hardware Lab Kit (Windows HLK) und Windows Driver Kit (WDK) verwenden Windows Device Testing Framework (WDTF)SimpleIO-Plug-Ins zum Testen gerätespezifischer EA, wenn sie ausgeführt werden. Wenn ein WDTF-Plug-In für den Typ des Geräts vorhanden ist, das getestet wird, verwendet der Test die IWDTFSimpleIOStressAction2-Schnittstelle zum Testen der E/A auf dem Gerät.
Dieser Artikel enthält Informationen, die bei der Problembehandlung von Fehlern helfen können, die vom WDTF WLAN SimpleIO-Plug-In protokolliert werden, wenn es verwendet wird, um EA auf drahtlosen Netzwerkadapter während der Geräte- und Systemtests in WDK und Windows HLK zu testen.
Konfigurationsanforderungen
Das WLAN SimpleIO-Plug-In erfordert ein WPA2-PSK-Drahtlosbasisnetzwerk, das AES verwendet, mit dem es eine Verbindung herstellen kann, wenn es ausgeführt wird. Die SSID und das Kennwort des drahtlosen Netzwerks müssen als Parameter an die Tests übergeben werden, die sie benötigen. Diese Parameter werden wie folgt in den Tests benannt, die sie benötigen: Wpa2PskAesSsid und Wpa2PskPassword. Die Standardwerte der beiden Parameter sind kitstestssid und password.
Übersicht über die Testabdeckung
Das WLAN SimpleIO-Plug-In führt die folgenden Tests auf dem zu testenden drahtlosen Adapter aus:
Sucht die WLAN-Schnittstelle, die getestet wird, indem die WlanEnumInterfaces-Funktion aufgerufen wird.
Löscht das Testprofil mit dem Namen WDTFWlanTestProfile (sofern vorhanden) durch Aufrufen der WlanGetProfile()-Funktion und der WlanDeleteProfile()-Funktion.
Erstellt ein neues Testprofil namens WDTFWlanTestProfile durch Aufrufen der WlanSetProfile()-Funktion und unter Verwendung einer Profil-XML. Das Profil verwendet die SSID und das Kennwort des drahtlosen Netzwerks als Eingabeparameter für den Test.
Stellt eine Verbindung mit dem neu erstellten Profil her, indem die WlanConnect()-Funktion aufgerufen wird. Sie können erwarten, dass Sie innerhalb von 30 Sekunden die Benachrichtigung vollständige Verbindung erhalten.
Sucht nach Konnektivität, indem die INetworkListManager::GetConnectivity-Methode der Netzwerklisten-Manager-API aufgerufen wird, und sucht nach NLM_CONNECTIVITY-Enumeration NLM_CONNECTIVITY_IPV4_INTERNET oder NLM_CONNECTIVITY_IPV4_LOCALNETWORK-Flags, die festgelegt werden sollen. Das Plug-In ruft die GetConnectivity()-Funktion mehrmals (falls erforderlich) auf, da es auf eine Verbindung wartet, bevor es schließlich zu einem Zeitablauf kommt und ein Fehler gemeldet wird.
Ruft die GetAdaptersInfo()-Funktion auf, um die Gatewayadresse zu ermitteln, die dem Testadapter entspricht.
Öffnet ein ICMP-Handle durch Aufrufen der IcmpCreateFile()-Funktion und ruft eine interne Funktion in einer Schleife für mehrere Minuten auf, die bei jedem Aufruf 500 Mal einen Ping an die IPv4-Gatewayadresse (mithilfe der IcmpSendEcho()-Funktion mit einem Zeitablauf von einer Sekunde) sendet, und protokolliert eine Fehlermeldung, wenn die Fehlerrate bei einem Aufruf >10 % beträgt.
Trennt die Netzwerkverbindung, indem die WlanDisconnect()-Funktion aufgerufen wird.
Löscht das Testprofil, indem die WlanGetProfile()-Funktion und die WlanDeleteProfile()-Funktion aufgerufen werden.
Anleitungen zur Problembehandlung
Identifizieren von Fehlern, die vom WLAN SimpleIO-Plug-In protokolliert werden
Die vom Plug-In protokollierten Fehlermeldungen enthalten den Text „WirelessPlug-In:“. Der Text, der direkt auf „WirelessPlug-In:“ folgt, bietet mehr Kontext zu den Fehlern. Beispiel:
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
Anleitung zur allgemeinen Problembehandlung
Wir empfehlen, die Problembehandlung in der aufgeführten Reihenfolge zu befolgen:
Lesen Sie die Testdokumentation, um das Testszenario zu verstehen.
Lesen Sie die Übersicht über die Testabdeckung, um zu verstehen, wie das Plug-In ein Gerät oder einen Treiber überprüft.
Lesen Sie sorgfältig Protokolleinträge, die der Fehlermeldung vorangehen, und die Fehlermeldung selbst, um das Testszenario und den Grund für den Fehler zu verstehen.
Problembehandlung beim Router-Setup. Stellen Sie sicher, dass Sie manuell eine Verbindung mit dem Router herstellen können, dass Sie einen Ping an die Gatewayadresse nach dem Herstellen der Verbindung senden können und dass der Router im Bereich des Testcomputers liegt. Wenn der Router einen dieser Tests nicht besteht, setzen Sie den Router zurück.
Aktivieren Sie die Ablaufverfolgung im Testtreiber, und überprüfen Sie die Treiberablaufverfolgung ab dem Zeitpunkt, zu dem der Test den Fehler/die Fehler protokolliert hat.
Aktivieren Sie die WLAN-Betriebssystemablaufverfolgung und überprüfen Sie Ablaufverfolgungen, die ab dem Zeitpunkt protokolliert werden, zu dem der Fehler/die Fehler protokolliert wurde. Weitere Informationen zur WLAN-Betriebssystemablaufverfolgung finden Sie unter Tools zur Problembehandlung mit der Netzwerkablaufverfolgung in Windows 7.
In einigen Fällen ist es hilfreich, den fehlgeschlagenen Test manuell aus über eine Befehlszeile (ohne Verwendung von Windows HLK oder WDK) auszuführen und dann die WPP-Ablaufverfolgungen des Plug-Ins zu überprüfen. Informationen finden Sie unter Ausführen von Tests über die Befehlszeile und Anzeigen von WLAN-Plug-In-Ablaufverfolgungen.
So führen Sie Tests über die Befehlszeile aus
Es wird empfohlen, dass Sie einen Windows HLK-Client verwenden, um Tests manuell auszuführen, da bei Windows HLK-Clients WDTF installiert ist. Führen Sie die Schritte unter So führen Sie Windows HLK-Gerätegrundlagentests über die Befehlszeile aus durch. Aktivieren Sie die Treiberüberprüfung unter Ndis.sys und den Wi-Fi-Testtreiber.
Anzeigen von WLAN-Plug-In-Ablaufverfolgungen
Das WLAN-Plug-In verwendet WPP-Ablaufverfolgung, um Informationen und Fehler nachzuverfolgen, die Sie beim Untersuchen von Fehlern praktisch finden könnten, die vom WLAN-Plug-In protokolliert werden. Unter Sammeln und Anzeigen von WDTF-Ablaufverfolgungen (Windows Device Testing Framework, WDTF) finden Sie Anweisungen zum Sammeln und Anzeigen von WDTF-Ablaufverfolgungen.
Hinweis
WDTF_Action_SimpleIO_Wireless ist der Name des Anbieters, den Sie zum Filtern verwenden können.
Ausgabe der Ablaufverfolgung
-->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