NDIS miniport driver send and receive data path

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.