NDIS Intermediate 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.As the following figure illustrates, intermediate drivers are typically layered between miniport drivers and transport protocol drivers.
Because of its intermediate position in the driver hierarchy, an intermediate driver must communicate with both overlying protocol drivers and underlying miniport drivers in order to expose:
Protocol entry points
At its lower edge, NDIS calls the ProtocolXxx functions to communicate requests from underlying miniport drivers. The intermediate driver looks like a protocol driver to an underlying miniport driver.
Miniport driver entry points
At its upper edge, NDIS calls the MiniportXxx functions to communicate the requests of one or more overlying protocol drivers. The intermediate driver looks like a miniport driver to an overlying protocol driver.
Although it exports a subset of the MiniportXxx functions at its upper edge, an intermediate driver does not actually manage a physical NIC. Instead, it exports one or more virtual adapters, to which overlying protocols can bind. To a protocol driver, a virtual adapter exported by an intermediate driver appears to be a physical NIC. When a protocol driver sends packets or requests to a virtual adapter, the intermediate driver propagates these packets and requests to the underlying miniport driver. When the underlying miniport driver indicates received packets, responds to a protocol's requests for information, or indicates status, the intermediate driver propagates such packets, responses, and status up to the protocol drivers that are bound to the virtual adapter.
You can use intermediate drivers to:
Translate between different network media
For example, the function of an intermediate driver layered between Ethernet and Token Ring transports and an ATM miniport driver is to map Ethernet and Token Ring packets to ATM packets and vice versa.
A packet scheduler is an example of an intermediate driver that is used as a filter driver. A packet scheduler reads priority information in each send packet that is passed down by a transport for transmission, and each receive packet that is indicated up by a miniport driver. The packet scheduler then schedules each packet for transmission or reception based on its priority.
Balance packet transmission across more than one NIC
A load balancing driver exposes one virtual adapter to overlying transport protocols and distributes send packets across more than one NIC.