I have a TDI driver (for a message-oriented protocol, not TCP/IP) which I am
trying to run with a WinSock interface by using a helper DLL. The basic
functions such as bind, accept, connect, recv and send are working, but I
have found a problem when testing the select function which is not
indicating when data is available for reading. The driver in its original
form did not provide for the registration of a ClientEventReceive handler,
so I have had to change the code to cater for this. Now, when data is
received and I call the handler, it is always returning
STATUS_DATA_NOT_ACCEPTED: this is with a test program where a single byte of
data is available and the ReceiveFlags parameter is set to
TDI_RECEIVE_NORMAL | TDI_RECEIVE_ENTIRE_MESSAGE. I have traced into the
handler code and can see that it is checking AfdPollListHead which indicates
that there is nothing on the list, though of course without access to the
AFD source code it is impossible to tell whether this is really relevant to
my problem.
Does anyone have any ideas about what might cause this problem? Am I right
to assume that the WinSock select depends on the ClientEventReceive handler
accepting the data?
Thanks,
Geoff Oakes