в вызов ReadFile указываю считать 1000 байт и далее анализирую все что смог к этому моменту получить. От 1 до нескольких байт в зависимости от того, как винда реагировала. Но все равно опрос достаточно частый нужен, т.к. аппаратное ФИФО шибко ограниченное. Отсюда и желателен поток, а не обработчик VCL-ного таймера.