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.