Summary of Changes Required to Port an Intermediate Driver to NDIS 6.0

This topic summarizes the changes that are required to port an NDIS 5.x intermediate driver to NDIS 6.0. Porting earlier drivers is similar to porting NDIS 5.x drivers.

The following general issues apply to intermediate drivers:

To run in the NDIS 6.0 environment, NDIS 5.x intermediate drivers must be modified as follows:

Build Environment

  • Replace the NDIS51_MINIPORT_DRIVER preprocessor definition with NDIS60_MINIPORT_DRIVER.

  • Replace the NDIS51 preprocessor definition with NDIS60.

Driver Initialization

Driver Unload

Check for Hang and Reset

Send and Receive Code Paths

  • Rewrite the send and receive code paths to use NET_BUFFER structures and NET_BUFFER_LIST structures instead of NDIS_PACKET structures.

  • Specify the intermediate driver's backfill size requirements. The driver receives backfill requirements from underlying drivers in the NDIS_BIND_PARAMETERS or restart attributes. The driver adds its backfill size requirements to the size that the underlying drivers reported. The driver specfies backfill size requirements for its virtual miniports in the NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES structure or restart attributes.

  • Optional. Use the clone, fragment, and reassemble interfaces when handling NET_BUFFER_LIST structures. For more information about handling NET_BUFFER_LIST structures, see Derived NET_BUFFER_LIST Structures.

  • Remove code, if any, that handles "packet stacking" special cases. Instead, use the NET_BUFFER_LIST_CONTEXT structure and related interfaces to create and manage context space.

OID Requests

Status Indications

Plug and Play Events

Binding and Adapter States

  • Include NDIS 6.0 pause and restart functionality. Optionally include support for pause and restart of virtual miniports when NDIS pauses an underlying driver stack. For more information about pause and restart, see Driver Stack Management.