USB Composite DeviceでCDCが動作しない

少し前にWindowsでUSBのMSD+CDCのComposite Deviceが認識されて良かったです、という記事を書きましたが、実は後日談としてタイトルのような現象にやられています。認識されたくらいでうまくいったと早合点していた自分が情けないです。

肝心の現象ですが、USBデバイスを接続直後(開始後1秒未満)はCDCでデータのやり取りが正常にできるのですが、それ以降はまったく反応がなくなります。USBソフトウェアアナライザのSnoopyProで調べてみたところ、CDCのCommunication InterfaceのInterrupt IN Endpoint 0x81とData InterfaceのBulk IN Endpoint 0x82が0xc000005(メモリ関連のエラー)で落ちてしまっているようです。なお、SnoopyProの機能を利用してCDCの部分だけリセットをかけると以後CDCによる通信が正常に行えました。

composite_fail.gif
赤丸が問題の箇所。

おそらくCDCの機能を提供しているusbser.sys、あるいはその親ドライバusbccgp.sysが怪しいのではないかと疑っていますが、なかなか情報が出てこず困っております。関連するHotfixもあたってみましたが、最新のusbser.sysを提供するHotfix 918365(2007/08/29)も効果なしでした。
解決方法について色々と調査中ですが、どうやらusbser.sysはソースコードが公開されていないなど不利な状況で困っています。これぞM$クオリティ(笑)。

※自分のコードには多少バグがあることがわかりましたが、状況は改善しておりません。『Super Sylphide 進捗状況(16) -- Windows XPでMSD+CDCのUSB compositeが相変わらず動かない』をどうぞ。

September 10, 2007 23:18 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

コメントする