トップ回答者
Windows10 の USB 通信において通信エラーが多発する

質問
-
お世話になります。
Windows10が稼働中のパソコンとのUSB通信において、通信エラーが多発しております。
原因を特定できない状況なのですが、どなたか情報をお持ちではないでしょうか。
Windows7や8.1では頻度が非常に低い状況です。
【動作環境】
OS :Windows 10 Home 64bit
CPU:Intel Celeron G1840
RAM:4GB
ドライバは、Windows標準のusbser.sysを使用しています。
OSのエディションやビット数が違っても発生します。
また、パソコンが違っても発生します。
【動作状況】
USBからのデータを全てアプリケーション側に取り込んだように見えますが、
規定バイト数に満たないためエラーとなります。
どうぞ宜しくお願いいたします。- 移動 星 睦美 2016年10月21日 2:56 Visual Basic から
回答
-
漠然とした質問内容なので、意義のあるコメントをするのが難しいと思うのですが。。。
要するに、発生頻度の差はあれ、どの Windows プラットフォーム (7/8.1/10, 32Bit/64Bit) でも問題現象が発生する。。。ということでしょうか?
だとしたら、作成されているアプリでの通信処理部分に、根本的な問題があるのでは?そもそも、各 Windows プラットフォーム (7/8.1/10) で確認したときの環境は、同一 PC なのでしょうか?
もし異なる PC であるのならば、USB Host Controller の種類に依存してタイミング的な差異が生じる可能性があるので、問題の発生頻度が変化しても不思議ではないと思います。
さらにインストールされているソフトウェア構成、例えば使用してるウィルス対策ソフトやテザリング用に設定しているスマホ デバイス等にも差異があるのであれば、Communication Device Class や USB Device Class に追加される Filter Driver 構成も変化する場合があるので、それらに起因してタイミング的な変化が発生する可能性も考えられます。
極端な話、USB Generic Hub の使用の有無に依存する場合すら考えられます。(ただしいずれの場合も、USB で規定されているタイミングは保証されている。)もっと言えば、各 Windows プラットフォーム (7/8.1/10) で提供される Inbox Driver (usbser.sys, usbhub.sys, usbehci.sys, etc) も、モジュール名は同じでもバイナリ レベルでは異なり、バージョンが上がるごとに、色々と細かい修正が適用されているので、すべての Windows プラットフォームで「同じ」バイナリ コードが実行される訳ではありません。
例えば Windows 10 での usbser.sys は KMDF (Kernel Mode Driver Framework) というフレーム ワークを利用した実装に作り替えられているので、ドライバが提供する機能レベルでは同等であっても、実装レベル (バイナリ レベル) では、まったく別物のはずです。
------------------------------------
USB シリアル ドライバー (Usbser.sys)
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn707976%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
------------------------------------usbser.sys はテザリング等でも利用される可能性があり、それなりに汎用的なドライバです。
仮に usbser.sys に不具合があるのであれば、世界的に問題となってもおかしくないと思いますが、私が確認した限りではそのような情報は見当たりませんでした。
初めから「外部」に問題原因を求めるのではなく、まずはご自身が作成されているアプリの「内部」に問題がないのか、きちんと検証されることをお勧めします。- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP 2016年10月21日 11:08
- 回答としてマーク 星 睦美 2016年11月10日 7:36
すべての返信
-
フォーラム オペレーターの星 睦美です。m-ueno さん、投稿ありがとうございます。
広く情報が集まりやすいように今回はWindows クライアント開発 フォーラムに質問を移動させていただきました。
Windows 10 のドライバー関連の問題か、ご利用のアプリケーションに関連した事象かどうか判断できるような情報があると、フォーラム ユーザーからの情報を得やすいように思います。
ほかに追加の情報がありましたらお願いいたします。
・フォーラムのご利用方法(質問の投稿)について
フォーラム オペレーター 星 睦美 - MSDN Community Support
-
Microsoft コミュニティ「Windows10 の USB 通信において通信エラーが多発する」からの移動です。
『アプリは弊社で開発中のものです。
CDCを使用しているのでアプリからはCOMポートに見えますが、COMにはデータが残っていません。
デバイス側も弊社開発製品ですが、USBのデータ送信完了待ちのまま停止してしまいます。』との事です。
hebikuzure
-
漠然とした質問内容なので、意義のあるコメントをするのが難しいと思うのですが。。。
要するに、発生頻度の差はあれ、どの Windows プラットフォーム (7/8.1/10, 32Bit/64Bit) でも問題現象が発生する。。。ということでしょうか?
だとしたら、作成されているアプリでの通信処理部分に、根本的な問題があるのでは?そもそも、各 Windows プラットフォーム (7/8.1/10) で確認したときの環境は、同一 PC なのでしょうか?
もし異なる PC であるのならば、USB Host Controller の種類に依存してタイミング的な差異が生じる可能性があるので、問題の発生頻度が変化しても不思議ではないと思います。
さらにインストールされているソフトウェア構成、例えば使用してるウィルス対策ソフトやテザリング用に設定しているスマホ デバイス等にも差異があるのであれば、Communication Device Class や USB Device Class に追加される Filter Driver 構成も変化する場合があるので、それらに起因してタイミング的な変化が発生する可能性も考えられます。
極端な話、USB Generic Hub の使用の有無に依存する場合すら考えられます。(ただしいずれの場合も、USB で規定されているタイミングは保証されている。)もっと言えば、各 Windows プラットフォーム (7/8.1/10) で提供される Inbox Driver (usbser.sys, usbhub.sys, usbehci.sys, etc) も、モジュール名は同じでもバイナリ レベルでは異なり、バージョンが上がるごとに、色々と細かい修正が適用されているので、すべての Windows プラットフォームで「同じ」バイナリ コードが実行される訳ではありません。
例えば Windows 10 での usbser.sys は KMDF (Kernel Mode Driver Framework) というフレーム ワークを利用した実装に作り替えられているので、ドライバが提供する機能レベルでは同等であっても、実装レベル (バイナリ レベル) では、まったく別物のはずです。
------------------------------------
USB シリアル ドライバー (Usbser.sys)
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn707976%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396
------------------------------------usbser.sys はテザリング等でも利用される可能性があり、それなりに汎用的なドライバです。
仮に usbser.sys に不具合があるのであれば、世界的に問題となってもおかしくないと思いますが、私が確認した限りではそのような情報は見当たりませんでした。
初めから「外部」に問題原因を求めるのではなく、まずはご自身が作成されているアプリの「内部」に問題がないのか、きちんと検証されることをお勧めします。- 回答の候補に設定 Hebikuzure aka Murachi AkiraMVP 2016年10月21日 11:08
- 回答としてマーク 星 睦美 2016年11月10日 7:36