Hi,
I take in count others alternatives like develop an NDIS IM driver or an
LSP, but for others client requirements I think the best solution is a TDI
Filter. As Maxim, I think that is a better idea to implement the filtering
process into user service but I as I say before I have to comply with
client requirements (an old story…).
An answering these questions…
1.- Yes, I take in count that I must complete this IRPs. Anyway, because I
am indicating all packet content and using receive entire message flag the
client always set the IRP to NULL.
2.- Yes, I am processing TDI_RECEIVE, although in general, no call to
TDI_RECEIVE is received.
3.- Yes, I am calling TdiMapUserRequest.
4.- Flag: I test all, first wiht TDI_RECEIVE_NORMAL |
TDI_RECEIVE_ENTIRE_MESSAGE . Second with TDI_RECEIVE_ENTIRE_MESSAGE only.
5.- The tdi client is registering both handler: ClientEventReceive and
ClientEventChainedReceive. I am not using ClientEventChainedReceive because
I don’t know how to work with TsduDescriptor parameter. I have seen that in
the same connection always is set to the same value, but because I don’t
know if the client are going to call to TdiReturnChainedReceive with this
value I don’t think it is a good solution. Do you know more about this
parameter?
Anyway, I want to remember my problem. The driver is working well for some
smtp clients I have used (a basic client and Thunderbird mail client) but
when I use Microsoft Outlook Express, appears that the receive indication
doesn’t arrive. I suppose all of this clients send/receive data trhought
afd.sys, so I don’t find any reason to my problem. The only one is that
microsoft outlook express is accessing the network using another way. I have
develop some others tdi filters and I never have found similar problem…
The life is too hard for developers… :).
Thanks for all!!!
-----Mensaje original-----
De: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] En nombre de David R. Cattley
Enviado el: s?bado, 29 de enero de 2005 0:46
Para: Windows System Software Devs Interest List
Asunto: Re:[ntdev] Problems with TdiClientEventReceive
Josus,
First, I must agree with Maxim. You are most likely in the wrong place for
you application. You might look into writing a ‘filtering’ WINSOCK provider
to do this as an alternative if you don’t need to catch kernel mode clients
sending SMTP requests.
But with respect to your question: Make sure you can answer yes to all of
these.
- Are you completing any IRP returned from the call to
ClientEventReceive?
- Are you processing TDI_RECEIVE Irps presented at
DispatchInternalDeviceControl?
- Are you calling TdiMapUserRequest() in DispatchDeviceControl and dealing
with the possiblity of an TDI_RECIEVE Irp?
- Are you setting the flags properly in ClientEventRecieve() call?
- Did the TDI Client (AFD.SYS most likely in this case) register a Chained
Recieve handler? Perhaps you should be calling it instead…
Good Luck,
Dave Cattley
Consulting Engineer
Systems Software Development
“Josus” wrote in message news:xxxxx@ntdev…
>
> Hi,
>
> I am developing a SMTP Filter based on a TDI Driver. The idea is save
> all data sent by the email client, and one time the data is revised
> send it throught the network. The driver is transparent for
> applications, so the smtp client think that the email is being sent
> although in this time the email is only be saved.
>
> For this purpose, I implemented to parts. The first one completes all
> “TDI_SEND Irps” without pass it to the lower driver, so the smtp
> client think that the data is being sent. The second one, call
> ClientEventReceive to simulate in the smtp client the responses of the
server.
>
> I have made a little smtp client application that implement the basic
> commands to send an email and I have tested that all work well. When
> the driver call ClientEventReceive handler, the data is received in
> the test application. However, I have problems with Microsoft Outlook
> Express. The data is intercepted but when I call ClientEventReceive
> handler it don’t do nothing. I suppose that highter drivers is
> receiving the data because BytesTaken parameter is filled with the
> total lenght of the data, but it doens’t seem to arrive to Outlook because
it doesn’t send a response.
>
> Is it possible that an application don’t receive the data indicated
> with ClientEventReceive although the Event handler for this “Event
> type” is set?
> Do you know any others issues that can be the cause of this problem?
>
>
> Thanks in advance for your help.
>
>
>
—
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@telefonica.net To
unsubscribe send a blank email to xxxxx@lists.osr.com