Network Driver Interface Specification
The Network Driver Interface Specification is an application programming interface for network interface controllers.
Specification
It was jointly developed by Microsoft and 3Com Corporation and is mostly used in Microsoft Windows. However, the open-source NDISwrapper and Project Evil driver wrapper projects allow many NDIS-compliant NICs to be used with Linux, FreeBSD and NetBSD. magnussoft ZETA, a derivative of BeOS, supports a number of NDIS drivers.The NDIS forms the logical link control sublayer, which is the upper sublayer of the OSI data link layer. Therefore, the NDIS acts as the interface between the media access control sublayer, which is the lower sublayer of the data link layer, and the network layer.
The NDIS is a library of functions often referred to as a "wrapper" that hides the underlying complexity of the NIC hardware and serves as a standard interface for level 3 network protocol drivers and hardware level MAC drivers.
The NDIS versions supported by various Windows versions are as follows:
- NDIS 2.0: MS-DOS, Windows for Workgroups 3.1, OS/2
- NDIS 3.0: Windows for Workgroups 3.11, Windows NT 3.5
- NDIS 3.1: Windows 95
- NDIS 4.0: Windows 95 OSR2, NT 4.0, Windows CE 3.0
- NDIS 4.1: Windows 98
- NDIS 5.0: Windows 98 SE, Me, 2000
- NDIS 5.1: Windows XP, Server 2003, Windows CE 4.x, 5.0, 6.0
- NDIS 5.2: Windows Server 2003 SP2
- NDIS 6.0: Windows Vista
- NDIS 6.1: Windows Vista SP1, Server 2008, Windows Embedded Compact 7, Windows Embedded Compact 2013
- NDIS 6.20: Windows 7, Server 2008 R2
- NDIS 6.30: Windows 8, Windows Server 2012
- NDIS 6.40: Windows 8.1, Windows Server 2012 R2
- NDIS 6.50: Windows 10, version 1507
- NDIS 6.51: Windows 10, version 1511
- NDIS 6.60: Windows 10, version 1607 and Windows Server 2016
- NDIS 6.70: Windows 10, version 1703
- NDIS 6.80: Windows 10, version 1709
- NDIS 6.81: Windows 10, version 1803
- NDIS 6.82: Windows 10, version 1809 and Windows Server 2019
- NDIS 6.83: Windows 10, version 1903 and Windows Server 2022
- NDIS 6.84: Windows 10, version 2004
- NDIS 6.85: Windows 10, version 21H2
- NDIS 6.86: Windows 11, version 21H2
- NDIS 6.87: Windows 11, version 22H2
- NDIS 6.88: Windows Server 2022, version 23H2
- NDIS 6.89: Windows 11, version 24H2
Another driver type is NDIS Intermediate Driver. Intermediate drivers sit in-between the MAC and IP layers and can control all traffic being accepted by the NIC. In practice, intermediate drivers implement both miniport and protocol interfaces. The miniport driver and protocol driver actually communicate with the corresponding miniport and protocol interfaces that reside in the intermediate driver. This design enables adding several chained intermediate drivers between the miniport and protocol drivers. Therefore, driver vendors cannot assume that the interface that they send traffic to is implemented by the last driver in the chain. In order to write applications using NDIS, one can use samples that accompany Microsoft's Windows Driver Kit. The "PassThru" sample is a good starting point for intermediate drivers as it implements all the necessary details required in this driver type, but just passes the traffic through to the next driver in the chain.
NDIS 4.1 has implemented WDM features. NDIS 5.0 has implemented TCP/IP offload features.
Since Windows 10 version 2004, a new driver framework for network adapters was created called Network Adapter WDF Class Extension which is meant to simplify the driver development process.