Using the Network Driver Design Guide (NDIS 5.1)
Note NDIS 5. x has been deprecated and is superseded by NDIS 6. x. For new NDIS driver development, see Network Drivers Starting with Windows Vista. For information about porting NDIS 5. x drivers to NDIS 6. x, see Porting NDIS 5.x Drivers to NDIS 6.0.
Windows-based operating systems support several types of kernel-mode network drivers. The network drivers documentation describes how to write these drivers. This topic briefly describes the supported network driver types and explains which sections of this guide you should read before writing each type of network driver.
Microsoft Windows 2000 and later versions of the operating system support four types of kernel-mode network drivers:
Miniport drivers
A miniport driver directly manages a network interface card (NIC) and provides an interface to higher-level drivers.
Intermediate drivers
An intermediate driver interfaces between upper-level protocol drivers, such as a legacy transport driver, and a miniport driver. A typical reason to develop an intermediate protocol driver is to perform media translation between an existing legacy transport driver and a miniport driver that manages a NIC for a new media type unknown to the transport driver.
Protocol drivers
An upper-level protocol driver implements a TDI interface, or possibly an application-specific interface, at its upper edge to provide services to users of the network. At its lower edge, a protocol driver provides a protocol interface to pass packets to and receive incoming packets from the next-lower driver.
Another type of protocol driver is a connection-oriented call manager. A call manager provides call setup and tear-down services for connection-oriented clients, which are also protocol drivers.
Filter-hook driver
A filter-hook driver is used to filter packets. This driver extends the functionality of the IP filter driver, which is supplied with the operating system.
For general information about Windows network architecture and programming considerations, see Network Architecture for Kernel-Mode Driversand Network Driver Programming Considerations. For information about network INF files, which are used to install network components, see Installing Network Components. If your network driver requires a notify object--for example, to control bindings--see also Notify Objects for Network Components.
To find out which additional sections to read for a particular driver type, see the following sections.
Note The TDI feature is deprecated and will be removed in future versions of Microsoft Windows. Depending on how you use TDI, use either the Winsock Kernel (WSK) or Windows Filtering Platform (WFP). For more information about WFP and WSK, see Windows Filtering Platform and Winsock Kernel. For a Windows Core Networking blog entry about WSK and TDI, see Introduction to Winsock Kernel (WSK).
Miniport Drivers (NDIS 5.1)
There are several types of miniport drivers. Read the sections that are recommended for the type of driver you are writing:
**** To learn about connectionless miniport drivers
If you are writing a miniport driver that controls a NIC for connectionless network media, such as Ethernet, FDDI, or Token Ring; read:Introduction to NDIS Miniport Drivers
Overview of Miniport Driver Operations and Functions
Miniport Driver DriverEntry Function and Initialization
Obtaining and Setting Miniport Driver Information and NDIS Support for WMI
Plug and Play for NDIS Miniport Drivers
To learn about connection-oriented miniport drivers
If you are writing a miniport driver that controls a NIC for connection-oriented network media, such as ATM or ISDN, read:All the sections listed for connectionless miniport drivers
To learn about WAN miniport drivers
If you are writing a miniport driver that controls a WAN NIC, read:All the sections listed for connectionless miniport drivers
To learn about integrated miniport driver call managers (MCM)
If you are writing a miniport driver that controls a connection-oriented NIC and that also provides call manager services, read:All the sections listed for connectionless miniport drivers
To learn about miniports with a WDM lower interface
If you are writing a miniport driver that has a WDM lower interface read:All the sections listed for connectionless miniport drivers
To learn about IrDA miniport drivers
If you are writing a miniport driver that controls an IrDA adapter, read:All the sections listed for connectionless miniport drivers
To learn about additional miniport capabilities
To learn about additional miniport capabilities, read:
Intermediate Drivers (NDIS 5.1)
You can write an intermediate driver that has either a connectionless or a connection-oriented lower edge. Read the sections that are recommended for the type of driver you are writing:
To learn about intermediate drivers that have a connectionless lower edge
If you are writing an intermediate driver whose lower edge provides an interface to connectionless miniport drivers, read:To learn about intermediate drivers that have a connection-oriented lower edge
If you are writing an intermediate driver whose lower edge provides an interface to connection-oriented miniport drivers, read:
Protocol Drivers (NDIS 5.1)
You can write a protocol driver that has either a connectionless or a connection-oriented lower edge. In addition, your protocol driver can expose a transport driver interface (TDI) at its upper edge and can also provide Winsock support. Read the sections that are recommended for the type of driver you are writing:
To learn about protocol drivers that have a connectionless lower edge
If you are writing a protocol driver whose lower edge provides an interface to connectionless miniport drivers, read:
To learn about protocol drivers that are connection-oriented clients, or that are connection-oriented providers of call manager services
If you are writing a connection-oriented client, which provides an interface to connection-oriented miniport drivers, or if you will be writing a connection-oriented call manager, read:
To learn about protocol drivers that have a TDI upper edge
If you are writing a protocol that has a TDI upper edge, read:
TDI Transports and Their Clients
TDI Routines, Macros, and Callbacks
To learn about protocol drivers that have Winsock support
If you are writing a protocol that provides Winsock support, read:
Transport Helper DLLs for Windows Sockets
Note The TDI feature is deprecated and will be removed in future versions of Microsoft Windows. Depending on how you use TDI, use either the Winsock Kernel (WSK) or Windows Filtering Platform (WFP). For more information about WFP and WSK, see Windows Filtering Platform and Winsock Kernel. For a Windows Core Networking blog entry about WSK and TDI, see Introduction to Winsock Kernel (WSK).
Filter-Hook Drivers (NDIS 5.1)
To learn about filter hook drivers, read the following section: