Вы пытаетесь сначала запросить количество доступных байтов, а затем прочитать их.Стандартным способом было бы просто выделить буфер (скажем, 1000 символов), а затем вызвать ReadComm (), который сообщает , сколько байт было фактически использовано (например, меньше или равно 1000).
Вы можете очистить буфер последовательного ввода-вывода с помощью FlushFileBuffers () (http://msdn.microsoft.com/en-us/library/aa364439%28VS.85%29.aspx), но, поскольку вы хотите асинхронный ввод-вывод, вы, вероятно, захотите делать это только тогда, когда вы записали в файл, а затем хотите переместить файл (конечно, не при каждом вызове WriteComm ()).
Дополнительная информация:
http://msdn.microsoft.com/en-us/library/ms810467.aspx