Driver Interface Rules

NETDI uses upper and lower interfaces to describe the possible relations between the layered drivers in the network system. The lower interface is the software or hardware interface that the driver talks to. For example, a network adapter driver might talk to Ethernet or tokenring. The upper interface is the software interface that the driver provides. For example, an NDIS 3.1 network adapter driver provides ndis3 as an upper interface; an NDIS 3.1 transport driver has ndis3 as a lower interface and might provide netbios or ipx as its upper interface.

The following interface names are predefined to cover the most common interfaces; however, any string of alphanumeric characters is a legal interface name. This allows you to create private interfaces between components. When defining your own interface, include the manufacturer name in the interface name to avoid conflicts with other vendors.

ethernet lower edge for an ethernet network adapter
tokenring lower edge for a token ring network adapter
serial lower edge for a serial network adapter
fddi lower edge for an FDDI network adapter
baseband lower edge for a baseband network adapter
broadband lower edge for a broadband network adapter
arcnet lower edge for an ARCNET network adapter
odi ODI
ndis2 NDIS 2.1
ndis3 NDIS 3.X
netbios NetBIOS
ipx IPX
tdi TDI interface to TCP/IP
winsock the Windows Sockets interface
winnet31 upper edge for a Windows 3.1 compatible WinNet driver
multinet31 upper edge for a Windows for Workgroups multi-network compatible WinNet driver
winnet4 upper edge for a Window 4.0 network provider

NETDI matches the upper and lower interfaces of drivers to validate bindings between drivers. In addition, NETDI also checks for other required or excluded interfaces down the chain of bound driver and in the entire network subsystem. If an object has a lower edge that does not match the upper edge of any of the installed components, NETDI will attempt to install a component that does match the interface. For example, the Client for Windows Networks has a lower edge of NetBIOS. If the user tries to install this client without a NetBIOS protocol, NETDI will automatically install a protocol to match the required interface. In this case it would install NetBEUI.

The following list shows the registry entries for specifying interfaces requirements for a network driver. An interface list is a comma-separated list of interface names, for example, ndis2, ndis3, odi.

Driver Sub Key Value Name Value Description
Ndi\Interfaces DefUpper interface list These are the currently available upper interfaces.
Ndi\Interfaces DefLower interface list These are the currently available lower interfaces.
Ndi\Interfaces UpperRange interface list These are all possible upper interfaces. This value is maintained by NETDI and should not be set in an INF file.
Ndi\Interfaces LowerRange interface list These are all possible lower interfaces. This value is maintained by NETDI and should not be set in an INF file.
Ndi\Interfaces RequireAny interface list The driver requires that any driver in the system supports this interface.
Ndi\Interfaces ExcludeAny interface list The driver requires that no driver in the system supports this interface.

The current upper and lower interfaces are queried in an NDI procedure by sending the appropriate NDI_GET_UPPER_INTERFACES and NDI_GET_LOWER_INTERFACES messages. The default NDI procedure reads the interface list from the registry. A custom NDI procedure can therefore enable or disable interfaces by returning a different interface list.