디바이스 기본 사항 테스트에서 기록된 WLAN SimpleIO 플러그 인 오류 문제 해결

Windows HLK(Windows Hardware Lab Kit) 및 WDK(Windows 드라이버 키트)의 디바이스 기본 사항 테스트는 WDTF(Windows Device Testing Framework)SimpleIO 플러그 인을 사용하여 실행 시 디바이스별 IO를 테스트합니다. 테스트 중인 디바이스 유형에 대한 WDTF 플러그 인이 있는 경우 테스트는 IWDTFSimpleIOStressAction2 인터페이스를 사용하여 디바이스의 I/O를 테스트합니다.

이 문서에는 WDK 및 Windows HLK에서 디바이스 및 시스템 테스트 중에 무선 네트워크 어댑터의 IO를 테스트하는 데 사용될 때 WDTF WLAN SimpleIO 플러그 인에서 기록되는 오류 문제를 해결하는 데 도움이 되는 정보가 포함되어 있습니다.

구성 요구 사항

WLAN SimpleIO 플러그 인에는 실행 시 연결할 수 있는 AES를 사용하는 기본 WPA2-PSK 무선 네트워크가 필요합니다. 무선 네트워크의 SSID 및 암호는 필요한 테스트에 매개 변수로 전달되어야 합니다. 이러한 매개 변수는 필요한 테스트에서 Wpa2PskAesSsidWpa2PskPassword와 같이 이름이 지정됩니다. 두 매개 변수의 기본값은 각각 kitstestssid암호입니다.

테스트 검사 개요

WLAN SimpleIO 플러그 인은 테스트 중인 무선 어댑터에서 다음 테스트를 수행합니다.

  1. WlanEnumInterfaces 함수를 호출하여 테스트 중인 Wlan 인터페이스를 찾습니다.

  2. WlanGetProfile() 함수WlanDeleteProfile() 함수를 호출하여 WDTFWlanTestProfile(있는 경우)이라는 테스트 프로필을 삭제합니다.

  3. WlanSetProfile() 함수를 호출하고 프로필 XML을 사용하여 WDTFWlanTestProfile이라는 새 테스트 프로필을 만듭니다. 이 프로필은 무선 네트워크의 SSID 및 암호를 테스트에 대한 입력 매개 변수로 사용합니다.

  4. WlanConnect() 함수를 호출하여 새로 만든 프로필에 연결합니다. 30초 안에 연결 완료 알림을 받을 것으로 예상됩니다.

  5. 네트워크 목록 관리자 API의 INetworkListManager::GetConnectivity 메서드를 호출하여 연결을 확인하고 설정할 NLM_CONNECTIVITY 열거형 NLM_CONNECTIVITY_IPV4_INTERNET 또는 NLM_CONNECTIVITY_IPV4_LOCALNETWORK 플래그를 찾습니다. 플러그 인은 연결을 기다리는 동안 GetConnectivity() 함수를 여러 번(필요한 경우) 호출한 후 결국 시간이 초과되고 오류를 보고합니다.

  6. GetAdaptersInfo() 함수를 호출하여 테스트 어댑터에 해당하는 게이트웨이 주소를 확인합니다.

  7. IcmpCreateFile() 함수를 호출하여 ICMP 핸들을 열고, 호출될 때마다 IPv4 게이트웨이 주소(IcmpSendEcho() 함수를 1초 제한 시간 초과로 사용하여)를 500번 ping하는 루프에서 몇 분 동안 내부 함수를 호출하며, 호출될 때마다 오류 메시지를 기록합니다. 실패율은 >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. 라우터 설정 문제를 해결합니다. 라우터에 수동으로 연결할 수 있는지, 연결한 후 게이트웨이 주소를 ping할 수 있는지, 라우터가 테스트 컴퓨터에 대한 범위 내에 있는지 확인합니다. 라우터가 이러한 테스트에 실패하는 경우 라우터를 다시 설정합니다.

  5. 테스트 드라이버에서 추적을 사용하도록 설정하고 테스트가 오류를 기록한 시점부터 드라이버 추적을 검토합니다.

  6. WLAN OS 추적을 사용하도록 설정하고 오류가 기록된 시점부터 기록된 추적을 검토합니다. WLAN OS 추적에 대한 자세한 내용은 Windows 7에서 네트워크 추적을 사용한 문제 해결 도구를 참조하세요.

경우에 따라 Windows HLK 또는 WDK를 사용하지 않고 명령줄에서 수동으로 실패한 테스트를 실행한 다음, 플러그 인의 WPP 추적을 검토하는 것이 좋습니다. 명령줄에서 테스트를 실행하는 방법WLAN 플러그 인 추적 보기를 참조하세요.

명령줄에서 테스트를 실행하는 방법

Windows HLK 클라이언트에 WDTF가 설치되어 있으므로 Windows HLK 클라이언트를 사용하여 테스트를 수동으로 실행하는 것이 좋습니다. 명령줄에서 Windows HLK 디바이스 기본 사항 테스트를 실행하는 방법의 단계를 따릅니다. Ndis.sys 및 테스트 Wi-Fi 드라이버에서 드라이버 검증 도구를 사용하도록 설정합니다.

WLAN 플러그 인 추적 보기

WLAN 플러그 인은 WPP 추적을 사용하여 WLAN 플러그 인에 의해 기록된 오류를 조사할 때 유용할 수 있는 정보 및 오류를 추적합니다. WDTF 추적을 수집하고 보는 방법에 대한 지침은 WDTF(Windows Device Testing Framework) 추적 수집 및 보기를 참조하세요.

참고

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 지원