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: