3.5.1 Registry Entries for an NDIS Intermediate Driver

After installation, the registry must contain an HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NameOfComponent
\CurrentVersion\NetRules entry that describes an NDIS intermediate driver's upper-edge miniport behavior and, if the driver also registers a set of ProtocolXxx functions, a …NetRules entry that describes its lower-edge protocol behavior. The form of these entries should match those previously described for miniport and transport protocol drivers, respectively.

In addition, after the binding engine runs, the registry must contain an entry for both the miniport and protocol behavior of such an intermediate driver at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\
NameOfComponent and another entry for each virtual NIC that such a driver creates. The following illustrates how these entries should appear for an intermediate driver that emulates a LAN miniport at its upper edge and an ATM protocol driver at its lower edge that creates a single virtual NIC.

For such an intermediate driver, an entry for the miniport upper edge would be defined as follows at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\LaneMiniport\
:
    DisplayName : REG_SZ : ATM LanEmulationMiniport
    ErrorControl : REG_DWORD : 1
    Group : REG_SZ : NDIS
    ImagePath : REG_SZ : \SystemRoot\system32\drivers\atmlane.sys
    Start : REG_SZ : 2
    Type : REG_SZ : 1
    Linkage
        Bind : REG_MULTI_SZ : \Device\LaneMiniport1
        Export : REG_MULTI_SZ : \Device\LaneMiniport1
        Route : REG_MULTI_SZ : “LaneMiniport1”

Its entry for the protocol upper edge would be defined as follows at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
\Services\LaneProtocol\
:
    DisplayName : REG_SZ : ATMLanEmulationProtocolDriver
    ErrorControl : REG_DWORD : 1
    Group : REG_SZ : TDI
    Start : REG_SZ : 3
    Type : REG_SZ : 4
    Linkage\
        Bind : REG_MULTI_SZ : \Device\AtmMiniport1
        Export : REG_MULTI_SZ : \Device\LaneProtocol
        Route : REG_MULTI_SZ : “AtmMiniport”

Such a driver also would have an entry that represents the virtual NIC created by the upper-edge miniport, defined as follows at ..SYSTEM\CurrentControlSet\Services\LaneMiniport1:
    ErrorControl : REG_DWORD : 1
    Group : REG_SZ : NDIS
    Start : REG_SZ : 3
    Type : REG_SZ : 4
    Linkage
        Bind : REG_MULTI_SZ : \Device\LaneMiniport1
        Export : REG_MULTI_SZ : \Device\LaneMiniport1
        Route : REG_MULTI_SZ : “LaneMiniport1”
    Parameters
        ……..

A Type value of 4 tells the Service Controller that the component described should not be started.

Pruning the Registry For an Intermediate Driver

As described previously in Section 3.5, the result of the binding analysis for each component that identifies its class as a Transport can be a list of all the NIC device names that appear in the Export list of each NIC driver installed on the machine. Because an NDIS intermediate driver appears as a transport protocol at its lower edge and as a miniport at its upper edge, the binding analysis will list the upper-edge-exported adapter name for the intermediate driver itself as one of the NICs to which the lower edge miniport can bind itself.

Consequently, such an intermediate driver must request a Review pass when its .inf file runs and use the review to prune the name of its upper edge virtual NIC from the list of possible bindings.