Noch mal:
Das mit dem Asynchron Lesen ist deutlich schwieriger als synchron. Probier doch mal die zweite Variante aus oder gib mal eine Rückmeldung dazu, falls du das schon hast. CreateFileA ohne FILE_FLAG_OVERLAPPED aufrufen und auf das ganze Overlapped Gedöns
verzichten. Dann kommt der Rücksprung aus WaitCommEvent auch wirklich nur wenn dein Char im Buffer ist und die ganzen Waitfor... Aufrufe erledigen sich auch.