Wenn du an der seriellen Schnittstelle mehr Zeichen auslesen willst als im Puffer anliegen, dann wartet ReadFile, bis die gewünschte Anzahl von Bytes vorliegen. Ich empfehle zur Verhinderung dessen den Zugriff per Overlapped IO. Siehe dazu näheres bei CreateFile() und dem entsprechenden Parameter. Ein Demoprogramm dazu ist dort mit verlinkt in der
MSDN.