MUX and Filter Intermediate Driver Differences (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.
There are significant differences between filter intermediate drivers and MUX intermediate drivers. These differences are summarized as follows:
Filter intermediate drivers must always have a one-to-one relationship between virtual miniport instances and underlying miniports. MUX intermediate drivers can have one-to-n, n-to-one, or m-to-n relationships between virtual miniport instances and underlying miniports. This configuration flexibility results in complicated internal bindings and data paths in MUX intermediate drivers.
MUX intermediate drivers require a notify object DLL for configuration. Filter intermediate drivers can have a notify object DLL, but it is not required.
For filter intermediate drivers, the protocol device class is NetService. For MUX intermediate drivers, the protocol device class is NetTrans.
For filter intermediate drivers, you must set the NCF_FILTER (0x400) flag in the Characteristics entry of the driver's protocol INF file. The Characteristics entry is in the DDInstall section.
The UpperBindings registry key identifies the device instance for a filter intermediate driver's virtual miniport. The notify object DLL manages device instance information for a MUX intermediate driver. The UpperBindings registry key holds a list of virtual miniport device identifiers for a MUX intermediate driver.
For filter intermediate drivers, you set the UpperRange INF entry to noupper and the LowerRange INF entry to nolower. Filter intermediate drivers must have a FilterMediaTypes INF file entry. During Initialization, a filter intermediate driver inserts itself into all existing protocol-to-miniport bindings, as appropriate to the media types listed in FilterMediaTypes. For a MUX intermediate driver, you set the UpperRange INF entry for the protocol lower edge to noupper and the LowerRange INF entry for the virtual miniport to nolower. The MUX intermediate driver virtual miniport UpperRange and protocol lower edge LowerRange are established just as with any miniport driver or protocol driver.