none
USB ドライバの動きが、Windows7 で変わったかどうかについて RRS feed

  • 質問

  • 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 デバイスドライバー開発)
    2011年7月27日 0:40

すべての返信

  • マルチ TechNet フォーラム Windows 7 ソフトウェア

    関連 MicrosoftのUSBドライバについて(OKWave), USB 接続のプリンタを Windows7 で使用したらプリンタからのステータスが返りません(Microsoft Answers)


     プリンター側で USB の仕様に沿っていないのなら、プリンターの USB ドライバーなりを修正するのが順当かと思います。

    ご参考:Microsoft Windows USB Core Team Blog

     なお、多数の箇所で質問なさるのはかまいませんが、「これこれをすればよい」「その情報はもう聞いた」というようなことの無いようにご注意下さい。
     また、「どこを探しても見つかりません。」ということですが、こういう場合は、どこを探したという情報を併記して下さい。「ここはどうですか」「それはもう見ました」というのは、情報提供者に対して失礼な行為だと思います。


    Jitta@わんくま同盟
    2011年7月27日 12:11
  • ちょっと急ぎで解決しなければならない問題でしたので、できればさまざまな人にヒントをいただきたいという

    意図から、複数箇所で質問させていただいたしだいです。ご指摘は最もです。以後気をつけます。

    > プリンター側でUSBの仕様に沿っていないのなら、プリンターのUSBドライバなりを修正するのが順当かと思います。

    その通りだと思います。

    ただ、問題は複雑で、プリンタ側を修正すると、逆に今まで問題のなかった Windows Vista や Server 2008 で

    同じ問題が発生してしまうのです。Windows7 と Vista、Server 2008 で全く逆の動きをするのですから

    当たり前です。

    教えていただいたサイトは至急調べてみます。(英語が苦手なもので、日本語のサイトを中心に調べていました)

    2011年7月29日 5:15
  • 教えていただいたサイトは至急調べてみます。(英語が苦手なもので、日本語のサイトを中心に調べていました)

     日本語の情報はない、と思った方が正解だと思います。残念ですけど...

     あと、「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@わんくま同盟
    2011年8月1日 12:08