Writing an NDIS Intermediate Driver (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.
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.
See also the Passthru and MUX intermediate driver samples in the Microsoft Windows Driver Kit (WDK). These samples provide basic examples of a filter intermediate driver and 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 packets instead of relying on NDIS to perform these operations. This results in significantly better full-duplex performance, provided that 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 NDIS 5.1 packet-stacking interface allows an intermediate driver to be layered with other intermediate drivers while limiting performance penalties associated with packet management.
The following topics provide additional information about writing NDIS intermediate drivers:
MUX and Filter Intermediate Driver Differences
Intermediate Driver Platform-Specific Differences
Intermediate Driver DriverEntry Function
Dynamic Binding in an Intermediate Driver
Intermediate Driver Query and Set Operations
Intermediate Driver Packet Management
Restrictions on Intermediate Drivers
Receiving Data in an Intermediate Driver
Transmitting Packets Through an Intermediate Driver
Handling PnP Events and PM Events in an Intermediate Driver
Intermediate Driver Reset Operations
Status Indications in an Intermediate Driver