Indicating Received Data from a Miniport Driver
The following figure illustrates a miniport driver receive indication.
Miniport drivers call the NdisMIndicateReceiveNetBufferLists function to indicate the receipt of data from the network. The NdisMIndicateReceiveNetBufferLists function passes the indicated list of NET_BUFFER_LIST structures up the stack to overlying drivers.
If a miniport driver sets the NDIS_RECEIVE_FLAGS_RESOURCES flag in the ReceiveFlags parameter of NdisMIndicateReceiveNetBufferLists, this indicates that the miniport driver must regain ownership of the NET_BUFFER_LIST structures immediately. In this case, NDIS does not call the miniport driver's MiniportReturnNetBufferLists function to return the NET_BUFFER_LIST structures. The miniport driver regains ownership immediately after NdisMIndicateReceiveNetBufferLists returns.
If a miniport driver does not set the NDIS_RECEIVE_FLAGS_RESOURCES flag in the ReceiveFlags parameter of NdisMIndicateReceiveNetBufferLists, NDIS returns the indicated NET_BUFFER_LIST structures to the miniport driver's MiniportReturnNetBufferLists function. In this case, the miniport driver relinquishes ownership of the indicated structures until NDIS returns them to MiniportReturnNetBufferLists.