Table 3: Behavior of Read Timeout Value Combinations

I = Interval ms
T = Total ms (Multiplier * Bytes_Requested) + Constant

Interval Total Behavior
------------------------------------------------------
MAXDWORD 0     No read timeouts.  Return immediately
               with any available data.

MAXDWORD *     Special case.  If the interval and
               multiplier values are both set to
               MAXDWORD, and the constant is set to
               any non-zero value less than MAXDWORD,
               one of the following occurs:

                 If there are any characters in the
                 input buffer, return immediately with
                 those characters.

                 If there are no characters in the
                 input buffer, wait until a character
                 arrives and then return immediately.

                 If no character arrives within the
                 time specified by the constant value,
                 a timeout occurs.

 0       0     Return only when the buffer is
               completely filled. Timeouts are not
               used.

 0       T     Returns when the buffer is completely
               filled or when T milliseconds have
               elapsed since the beginning of the
               operation.

 I       0     Returns when the buffer is completely
               filled or when I milliseconds have
               elapsed between the receipt of any two
               characters.  Timing does not begin
               until the first character is received.

 I       T     Returns when the buffer is completely
               filled or when either type of timeout
               occurs.