Поделиться через


Устранение неполадок с подключаемым модулем 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 выполняет следующие тесты на тестируемом беспроводном адаптере:

  1. Находит тестируемый интерфейс Wlan, вызывая функцию WlanEnumInterfaces.

  2. Удаляет тестовый профиль с именем WDTFWlanTestProfile (если он существует), вызывая функцию WlanGetProfile() и функцию WlanDeleteProfile().

  3. Создает тестовый профиль с именем WDTFWlanTestProfile , вызывая функцию WlanSetProfile() и используя XML-код профиля. Профиль использует идентификатор SSID и пароль беспроводной сети в качестве входных параметров для теста.

  4. Подключается к созданному профилю, вызывая функцию WlanConnect(). Ожидается получение уведомления о завершении подключения через 30 секунд.

  5. Проверяет подключение путем вызова метода INetworkListManager::GetConnectivity API диспетчера списков сетей и ищет NLM_CONNECTIVITY перечисления NLM_CONNECTIVITY_IPV4_INTERNET или NLM_CONNECTIVITY_IPV4_LOCALNETWORK флагов, которые необходимо задать. Подключаемый модуль вызывает функцию GetConnectivity() несколько раз (при необходимости) при ожидании подключения, прежде чем в конечном итоге истечет время ожидания и сообщит об ошибке.

  6. Вызывает функцию GetAdaptersInfo(), чтобы определить адрес шлюза, соответствующий адаптеру тестирования.

  7. Открывает дескриптор ICMP, вызывая функцию IcmpCreateFile(), и вызывает внутреннюю функцию в цикле в течение нескольких минут, которая проверяет связь с адресом шлюза IPv4 (с помощью функции IcmpSendEcho() с временем ожидания в одну секунду) 500 раз при каждом вызове и регистрирует сообщение об ошибке, если в любой момент он вызывается, частота сбоев составляет >10 %.

  8. Отключается от сети путем вызова функции WlanDisconnect().

  9. Удаляет тестовый профиль, вызывая функцию 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

Общие рекомендации по устранению неполадок

Рекомендуется выполнить действия по устранению неполадок в указанном порядке:

  1. Ознакомьтесь с документацией по тестированию, чтобы понять сценарий тестирования.

  2. Ознакомьтесь с обзором охвата тестов , чтобы понять, как подключаемый модуль тестирует устройство или драйвер.

  3. Внимательно просмотрите записи журнала, которые предшествуют сообщению об ошибке и самому сообщению об ошибке, чтобы понять сценарий тестирования и причину сбоя.

  4. Устранение неполадок при настройке маршрутизатора. Убедитесь, что вы можете вручную подключиться к маршрутизатору, что вы можете проверить связь с адресом шлюза после установления подключения и что маршрутизатор находится в диапазоне действия с тестовым компьютером. Если маршрутизатор не проходит ни один из этих тестов, сбросьте маршрутизатор.

  5. Включите трассировку в тестовом драйвере и просмотрите трассировки драйверов с момента, когда тест зарегистрировал ошибки.

  6. Включите трассировку ОС 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

Устранение неполадок Windows HLK

Поддержка Windows HLK