The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.
Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/
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.
|Upcoming OSR Seminars|
|OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!|
|Internals & Software Drivers||30 Nov 2020||LIVE ONLINE|
|Writing WDF Drivers||7 Dec 2020||LIVE ONLINE|
|Developing Minifilters||Early 2021||LIVE ONLINE|