Mit nicht initaliesieren Variabelen zu schaffen ist nicht gut.
und zweites habe auf die Schnelle was übersehen gehabt sorry

DWORD dwBytesRecive, dwEvtMask;
....
SetCommMask(hCom, EV_DSR);
...
WaitCommEvent(hCOM,&dwEvtMask,NULL);
if (dwEvtMask & EV_DSR)
{
....
}

EV_DSR: Ist ein Konstane

Gruß
PS: Sorry für den Fehler