SetCommTimeouts() api and 0 length reads...

I hope this is appropriate for this list…

I have an application that uses SetCommTimeouts() to
set the ReadIntervalTimeout to a small number (4 milliseconds)
and ReadTotalTimeoutMultiplier = 0, and ReadTotalTimeoutConstant = 0.

What I expect to happen, and what happens with serial.sys, is
that I never receive a 0 length read completion… I always 1
or more bytes.

However, I have encountered several third party USB<->Serial
devices (SIIG and Belkin amoung them) that complete all my
read requests immediately (resulting in me issueing more
read requests immediately… which complete immediately… you
can imagine the effect on the performance of the machine.)

After reading both the platform SDK docuemtation, and the DDK
documentation (which basically just refers to the platform
SDK documentation), I find that it doesn’t appear to be explicitly
documented what the behavior is supposed to be with the setup
I’ve got, but it seems to be strongly implied that my setup
is correct and the thirdy party drivers are wrong.

Can anyone confirm that my setup is supposed to result in
any read requests I issue pending until at least one
byte is available (and a 4 millisecond period with no
additional bytes elapses) ?

Or is there a different way to configure this?

Thanks,

Joseph

(1) This sounds like you are correct.
(2) If you program with ReadFile() and use overlapped IO do you get pending
for a read of 1 byte with the USB-Serial devices. Without any
SetCommTimeouts()?

Sincerely;
William Michael Jones

“Joseph Galbraith” wrote in message news:xxxxx@ntdev…
> I hope this is appropriate for this list…
>
> I have an application that uses SetCommTimeouts() to
> set the ReadIntervalTimeout to a small number (4 milliseconds)
> and ReadTotalTimeoutMultiplier = 0, and ReadTotalTimeoutConstant = 0.
>
> What I expect to happen, and what happens with serial.sys, is
> that I never receive a 0 length read completion… I always 1
> or more bytes.
>
> However, I have encountered several third party USB<->Serial
> devices (SIIG and Belkin amoung them) that complete all my
> read requests immediately (resulting in me issueing more
> read requests immediately… which complete immediately… you
> can imagine the effect on the performance of the machine.)
>
> After reading both the platform SDK docuemtation, and the DDK
> documentation (which basically just refers to the platform
> SDK documentation), I find that it doesn’t appear to be explicitly
> documented what the behavior is supposed to be with the setup
> I’ve got, but it seems to be strongly implied that my setup
> is correct and the thirdy party drivers are wrong.
>
> Can anyone confirm that my setup is supposed to result in
> any read requests I issue pending until at least one
> byte is available (and a 4 millisecond period with no
> additional bytes elapses) ?
>
> Or is there a different way to configure this?
>
> Thanks,
>
> Joseph
>