>> Nice code.
Thanks - not too shaby for code that was written almost 10 years ago

The code does have a bug where CancelIO() is never called when Read() or Write() decides to give up on an overlapped result. This is also true for the example code given in the MSDN article (probably because it was written in, and for 95).

>> I have to use Data Carrier Detected (DCD)
SFile is not very flexible to different types of configurations in this regard. You can configure this by in SFile::Open() by setting up the dcb structure to suite you needs. The other mode settings for the port come from the MODESETTINGS global.

gg