Последовательные порты Unix имеют большой выходной буфер. Вызовы записи возвращаются немедленно, пока в буфере есть место. Когда места недостаточно, блокирующая запись ожидает, пока буфер не опустеет до некоторого низкого уровня.
В Windows 7 с пакетом обновления 1 (SP1) встроенный последовательный порт 16550 ведет себя так, как будто буфер вывода отсутствует. Вроде пишет блок, пока данные не выводятся из порта. Если есть буфер, то он даже меньше 16 байт, установленных в диспетчере устройств (в дополнительных настройках для COM1). Функция SetupComm позволяет указать рекомендуемые размеры входных и выходных буферов. Однако размер выходного буфера, похоже, не меняет поведения, и GetCommProperties всегда устанавливает для поля dwCurrentTxQueue нулевое значение. Единственное, что может сделать SetupComm, это увеличить размер входного буфера.