NDIS Driver Model

NDIS supports the following primary types of network drivers:

A miniport driver is a driver that connects hardware devices to the protocol stack. The miniport driver is connected to an intermediate or protocol driver and a hardware device. A miniport driver handles the hardware-specific operations necessary to manage a network adapter or other hardware device.

Intermediate drivers are typically layered between miniport drivers and transport protocol drivers in the network protocol stack. Intermediate drivers are used to translate between different network media and balance packet transmission across more than one NIC. A load balancing driver exposes one virtual adapter to overlying transport protocols and distributes send packets across more than one NIC.

Filter drivers perform special operations (such as compression, encryption and tracing) on packets being transported through them.

A protocol driver, which is the highest driver in the NDIS hierarchy of drivers, is often used as the lowest-level driver in a transport driver that implements a transport protocol stack, such as a TCP/IP stack. At its lower edge, a protocol driver interfaces with intermediate network drivers and miniport drivers. At its upper edge, a transport protocol driver has a private interface to a higher-level driver in the protocol stack.

A network protocol, which is the highest driver in the NDIS hierarchy of drivers, is often used as the lowest-level driver in a transport driver that implements a transport protocol stack, such as a TCP/IP stack. A transport protocol driver allocates packets, copies data from the sending application into the packet, and sends the packets to the lower-level driver by calling NDIS functions. A protocol driver also provides a protocol interface to receive incoming packets from the next lower-level driver. A transport protocol driver transfers received data to the appropriate client application.

At its lower edge, a protocol driver interfaces with intermediate network drivers and miniport drivers.

A miniport adapter is an adapter instance of an NDIS miniport driver or intermediate driver.

A filter module is an instance of a filter driver.

A protocol binding is a binding instance of a protocol driver. A protocol binding binds an NDIS protocol driver to a miniport adapter.

network interface

To support the management information base (MIB), NDIS manages a collection of network interface information for the local computer. NDIS interface providers provide information about some network interfaces to NDIS. NDIS provides a proxy interface provider that registers interfaces and handles interface provider requests for miniport adapters and filter modules. Therefore, no NDIS drivers are required to be network interface providers.

However, all NDIS network driver types can register as interface providers. Such drivers register network interfaces and provide callback functions to respond to interface OID requests. NDIS interface providers typically provide information about interfaces that are not directly accessible to NDIS and are not supported by the NDIS proxy interface provider. For example, a MUX intermediate driver can have internal interfaces between its virtual miniports and underlying adapters.

For each network component that it installs, a network INF file must specify the upper and lower binding interfaces for the component by adding the Interfaces key to the Ndi key.

The Interfaces key has at least two values:

UpperRange A REG_SZ value that defines the interfaces to which the component can bind at its top edge.

LowerRange A REG_SZ value that defines the interfaces to which the component can bind at its lower edge. For physical adapters, this interface should always be the network media, such as Ethernet, to which the adapter connects.