• カテゴリ Digitus STM32 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - Digitus STM32カテゴリのエントリ

こちらで書かせてもらったWindows 10のUSB CDCの件、待っていても仕方ないので対方法を検討してみた。

結論から言ってしまうと、受信イベントのタイミングでReadFileすると、バッファ内のデータを読み込み切らずに終了するという事。残ってしまったデータは次の受信イベントが起こらない限り読み出すイベントが無い。その受信イベントは新たな受信データが無いと励起されない。
デバッガを起動していたりAPIのフックをしてたりすると若干改善したりする。

ブロッキングなら大丈夫だが、イベントドリブンな作りのアプリケーションでノンブロッキングだと解決できないネタだった。

ドライバの更新に期待していても始まらないので、それなりの改善が見受けられた方法だけ備忘録として。
とりあえず受信イベント直後のReadFile後にWindowsのメッセージを強制的にディスパッチし、受信バッファのQueueをチェックして再度ReadFileするといった方法。
これにより、マンマシン的なものであればごまかしが効くぐらいには改善する。

技術サポート
とりあえずだが、デバイスにかかわらず全般的におかしい。

usbser.sysに依存したCOMポートを使っているシステムの場合は、Windows 10への移行は待った方が無難である。

技術サポート