Porting Protocol Driver Send and Receive Operations to NDIS 6.0
Data transfer code paths in NDIS 6.0 have changed as follows:
The NET_BUFFER_LIST and NET_BUFFER structures replace the NDIS_PACKET structure.
Drivers can send and receive multiple packets in a single call without determining the number of packets beforehand. This is true because the packets are provided in a linked list of NET_BUFFER structures instead of an array of NDIS_PACKET structures.
The completion status of a send or receive operation is indicated in the Status member of the NET_BUFFER_LIST structure. This completion status is not returned as a function return code or a parameter of the ProtocolSendNetBufferListsComplete function.
The TCP/IP stack that is included in Windows Vista guarantees that all NET_BUFFER structures in a NET_BUFFER_LIST structure are targeted for the same MAC address, IP address, and TCP port. Intermediate drivers are required to provide the same behavior for TCP/IP data sent to underlying drivers.
All send and receive operations are asynchronous.
For more information about NDIS 6.0 send and receive paths, see NET_BUFFER Architecture.
Additional information about porting send and receive operations is included in the following topics:
Allocating Network Data Pools in an NDIS 6.0 Protocol Driver