Supporting Header-Data Split in Protocol Driver and Filter Drivers
NDIS 6.0 and later protocol drivers and filter drivers must support receive indications with the header and data in non-contiguous buffers.
You must not assume that there is only a single MDL in a NET_BUFFER structure. Protocol drivers and filter drivers are not required to do anything specific to support header-data split registration. But, the driver receive handling code must handle more than one MDL in the MDL chain and must use the following NDIS MDL macros to access the MDL chain:
With split buffers, the data length that is associated with the NET_BUFFER structure (in the DataLength member of the NET_BUFFER_DATA structure) is split across multiple MDLs. For example, if a protocol driver tried to access the entire data buffer in the first MDL, the driver could access invalid data.