After seeing some VPN client samples using NDIS miniport,
1) The miniport driver collects the data in the function callback MiniportSendNetBufferLists () and copies the data to user mode buffer for processing by the application. Then it calls the function NdisMSendNetBufferListsComplete() to indicate the success status to the NDIS and upper level driver.
2) Once user mode program processed the data, NDIS miniport driver gets the processed data from the buffer, copies to NET_BUFFER and invokes the function NdisMIndicateReceiveNetBufferLists().
I couldn't understand this flow. Basically the miniport driver has to call the underlying driver through NDIS to transmit the modified data packet. Why it is invoking NdisMIndicateReceiveNetBufferLists() as if it is received new data from the network. Basically this data has to be transmitted down as it was received in the first step for some processing.
It looks like you're new here. If you want to get involved, click one of these buttons!
|Upcoming OSR Seminars||Kernel Debugging||30 Mar 2020||OSR Seminar Space|
|Developing Minifilters||20 Apr 2020||OSR Seminar Space & ONLINE|
|Writing WDF Drivers||11 May 2020||OSR Seminar Space & ONLINE|
|Internals & Software Drivers||28 Sept 2020||Dulles, VA|