Reusing an NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Structure
[The TCP chimney offload feature is deprecated and should not be used.]
When propagating the completion of a state-manipulation operation, an intermediate driver overlays most of the members of an incoming NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure onto an NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure. (For a comparison of these structures, see Comparison of Offload Block List Types.)
The intermediate driver uses the pointer in the ImReserved member of the incoming NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure to locate its IM call entry for the state-manipulation operation. The intermediate driver supplied this pointer when constructing the NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure that it passed to the NdisXxxOffload function when propagating the state-manipulation operation.
The intermediate driver copies the ImReserved and SourceHandle members that it stored in its IM call entry to the ImReserved and SourceHandle members of the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure.
When calling the NdisMXxxComplete function, the intermediate driver passes a pointer to the newly constructed NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure.