I am writing an NDIS driver and I can't get Windows to accept incoming
packets. I receive a packet from the remote host and I can dump the
data and see that it is correct. Then, I use NdisMEthIndicateReceive
and it returns without errors. I also call
NdisMEthIndicateReceiveComplete after each NdisMEthIndicateReceive.
I am using NetXRay to view the network traffic and every packet that I
indicate to Windows shows up in NetXRay and is decoded without
problems. But--my applications do no get any data. I don't think
it's a problem with my applications because I have tested those on a
working network and they work fine.
I have noticed that one packet works. When a remote machine sends me
an ARP request, I indicate the packet to Windows and Windows processes
it (adding the remote host to the ARP table) and replies. But, when I
remove the entry from my ARP table and try to ping the remote host,
Windows sends an ARP request, which I send out to the remote host.
The remote host replied with an ARP reply, which I indicate to
Windows. But--Windows does not add the remote host to the ARP table
and will not send out the ping packet.
Has anyone seen this before or can at least point me in the right
direction for help?