Network Driver Interface Specification

Applies To: Windows Server 2008 R2

A Network Driver Interface Specification (NDIS) miniport driver has two basic functions:

  • Managing a network adapter, including sending and receiving data through the adapter.
  • Interfacing with higher-level drivers, such as intermediate drivers and transport protocol drivers.

A miniport driver communicates with its network adapter and with higher-level drivers by using the NDIS library, which abstracts the network hardware from network drivers. NDIS also specifies a standard interface between layered network drivers, abstracting lower-level drivers that manage hardware from upper-level drivers, such as network transports. NDIS also maintains state information and parameters for network drivers.

Managed Entities

The following is a list of the managed entities that are included in this managed entity:

Name Description

Miniport Driver

Network Driver Interface Specification (NDIS) supports miniport drivers for both connection-oriented environments and connectionless environments.

Connection-oriented miniport drivers control network adapters for connection-oriented network media, such as Asynchronous Transfer Mode (ATM) and Integrated Services Digital Network (ISDN). Connection-oriented miniport drivers are always deserialized — they always serialize the operation of their own MiniportXxx functions and queue internally all incoming send packets.

Connectionless miniport drivers control network adapters for connectionless network media, such as Ethernet, Fiber Distributed Data Interface (FDDI), and Token Ring.

Connectionless miniport drivers can be serialized or deserialized:

  • Serialized drivers rely on NDIS to serialize calls to their MiniportXxx functions and to manage their send queues.
  • Deserialized drivers serialize the operation of their own MiniportXxx functions and internally queue all incoming send packets. This results in significantly better full-duplex performance, provided that the driver's critical sections (code that only a single thread at a time can execute) are kept small.