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

Porting NDIS Protocol Driver Send Data Handling

Porting NDIS Protocol Driver Receive Data Handling