ブログ - Windows10の仮想COMポートドライバ その2

Windows10の仮想COMポートドライバ その2

カテゴリ : 
マイコンボード » Digitus STM32
2015-9-18 17:30
こちらで書かせてもらったWindows 10のUSB CDCの件、待っていても仕方ないので対方法を検討してみた。

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

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

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

技術サポート

トラックバック

トラックバックpingアドレス http://www.besttechnology.co.jp/modules/d3blog/tb.php/184