Здравствуйте, _alecs, Вы писали:
_>Вы наверное не поняли о чём здесь идёт речь, проблемы в том чтобы прервать выполнение WaitCommEven нет. Ворос наоборот другой, не в том что функция неможет завершится, ожидает события и как её выбить из состояния ожидания, а как предотвратить ложное срабатывание функции от предыдущих событий!
Я просто привел пример кода, который в свое время был отлажен и работает. То, что в нем на два евента меньше — это, скорее всего, не столь важно. Ключевые моменты — во-первых, dwEvtMask сбрасывается в ноль перед вызовом WaitCommEvent, во-вторых, получив EV_RXCHAR, уходит в цикл из ClearCommError/ReadFile до тех пор, пока ClearCommError не вернет нулевое количество байт во входном буфере. При таком подходе возможные ложные срабатывания WaitCommEvent просто игнорируются и ни на что не влияют.