5 лет работаю с ком портом, никогда такого не видел. настройки порта: 9600, 8 бит данных, 1 стоповый, остальные по нулям. тайминги ReadIntervalTimeout = 20; ReadTotalTimeoutMultiplier = 20; ReadTotalTimeoutConstant = 2; WriteTotalTimeoutMultiplier = 20; WriteTotalTimeoutConstant = 2; (почему такие большие для этой скорости - могу рассказать отдельно) посылаю пакетики 9 байт каждые 500мс. периодически (через разные промежутки времени) виснет WriteFile. вызов ClearComError сразу перед WriteFile никакого эффекта не даёт (и пишет что ошибок нет) и WriteFile виснет. вызов ClearComError сразу после WriteFile никакого эффекта не даёт (и пишет что ошибок нет) и WriteFile всё ещё висит. вызов ClearComError спустя эдак миллисекунд 5 после зависания WriteFile помогает оному отвиснуть, но опять пишет, что ошибок нет (КАК?) вызов GetLastError после отвисания опять же пишет, что никаких ошибок не было. Собственно сейчас я лечу зависания периодическим вызовом ClearComError из другого потока, но это выглядит крайне топорно.
Лучше всего посмотреть на каком этапе идёт стопор. Банально подрубить дебаггер и посмотреть колл-стек "зависшего" потока.
n0name Ось поддерживает логгирование хипа например. Это GF: FLG_USER_STACK_TRACE_DB, RtlQueryProcessBackTraceInformation(). RtlLogStackBackTrace() позволяет сохранять бактрейс в базу, она может быть считана предыдущей функой или тулзой UMDH(http://support.microsoft.com/kb/268343). Arisu Может слишком малые интервалы используете ?