Устранение неполадок с подключаемым модулем WLAN SimpleIO, зарегистрированных в тестах Device Fundamentals
Тесты на основы устройств в комплекте windows Hardware Lab Kit (Windows HLK) и комплекте драйверов Windows (WDK) используют подключаемые модулиWindows Device Testing Framework (WDTF)SimpleIO для тестирования операций ввода-вывода для конкретного устройства при выполнении. Если для типа тестируемого устройства существует подключаемый модуль WDTF, то тесты используют интерфейс IWDTFSimpleIOStressAction2 для тестирования операций ввода-вывода на устройстве.
Эта статья содержит сведения, которые могут помочь в устранении неполадок, регистрируемых подключаемым модулем WDTF WLAN SimpleIO, когда он используется для тестирования операций ввода-вывода в беспроводных сетевых адаптерах во время тестирования устройств и системы в WDK и Windows HLK.
Требования к конфигурации
Для подключаемого модуля WLAN SimpleIO требуется базовая беспроводная сеть WPA2-PSK, использующая AES, к которой он может подключаться при запуске. Идентификатор SSID и пароль беспроводной сети должны передаваться в качестве параметров в тесты, которым они требуются. Эти параметры называются следующим образом в тестах, требующих их: Wpa2PskAesSsid и Wpa2PskPassword. Значениями по умолчанию для этих двух параметров являются kitstestsid и password соответственно.
Обзор охвата тестов
Подключаемый модуль WLAN SimpleIO выполняет следующие тесты на тестируемом беспроводном адаптере:
Находит тестируемый интерфейс Wlan, вызывая функцию WlanEnumInterfaces.
Удаляет тестовый профиль с именем WDTFWlanTestProfile (если он существует), вызывая функцию WlanGetProfile() и функцию WlanDeleteProfile().
Создает тестовый профиль с именем WDTFWlanTestProfile , вызывая функцию WlanSetProfile() и используя XML-код профиля. Профиль использует идентификатор SSID и пароль беспроводной сети в качестве входных параметров для теста.
Подключается к созданному профилю, вызывая функцию WlanConnect(). Ожидается получение уведомления о завершении подключения через 30 секунд.
Проверяет подключение путем вызова метода INetworkListManager::GetConnectivity API диспетчера списков сетей и ищет NLM_CONNECTIVITY перечисления NLM_CONNECTIVITY_IPV4_INTERNET или NLM_CONNECTIVITY_IPV4_LOCALNETWORK флагов, которые необходимо задать. Подключаемый модуль вызывает функцию GetConnectivity() несколько раз (при необходимости) при ожидании подключения, прежде чем в конечном итоге истечет время ожидания и сообщит об ошибке.
Вызывает функцию GetAdaptersInfo(), чтобы определить адрес шлюза, соответствующий адаптеру тестирования.
Открывает дескриптор ICMP, вызывая функцию IcmpCreateFile(), и вызывает внутреннюю функцию в цикле в течение нескольких минут, которая проверяет связь с адресом шлюза IPv4 (с помощью функции IcmpSendEcho() с временем ожидания в одну секунду) 500 раз при каждом вызове и регистрирует сообщение об ошибке, если в любой момент он вызывается, частота сбоев составляет >10 %.
Отключается от сети путем вызова функции WlanDisconnect().
Удаляет тестовый профиль, вызывая функцию WlanGetProfile() и функцию WlanDeleteProfile().
Рекомендации по устранению неполадок
Определение сбоев, зарегистрированных подключаемым модулем WLAN SimpleIO
Сообщения об ошибках, зарегистрированные подключаемым модулем, будут содержать текст "WirelessPlugin:". Текст, который сразу после "WirelessPlugin:", содержит больше контекста об ошибках. Пример:
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
Общие рекомендации по устранению неполадок
Рекомендуется выполнить действия по устранению неполадок в указанном порядке:
Ознакомьтесь с документацией по тестированию, чтобы понять сценарий тестирования.
Ознакомьтесь с обзором охвата тестов , чтобы понять, как подключаемый модуль тестирует устройство или драйвер.
Внимательно просмотрите записи журнала, которые предшествуют сообщению об ошибке и самому сообщению об ошибке, чтобы понять сценарий тестирования и причину сбоя.
Устранение неполадок при настройке маршрутизатора. Убедитесь, что вы можете вручную подключиться к маршрутизатору, что вы можете проверить связь с адресом шлюза после установления подключения и что маршрутизатор находится в диапазоне действия с тестовым компьютером. Если маршрутизатор не проходит ни один из этих тестов, сбросьте маршрутизатор.
Включите трассировку в тестовом драйвере и просмотрите трассировки драйверов с момента, когда тест зарегистрировал ошибки.
Включите трассировку ОС WLAN и проверьте трассировки, которые регистрируются с момента регистрации ошибок. Дополнительные сведения о трассировке ОС WLAN см. в статье Средства для устранения неполадок с помощью трассировки сети в Windows 7.
В некоторых случаях полезно выполнить тест сбоя вручную из командной строки (без использования Windows HLK или WDK), а затем просмотреть трассировки WPP подключаемого модуля. См . статьи Запуск тестов из командной строки и Просмотр трассировок подключаемых модулей WLAN.
Выполнение тестов из командной строки
Мы рекомендуем использовать клиент Windows HLK для выполнения тестов вручную, так как на них установлен WDTF-клиент Windows HLK. Выполните действия, описанные в разделе Запуск основных тестов устройств Windows HLK в командной строке. Включите средство проверки драйверов в Ndis.sys и тестовый драйвер Wi-Fi.
Просмотр трассировок подключаемых модулей WLAN
Подключаемый модуль WLAN использует трассировку WPP для трассировки сведений и ошибок, которые могут оказаться полезными при исследовании сбоев, зарегистрированных подключаемым модулем WLAN. Инструкции по сбору и просмотру трассировок WDTF см. в статье Сбор и просмотр трассировок Windows Device Testing Framework (WDTF).
Примечание
WDTF_Action_SimpleIO_Wireless — это имя поставщика, который можно использовать для фильтрации.
Пример выходных данных трассировки
-->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
Связанные темы
Устранение неполадок при тестировании надежности основных устройств с помощью Windows HLK