Share via


Multipacket Sends from Deserialized Miniport Drivers (NDIS 5.1)

Note   NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.

Each packet descriptor has associated out-of-band (OOB) data, as described in Packet Out-of-Band Data. The OOB block lets a protocol driver specify a time-to-send ( TimeToSend) to a cooperating miniport driver that supports priority sends. Although a deserialized miniport driver can set the Statusmember of the OOB block before returning from MiniportCoSendPackets, this member is ignored by NDIS. The other members of the NDIS_PACKET_OOB_DATA block are read-only to a miniport driver.

The NDIS library ignores the OOB block in all packet descriptors it submits to the MiniportSendPacketsfunctions of deserialized drivers. NDIS assumes that a deserialized miniport driver will complete each packet descriptor input to its MiniportSendPacketsfunction asynchronously with NdisMSendComplete. Consequently, a deserialized driver's MiniportSendPacketsfunction usually ignores the Statusmember of the NDIS_PACKET_OOB_DATA block, but it can set this member to the same status that it subsequently passes to NdisMSendComplete.

Rather than relying on NDIS to queue and resubmit send packets whenever MiniportSendPacketslacks sufficient resources for transmitting the packets, a deserialized miniport driver manages its own internal packet queuing. The driver is responsible for holding incoming send packets in its internal queue until they can be transmitted over the network. The driver is also responsible for preserving the protocol-determined ordering of packet descriptors passed to its MiniportSendPacketsfunction. A deserialized miniport driver must complete each incoming send packet with NdisMSendComplete(see the following figure). A deserialized miniport driver cannot call NdisMSendResourcesAvailable.

A deserialized miniport driver should never pass NDIS_STATUS_RESOURCES to NdisMSendCompletewith a protocol-allocated packet descriptor that was originally submitted to its MiniportSendPacketsfunction. The return of such a status would effectively fail the send operation requested by the protocol, resulting in NDIS returning the packet descriptor and all associated resources to the protocol that originally allocated it.

 

 

Send comments about this topic to Microsoft