I am running the Microsoft's intermediate driver sample code from window driver library. There are no modifications done to the sample. It is a latest library code downloaded from the github.
There is a problem I am facing with the sample. After the installation of the intermediate driver, ndis is not calling the protocol driver's receive handler sometimes.
I see in the debug logs that the packet filters are set and the ndis request is always completing with success status.
I also debugged the code when the protocol driver binds to the physical adapters. It is creating the virtual mini ports successfully and tcp/ip is getting binded to the virtual miniport which is passing down the packet filter value (0x0b) down the driver stack and completing successfully for the ndisrequest.
If it doesn't receive always, then there is some problem in setting the OID_CURRENT_PACKET_FILTER to the underlying miniport driver and I can find a way to fix it. But in this sample sometimes protocol driver is receiving the data, sometimes it is not.
If I uninstall and reinstall, sometimes it starts to receive the data.
I am installing the intermediate driver in a hyper-v virtual machine. I hope the intermediate driver should behave the same for a virtual/physical machine.
This really bugging my head and this discussion would be a great help for me.