Hi all,
TDI Q:
I am using TDI interface and establishing a Tcp connection by opennig a
local and remote endpoints , then TDI_ASSOCIATE_ADDRESS
and TDI_CONNECT . Later on TDI_SEND and TDI_RECEIVE are done succesfully
multiple times .
Q: While waiting for receive (TDI_RECEIVE Irp is pending at the
Transport) what is the best way to cancel /stop the Irp which is still at
the Transport layer . Will TDI_DISCONNECT, TDI_DISASSOCIATE_ADDRESS , and
closing the local and remote endpoint will automatically complete the
pending irp ?
I tried the last way , but it causes problem when connection is regenerated
(io_timeout is returned from the TDI when TDI_CONNECT is tried ).
thanks,
Zvi Dubitzky
IBM - HRL
Zvi,
yes, executing TDI_DISCONNECT will compete pending TDI_SEND and
TDI_RECEIVE IRPs. You may wish to experiment with different disconnect
flags (abortive disconnect Vs. graceful disconnect) in your software.
Cancelling TDI IRPs may be a real pain in the neck. Check this list’s
archive.
I was struggling with this topic for a while - maybe you’ll find the
results interesting.
Regards,
Anton Kolomyeytsev
Hi all,
TDI Q:
I am using TDI interface and establishing a Tcp connection by opennig a
local and remote endpoints , then TDI_ASSOCIATE_ADDRESS
and TDI_CONNECT . Later on TDI_SEND and TDI_RECEIVE are done succesfully
multiple times .
Q: While waiting for receive (TDI_RECEIVE Irp is pending at the
Transport) what is the best way to cancel /stop the Irp which is still at
the Transport layer . Will TDI_DISCONNECT, TDI_DISASSOCIATE_ADDRESS , and
closing the local and remote endpoint will automatically complete the
pending irp ?
I tried the last way , but it causes problem when connection is regenerated
(io_timeout is returned from the TDI when TDI_CONNECT is tried ).
thanks,
Zvi Dubitzky
IBM - HRL
> Q: While waiting for receive (TDI_RECEIVE Irp is pending at the
Transport) what is the best way to cancel /stop the Irp which is
still at
the Transport layer .
Avoid sending TDI_RECEIVES, rely on ClientEventReceive and pend the
read IRPs to your own queue.
Will TDI_DISCONNECT, TDI_DISASSOCIATE_ADDRESS , and
closing the local and remote endpoint will automatically complete
the
pending irp ?
TDI_DISCONNECT_ABORT will clean up everything with some error codes.
Max