Questions on TDI Client Driver

  1. What will happen if TDIBuildReceive is called when there is no data available?

  2. In my TDI Clientdriver, ClientEventReceive is registered, when there is data available, one event is set to notify the thread waiting on the event. The right process is, client sent request to the server, then waiting for the replication. When the server received the request, it replied the server, however, after accepted the request, the server is pending and ClientEventReceive won’t be called, then timeout in client occured. Why it is pending? Was the server scheduled out or anything else?

  3. Is sending a large buffer(>30K) one time more reliable than packaging and sending it more times?

Thanks very much for your advise.

paul

“Paul Chen” wrote in message news:xxxxx@ntdev…
> 1. What will happen if TDIBuildReceive is called when there is no data
> available?
>

From the DDK:

“…the underlying transport fills the given buffer with received data until
the client’s buffer is full…”

Your callback will eventually be called when TCP can satisfy your read
request.

> 2. In my TDI Clientdriver, ClientEventReceive is registered, when there is
> data available, one event is set to notify the thread waiting on the
> event. The right process is, client sent request to the server, then
> waiting for the replication. When the server received the request, it
> replied the server, however, after accepted the request, the server is
> pending and ClientEventReceive won’t be called, then timeout in client
> occured. Why it is pending? Was the server scheduled out or anything else?
>

Don’t have a clue…

> 3. Is sending a large buffer(>30K) one time more reliable than packaging
> and sending it more times?
>

Since TCP is inherently “reliable” the size of the buffer won’t effect
reliability.

However, in terms of efficiency sending larger buffers is better.

Good luck,

Thomas F. Divine, Windows DDK MVP
http://www.pcausa.com

> Thanks very much for your advise.
>
> paul