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.

diagram illustrating a comparison of offload block list types

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.