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.