Overlapped Serial I/O on WinXP or Win2k RRS feed

  • Question

  • Hi All,

    I have an old piece of software that uses overlapped I/O to read/write from/to a serial port. The code is part of a larger app, that would be difficult to modify.

    The app appears to be dropping an input string, depending on PU/interrupt load. Im not sure if its a hardware or software problem.

    Now to the question:

    The code uses handles in the Overlapped structures in an unusual way (I've been working with overlapped IO for a long time, never seen this). The worker thread runs in a loop, at the top of the loop it waits on 4 handles. 3 of these handles are in the Overlapped structs handle member. When one of the handles signals, it calls a function to process (read or write) data.

    I have always used overlapped IO the opposite way (the way the documentation says to use it):

    1) Call any of the functions that take an Overlapped struct as an argument
    2) Check the return value. If its ERROR_IO_PENDING, then you have to wait on the handle in the Overlapped sturct.
    3) If its OK, then you can continue with whatever you were doing (reading, writing, etc).

    The old code I'm working with does it backwards, first waits on the handles, then calls the function (ReadFile, etc). The documentation does not state what happens in this case.

    Is it valid to first wait on all of the overlapped handles, THEN do the function call?

    Thanks for any help you might provide!!
    Wednesday, November 14, 2007 10:48 AM