Invalidate Offload Sequence
When the host stack sends an invalidate offload request to NDIS, NDIS calls the offload target's MiniportInvalidateOffload function. The MiniportInvalidateOffload function inputs the following parameters:
A handle in the MiniportAdapterContext parameter that references the adapter instance.
A pointer in the OffloadBlockList parameter that points to an NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure. This structure can be stand-alone or the root of a linked list of NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structures that form the framework of an offload state tree.
The MiniportInvalidateOffload function stores the pointer that is in OffloadBlockList and then returns. The offload target always completes the invalidate operation asynchronously by calling the NdisMInvalidateOffloadComplete function.
The following figure shows the invalidate offload call sequence.
Note that the tree that is passed to the MiniportInvalidateOffload function contains only NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structures. The tree does not contain any offload state structures. That is, there are no such structures following the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structures in memory.
The NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structures in the tree indicate the state to be invalidated. A non-NULL value in the MiniportOffloadContext member points to a memory location that contains a PVOID value that was supplied by the offload target when the state was offloaded. (For more information about the MiniportOffloadContext member, see Storing and Referencing Offloaded State.) This PVOID value references the miniport offload context in which the offload target stores the state to be invalidated.