Device Fundamentals テストによってログに記録される WLAN SimpleIO プラグイン エラーのトラブルシューティング
Windows Hardware Lab Kit (Windows HLK) と Windows Drivers Kit (WDK) の Device Fundamentals テストは、Windows Device Testing Framework (WDTF) の SimpleIO プラグインを使って、デバイス固有の IO を実行時にテストしています。 テストされるデバイスのタイプにWDTFプラグインが存在する場合、テストは IWDTFSimpleIOStressAction2 インターフェイスを使用してデバイス上の I/O をテストします。
この記事は、WDK および Windows HLK のデバイスおよびシステムのテスト中に、WDTF WLAN SimpleIO プラグインを使用して無線ネットワークアダプターのIOをテストするときに記録される失敗のトラブルシューティングに役立つ情報を含んでいます。
構成要件
WLAN SimpleIO プラグインは、実行時に接続できるAESを使用した基本的な WPA2-PSK の無線ネットワークが必要です。 無線 LAN の SSID とパスワードは、それらを必要とするテストにパラメーターとして渡す必要があります。 これらのパラメーターを必要とするテストでは、以下のような名前が付けられています。 Wpa2PskAesSsid および Wpa2PskPassword。 2つのパラメーターのデフォルト値は、それぞれkitstestssid およびpasswordです。
テスト カバレッジの概要
WLAN SimpleIO プラグインは、テスト対象のワイヤレスアダプターに対して以下のテストを実行します。
WlanEnumInterfaces 関数を呼び出して、テスト対象の Wlan インターフェイスを見つけます。
WlanGetProfile() 関数と WlanDeleteProfile() 関数を呼び出して、WDTFWlanTestProfile という名前のテスト プロファイルを (もし存在すれば) 削除します ...
WlanSetProfile() 関数を呼び出し、プロファイル XML を使用して、WDTFWlanTestProfile という名前の新しいテストプロファイルを作成します。 プロファイルは、ワイヤレス ネットワークの SSID とパスワードをテストへの入力パラメーターとして使用します。
WlanConnect() 関数を呼び出して、新しく作成したプロファイルに接続します。 30 秒後に接続完了の通知が来ることを期待します。
ネットワークリストマネージャー API のINetworkListManager::GetConnectivity メソッドを呼び出して接続性をチェックし、NLM_CONNECTIVITY 列挙 NLM_CONNECTIVITY_IPV4_INTERNET または NLM_CONNECTIVITY_IPV4_LOCALNETWORK フラグが設定されているかを確認します。 プラグインは接続を待つ間、GetConnectivity() 関数を (必要に応じて) 数回呼び出し、最終的にはタイムアウトしてエラーを報告します。
GetAdaptersInfo() 関数を呼び出して、テストアダプタに対応するゲートウェイアドレスを決定します。
IcmpCreateFile() 関数を呼び出してICMPハンドルをオープンし、内部関数を数分間ループで呼び出し、IPv4 ゲートウェイアドレス (IcmpSendEcho() 関数を使用、1秒間のタイムアウトあり) に対して500回Ping送信し、いずれかの時点で 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
一般的なトラブルシューティング ガイダンス
次の順序でトラブルシューティングの手順を実行することをお勧めします。
テスト のドキュメントを確認して、テスト シナリオを理解します。
プラグインがデバイスまたはドライバーをテストする方法については、「テスト カバレッジの概要」を参照してください。
エラーメッセージの前にあるログエントリやエラーメッセージ自体を注意深く確認し、テストのシナリオと失敗の理由を理解します。
ルーターのセットアップのトラブルシューティングを行います。 ルーターに手動で接続できる、接続後にゲートウェイ アドレスに ping を実行できる、およびルーターがテスト コンピューターの範囲内にあるか確認します。 ルーターがこれらのテストに失敗した場合は、ルーターをリセットします。
テスト ドライバーでトレースを有効にし、テストがエラーをログに記録した時刻からのドライバー トレースを確認します。
WLAN OS トレースを有効にし、エラーをログに記録した時刻からログに記録されたトレースを確認します。 WLAN OS トレースの詳細については、「Windows 7 におけるネットワークトレースを使用するトラブルシューティング用ツール」を参照してください{2}。
場合によっては、コマンド ラインから (Windows HLK または WDK を使用せずに) 失敗したテストを手動で実行し、プラグインの WPP トレースを確認すると便利です。 「コマンド ラインからテストを実行する方法」および「WLAN プラグイン トレースを表示する」を参照してください。
コマンド ラインからテストを実行するには
HLK クライアントに WDTF がインストールWindows HLK クライアントに対して手動でテスト Windows を実行することをお勧めします。 Windows HLK デバイスのファンダメンタルズテストをコマンドラインで実行する方法の手順に従ってください。 Ndis.sys とテスト用 Wi-Fi ドライバのドライバーの検証を有効にします。
WLAN プラグイン トレースを表示する
WLAN プラグインでは、WPP トレースを使用して、WLAN プラグインによってログに記録されたエラーを調査するときに役立つ可能性がある情報とエラーをトレースします。 WDTF トレースの収集と表示方法については、「Windowsデバイステストフレームワーク (WDTF) トレースの収集と表示」を参照してください。
Note
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