質問者
USB ドライバの動きが、Windows7 で変わったかどうかについて

質問
-
USB プリンタの開発に携わっている者ですが、Windows7 だけプリンタからの応答が返らないという問題が
発生し、ある程度調査を行いました。USB 仕様で、
・バルク転送におけるデータの送受信はパケット ID を DATA0 → DATA1 → DATA0 と交互に切り替える。
・ホストから Clear Feature(ENDPORT_HALT)リクエストが送信された場合、パケット ID を DATA0 に
リセットしなければならない。
というものがあり、問題のプリンタは後者の仕様が守られていませんでした。
つまり、Clear Feature(ENDPOINT_HALT)リクエストが来た場合、プリンタは本来 DATA0 にリセット
してデータを送信しなければならないところ DATA1 で送信する場合があり、Windows7 ではホスト側が
受信できていなかったことが原因です。
ここで疑問ですが、少なくとも Windows7 以外の OS (Vista、Server 2008 で確認)では、
Clear Feature(ENDPOINT_HALT)リクエストの後に DATA1 でデータを送信してもホスト側は問題なく
受信するため、少なくとも Windows7 で動作が変わっているのは確かです。
しかし、Windows7 で仕様(動作)が変わったという情報がどこを探しても見つかりません。
どこを探せば見つかるのか、また Windows7 で以前の OS と同じように動作させる方法があるのか、
あるいは、Windows7 以外の OS で Windows7 と同じように動作させる方法があるかどうか、
ご教授をお願いします。
- 移動 Mike Wang (MSCS) 2012年10月2日 12:48 (移動元:Windows デバイスドライバー開発)
すべての返信
-
マルチ TechNet フォーラム Windows 7 ソフトウェア
関連 MicrosoftのUSBドライバについて(OKWave), USB 接続のプリンタを Windows7 で使用したらプリンタからのステータスが返りません(Microsoft Answers)
プリンター側で USB の仕様に沿っていないのなら、プリンターの USB ドライバーなりを修正するのが順当かと思います。
ご参考:Microsoft Windows USB Core Team Blog
なお、多数の箇所で質問なさるのはかまいませんが、「これこれをすればよい」「その情報はもう聞いた」というようなことの無いようにご注意下さい。
また、「どこを探しても見つかりません。」ということですが、こういう場合は、どこを探したという情報を併記して下さい。「ここはどうですか」「それはもう見ました」というのは、情報提供者に対して失礼な行為だと思います。
Jitta@わんくま同盟 -
ちょっと急ぎで解決しなければならない問題でしたので、できればさまざまな人にヒントをいただきたいという
意図から、複数箇所で質問させていただいたしだいです。ご指摘は最もです。以後気をつけます。
> プリンター側でUSBの仕様に沿っていないのなら、プリンターのUSBドライバなりを修正するのが順当かと思います。
その通りだと思います。
ただ、問題は複雑で、プリンタ側を修正すると、逆に今まで問題のなかった Windows Vista や Server 2008 で
同じ問題が発生してしまうのです。Windows7 と Vista、Server 2008 で全く逆の動きをするのですから
当たり前です。
教えていただいたサイトは至急調べてみます。(英語が苦手なもので、日本語のサイトを中心に調べていました)
-
教えていただいたサイトは至急調べてみます。(英語が苦手なもので、日本語のサイトを中心に調べていました)
日本語の情報はない、と思った方が正解だと思います。残念ですけど...
あと、「whitepaper(白書)」「technical paper/note(技術文書)」とか、「bug fix」をキーに検索してみて下さい。しかし、仕様と違っているなら、「bug fix」で表現されているように思います。最悪、この言葉で表してしまっているでしょう。この場合は、USB の仕様書の項目名、章番号などで検索すると出てくるかもしれません。
MSDN サブスクリプションを購入しているなら、オンライン コンシェルジェが利用できます。日本語で公開されている文書なら、ここを利用するのが早いでしょう(英語は検索範囲外だと言われた)。
最終手段としては、USB Core Team のブログに突撃することですね。「How to recover from USB errors? (Part 1)」に、「ENDPOINT_HALT」が出てきますので、「これを送ったときの動作が Vista と違うんだけど、なんか変えた?」と尋ねると、何か返ってくるかもしれません。(もちろん、英語で尋ねて下さい)
Jitta@わんくま同盟