Packets the network card driver receives are passed upward through the stack by the Network Driver Interface Specification (NDIS). NDIS defines a standard interface between hardware drivers for devices such as network cards and the Windows network subsystem. Windows uses NDIS to communicate with these devices. For example, network cards communicate received packets upward to the Transmission Control Protocol/Internet Protocol (TCP/IP) stack through NDIS, and the TCP/IP stack sends packets out to the network by communicating with network card drivers through NDIS. NDIS is the upper boundary for the components that implement Open Systems Interconnection (OSI)–model link-layer functionality in the protocol stack.
NDIS and the Low-Level Network Programmer
NDIS is relevant to the network application programmer because the version in use determines the capabilities and performance available at the network's link layer. For example, the Wake-on-LAN feature that allows a computer to sleep until network activity is detected, or the ability to query the network card for statistical information through the Windows Management Interface (WMI), might be important to an application — and these features are available only in drivers that comply with the most recent versions of NDIS.
Note The version of NDIS available to the programmer is determined by a combination of the version of Windows being used and the NDIS level of the driver supplied by the network interface card (NIC) manufacturer.
The following section lists the features supported by recent versions of NDIS.
NDIS 3.1 Through 5.1
NDIS 3.1 supports basic services that allow a protocol module to send raw packets over a network device and allow that same module to be notified of incoming packets received by a network device. NDIS 4.0 adds the following new features to NDIS 3.1:
- Out-of-band data support.
- Wireless wide area network (WAN) Media Extension.
- High-speed packet sending and receiving.
- Fast Infrared Data Association (IrDA) Media Extension.
- All-local packet filter (prevents Network Monitor from monopolizing the CPU).
- NDIS system functions required for miniport binary compatibility across Windows 98, Windows Me, Windows NT 4.0, Windows 2000, Windows XP, and Windows Server 2003.
NDIS 5.0, introduced in Windows 2000, includes all functionality defined in NDIS 4.0, plus the following extensions:
- NDIS power management (required for Network Power Management and Network Wake-up).
- Plug and Play.
- Support for Windows Management Instrumentation (WMI), which provides Web-based Enterprise Management (WBEM)–compatible instrumentation of NDIS miniports and their associated adapters.
- Support for a single information (INF) format across Windows operating systems. The INF format is based on the Windows 98 INF format.
- A deserialized miniport for improved performance.
- Task offload mechanisms such as TCP and User Datagram Protocol (UDP) checksum and Fast Packet Forwarding.
- TCP segmentation offload, also known as large-send offload (LSO).
- Broadcast Media Extension (required for Broadcast Services for Windows).
- Connection-oriented NDIS (required to support Asynchronous Transfer Mode (ATM), Asymmetric Digital Subscriber Line (ADSL), and Windows Driver Model–Connection Streaming Architecture, or WDM-CSA).
- Support for Quality of Service (QoS).
- Intermediate driver support (required for Broadcast PC, Virtual LANs, Packet Scheduling for QoS, and NDIS support of IEEE 1394 network devices).
NDIS 5.1 enhancements for Windows Server 2003 and Windows XP include the following:
- Plug and Play and Power Event Notification, which enables NIC miniport drivers to be notified of power or Plug and Play events. This results in cleaner system operation during these events.
- Support for Send Cancellation, which allows network protocols to avoid having to wait long periods of time for network packet send requests to complete.
- Increased Statistics Capacity (64-bit statistic counters), which enables accurate network statistic displays on high-speed network media.
- Several performance enhancements that speed up critical network data paths and avoid unnecessary packet copies.
- A change to Wake-on-LAN that allows limitation of wake-up packets to magic packets only, instead of protocol-registered packet patterns. (A magic packet is a packet that contains 16 contiguous copies of the receiving NIC's Ethernet address.) This functionality is now configurable on the Power Management tab from the properties of a NIC driver.
For more information on NDIS 5.1, see NDIS 5.1 Support and Windows and Remote NDIS (RNDIS) and Windows on Windows Hardware and Driver Central. For more information about Remote NDIS, see http://go.microsoft.com/?linkid=3497242 on Microsoft Developer Network (MSDN).