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による通信が正常に行えました。
おそらく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が相変わらず動かない』をどうぞ。
コメント
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。