From: ricobandito on


"Tim Roberts" wrote:

> ricobandito <ricobandito(a)discussions.microsoft.com> wrote:
> >"Tim Roberts" wrote:
> >>
> >> This is a side trip, but why use an interrupt out pipe? I've never seen
> >> the point -- you can do the same thing with bulk and get better
> >> performance.
> >
> >This is what the hardware provides. Not my decision.
>
> And you can't ask why this decision was made?
>
> >> How are you "passing on" the request? Are you calling
> >> FormatRequestForWrite and ForwardFormattedRequest in your OnWrite handler,
> >> like in the sample? Are you seeing an error in your OnCompletion handler?
> >> Which error?
> >
> >Just as you say, error code is some odd value. Does not match any
> >meaningful error code.
>
> You didn't answer any of my questions.
> --
> Tim Roberts, timr(a)probo.com
> Providenza & Boekelheide, Inc.
> .
>

Oh, and I am using a symbolic line name as well.
From: ricobandito on


I mean "symbolic link"
From: Tim Roberts on
ricobandito <ricobandito(a)discussions.microsoft.com> wrote:
>
>The answer I received was that all packet sizes a small (<= 64 bytes) and
>latency for these messages is better than in bulk.

That's completely wrong. The CONSISTENCY is better with interrupt, but the
LATENCY (and bandwidth) is provably better with bulk. A bulk packet will
go out instantly. An interrupt packet must wait for the pipe's interval.

>Yes, using FormatRequestForWrite just as in the sample, including call to
>ForwardFormattedRequest. OnWrite and OnRead are just as in sample.
>Everything I am finding does not appear to point out any differences in this
>method, interrupt or bulk. Driver trace is showing OnCompletion being
>called with good parameter data, but that does not make it back to the app.

That's interesting. So, if you print GetCompletionStatus() and
GetInformation() in OnCompletion, the numbers look OK, and don't match the
application's result?
--
Tim Roberts, timr(a)probo.com
Providenza & Boekelheide, Inc.
From: ricobandito on


"Tim Roberts" wrote:

> ricobandito <ricobandito(a)discussions.microsoft.com> wrote:
> >
> >The answer I received was that all packet sizes a small (<= 64 bytes) and
> >latency for these messages is better than in bulk.
>
> That's completely wrong. The CONSISTENCY is better with interrupt, but the
> LATENCY (and bandwidth) is provably better with bulk. A bulk packet will
> go out instantly. An interrupt packet must wait for the pipe's interval.
>

Perhaps I misunderstand then, but the hardware developers are convinced the
interrupt is a better option in this case than bulk. I have a basic
understanding of USB, so I can't make a strong argument to go with one over
the other, and really, that is neither here not there for the situation I am
seeing, I don't think.


> >Yes, using FormatRequestForWrite just as in the sample, including call to
> >ForwardFormattedRequest. OnWrite and OnRead are just as in sample.
> >Everything I am finding does not appear to point out any differences in this
> >method, interrupt or bulk. Driver trace is showing OnCompletion being
> >called with good parameter data, but that does not make it back to the app.
>
> That's interesting. So, if you print GetCompletionStatus() and
> GetInformation() in OnCompletion, the numbers look OK, and don't match the
> application's result?

Yes, the trace shows all the parameter status such as GetCompletionStatus()
and GetInformation() look good. Issue looks to be the driver not getting the
right status back to the app, so the writefile on the app is failing.

One thing I did try was to remove the completion callback and call
CompleteWithInformation() right after the send. This gets we one good
WriteFile call, and then I get a failure on the second call, with a
GetLastError() of 6. Odd coincidence is that the first byte in the write
data is 6.
> --
> Tim Roberts, timr(a)probo.com
> Providenza & Boekelheide, Inc.
> .
>