Comparison of Offload Block List Types
[The TCP chimney offload feature is deprecated and should not be used.]
The following figure shows the differences between an NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure and an NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure.
An NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure and an NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure differ as follows:
In an NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure, the NdisReserved member is an array of two PVOIDs. In an NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure, the NdisReserved member is an array of three PVOIDs.
The NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure contains MiniportOffloadContext and NdisOffloadHandle members. (For a description of how these two members are used, see Storing and Referencing Offloaded State.) Instead of these two members, an NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure contains an OffloadHandle member. (For a description of how the OffloadHandle is used, see Referencing Offloaded State Through an Intermediate Driver.)
When propagating a state-manipulation operation, an intermediate driver must convert an incoming NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure to an NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST. For more information about this conversion, see Reusing an NDIS_MINIPORT_OFFLOAD_BLOCK_LIST Structure.
When propagating the completion of a state-manipulation operation, an intermediate driver must convert an incoming NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST structure to an NDIS_MINIPORT_OFFLOAD_BLOCK_LIST. For more information about this conversion, see Reusing an NDIS_PROTOCOL_OFFLOAD_BLOCK_LIST Structure.