In my TDI client, I pre-post a number of receives
using TdiBuildSend() and get back STATUS_PENDING.
All is well and good; I get completions where
IoStatus.Information shows I have received data.
I also have the chained and normal receive handlers
for when all buffers are busy.
Fairly frequently, I get completions on all outstanding
receives, but irp->IoStatus.Information shows no data.
I re-post the buffer and all is well again.
There is no change in the connection, data continues
to flow.
What causes TCP to complete all outstanding IRPs when
no data is presented?
Also, I’m assuming that it is legal to have multiple
outstanding posted receives (ie, multiple irps built
with TdiBuildSend() that you’ve posted and gotten back
STATUS_PENDING?
The usual way is to preallocate lots of buffers, and then wait for
ClientEventReceive callback.
The TDI_RECEIVE IRP is usually sent only to restart the socket after it was
stalled by STATUS_DATA_NOT_ACCEPTED from ClientEventReceive.
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
----- Original Message -----
From: “Peter Lawthers”
To: “Windows System Software Devs Interest List”
Sent: Wednesday, June 02, 2004 6:07 AM
Subject: [ntdev] Receive completions in TDI client
> In my TDI client, I pre-post a number of receives
> using TdiBuildSend() and get back STATUS_PENDING.
> All is well and good; I get completions where
> IoStatus.Information shows I have received data.
>
> I also have the chained and normal receive handlers
> for when all buffers are busy.
>
> Fairly frequently, I get completions on all outstanding
> receives, but irp->IoStatus.Information shows no data.
> I re-post the buffer and all is well again.
>
> There is no change in the connection, data continues
> to flow.
>
> What causes TCP to complete all outstanding IRPs when
> no data is presented?
>
> Also, I’m assuming that it is legal to have multiple
> outstanding posted receives (ie, multiple irps built
> with TdiBuildSend() that you’ve posted and gotten back
> STATUS_PENDING?
>
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com