Intermediate Driver Design Concepts

This section provides some basic information to help you start writing an NDIS intermediate driver. To write an NDIS intermediate driver, you must understand the NDIS miniport driver and protocol driver operations and functions.

The MUX intermediate driver sample in the Microsoft Windows Driver Kit (WDK) provides a basic example of an n-to-one MUX intermediate driver that you can adapt to your specific needs.

The virtual miniport of an NDIS intermediate driver must be deserialized. Deserialized drivers serialize the operation of their own MiniportXxx functions and queue internally all incoming send network data instead of relying on NDIS to perform these operations. This action results in significantly better full-duplex performance, if the driver's critical sections (code that can be executed by only one thread at a time) are kept small. For more information about deserialized drivers, see Deserialized NDIS Miniport Drivers.

An NDIS intermediate driver can support only connectionless communication at its virtual miniport. At its protocol interface, however, an NDIS intermediate driver can support either connectionless communication or connection-oriented communication. For more information about connection-oriented communication, see Connection-Oriented NDIS.

An intermediate driver is typically layered above one or more NDIS miniport drivers and below a transport driver. Intermediate drivers can also be layered with other intermediate drivers.

The following topics provide additional information about writing NDIS intermediate drivers:

Intermediate Driver DriverEntry Function

Dynamic Binding in an Intermediate Driver

Intermediate Driver Query and Set Operations

Intermediate Driver Network Data Management

Receiving Data in an Intermediate Driver

Transmitting Network Data Through an Intermediate Driver

Handling PnP Events and Power Management Events in an Intermediate Driver

Intermediate Driver Reset Operations

Status Indications in an Intermediate Driver