For new Wide Area Network (WAN) drivers created for devices that will work with Microsoft Windows XP and later versions of the Windows operating system, Microsoft recommends the CoNDIS WAN model over the NDIS WAN model. This article summarizes the driver model choices and provides information to help driver developers choose the appropriate driver implementation.
There are many existing NDIS WAN implementations, and some of them support hardware that is or soon will be obsolete. Microsoft will continue to support NDIS WAN miniport drivers. Independent hardware vendors (IHVs) are not required to write CoNDIS drivers for existing hardware.
This article assumes that the reader has a basic understanding of the Remote Access Service (RAS) architecture as described in the "WAN Miniport Drivers" topic in the current Windows Driver Developer Kit (DDK).
| NDIS WAN and CoNDIS WAN Driver Implementations | |
| Advantages of CoNDIS WAN Drivers | |
| Call to Action |
This section describes the differences between NDIS WAN and CoNDIS WAN driver implementations. An NDIS WAN driver is a miniport driver. A CoNDIS WAN driver can be either a miniport call manager (MCM) driver or a miniport driver that is combined with a separate call manager driver.
The following describes the fundamental differences between NDIS WAN drivers and CoNDIS WAN drivers.
The version numbers specified in the NDIS_MINIPORT_CHARACTERISTICS structure that is passed to NdisMRegisterMiniport differ for NDIS WAN and CoNDIS WAN miniport drivers:
| • | NDIS WAN miniport drivers use version 3.0 to 4.0. |
| • | CoNDIS WAN miniport drivers use 5.0 or later. |
Register NDIS WAN drivers and CoNDIS WAN miniport drivers or MCM drivers as miniport drivers. However, if there is a separate call manager, register the call manager as a protocol.
The medium type indicated by the SelectedMediumIndex parameter that the miniport driver sets in MiniportInitialize is different. In addition, a CoNDIS MCM driver or call manager must register an address family.
| • | NDIS WAN miniport drivers implement signaling with TAPI OIDs. |
| • | CoNDIS model implements signaling with a call manager or MCM. |
| • | In an NDIS WAN environment, an application must set up a connection by making or accepting a call. After the connection is established, links are used to route data. |
| • | In a CoNDIS environment, a virtual connection (VC) is created to establish the connection and route data. |
Different function calls are used to implement the following operations:
Sending data
Receiving data
Setting miniport driver or network adapter state
Querying miniport driver or network adapter information
Indicating miniport driver or network adapter status
| • | NDIS WAN miniport drivers keep a WAN-specific set of statistics, and OID_WAN_GET_STATS_INFO is used to request the miniport driver to return statistics information. |
| • | CoNDIS WAN miniport drivers are expected to keep a set of statistics for each VC on the miniport driver's network adapter. The OID_WAN_CO_GET_STATS_INFO OID is used to request that the miniport driver return this statistics information. |
| • | NDIS WAN miniport drivers use NDIS_WAN_PACKET descriptors. |
| • | CoNDIS WAN miniport drivers use an NDIS_PACKET descriptors. |
Some functions use different parameter values for NDIS WAN and CoNDIS WAN miniport drivers. For example,
NdisMRegisterMiniport is used to register both NDIS WAN and CoNDIS WAN miniport drivers, but each driver type registers different MiniportXxx functions.
| • | NDIS WAN drivers are associated with WAN OIDs prefixed by OID_WAN_. |
| • | CoNDIS drivers are associated with WAN OIDs prefixed by OID_WAN_CO_. |
Exceptions: These OIDs are used by both NDIS WAN and CoNDIS WAN drivers:
OID_WAN_PERMANENT_ADDRESS
OID_WAN_CURRENT_ADDRESS
OID_WAN_MEDIUM_SUBTYPE
| • | NDIS WAN miniport drivers have TAPI provider APIs that are directly mapped to TAPI OIDs. NDIS WAN drivers are associated with TAPI OIDs prefixed by OID_TAPI_. |
| • | CoNDIS WAN miniport drivers have TAPI complexity handled by NDPROXY. The CoNDIS model requires fewer TAPI OIDs. CoNDIS drivers are associated with TAPI OIDs prefixed by OID_CO_TAPI_. |
| • | CoNDIS WAN is supported on Windows 2000, Windows XP, Windows Server 2003, and later editions of this family of operating systems. |
| • | CoNDIS is supported on Windows 98/Me and Windows XP, and on Windows NT SP3 and later, Windows 2000, Windows Server 2003, and later editions of this family of operating systems. |
| • | NDIS WAN is supported on Windows 98/Me and Windows XP, and on Windows NT SP3 and later, Windows 2000, and Windows Server 2003. |
NdProxy is the NdisTapi CoNDIS client, and is required for CoNDIS WAN drivers. CoNDIS drivers will work on Windows Me and earlier versions, but there is no native support for the WAN version of a CoNDIS driver because there is no version of NdProxy for these earlier client operating systems.
This section describes the advantages of implementing CoNDIS WAN drivers.
CoNDIS provides a component-based architecture. The CoNDIS model provides the flexibility of four types of drivers:
| • | Connection-oriented client drivers |
| • | Call manager drivers |
| • | Connection-oriented miniport drivers |
| • | Integrated MCM drivers |
The separation of architectural components remains clearly defined in an MCM. The call manager (or call manager component if there is an MCM) handles the signaling aspects of connections, and the CoNDIS WAN miniport driver handles the network adapter hardware.
You do not need to write a call manager if one is provided with Windows.
The separation of call manager and miniport components allows the miniport driver to be updated to support new hardware while the call manager remains unchanged. In many cases, the call manager might only require upgrades to correct defects.
The WAN services that Windows includes are based on RAS. Windows includes a Point to Point Protocol (PPP) CoNDIS client, and CoNDIS WAN miniport drivers are available for many devices. You can write CoNDIS WAN clients to extend the system to support other protocols.
The CoNDIS WAN model is not restricted to PPP data. You can implement a custom WAN client driver and miniport driver to handle, for example, raw data streaming or proprietary encryption. The custom CoNDIS WAN client and miniport drivers share the same address family.
The separation of the call manager and miniport functions in the CoNDIS WAN model enables the implementation of two simple drivers. The simplified drivers should be easier to maintain and debug than one large and complex driver.
CoNDIS implements a well-organized model for WAN connections. There are NDIS objects that correspond to each of the logical entities involved in a connection. These entities include address families, virtual connections, service access points, and parties.
NDPROXY handles many of the complex requirements of TAPI. A CoNDIS miniport driver is not required to handle as many TAPI OIDs as an NDIS miniport driver. In addition, the CoNDIS WAN miniport is not required to handle the following status indications: NDIS_STATUS_TAPI_INDICATION, NDIS_STATUS_WAN_LINE_UP, and NDIS_STATUS_WAN_LINE_DOWN.
In addition to flexibility and simplicity, CoNDIS WAN provides the following benefits:
| • | Ability to implement multipacket send and receive functionality in the miniport driver. |
| • | Ability to defer processing in the miniport driver. When a CoNDIS miniport driver calls NdisMCoIndicateReceivePacket, protocols can defer processing to a later time on receives (by returning NDIS_STATUS_PENDING from ProtocolCoReceivePacket). When an NDIS WAN miniport driver calls NdisMWanIndicateReceive, protocols have to copy the data immediately. |
| • | Support for multipoint calls. |
| • | Support for Quality of Service (QoS). CoNDIS WAN uses the NDIS_PACKET packet descriptor. In comparison, NDIS WAN uses the NDIS_WAN_PACKET packet descriptor, which does not contain any QoS information. |
| • | Easy debugging of miniport drivers, because the call manager and miniport driver are separate. |
You can use these NDIS features in CoNDIS WAN drivers, but they are not available to NDIS WAN miniport drivers:
| • | Plug and Play event notification for miniport drivers |
| • | 64-bit statistical counters |
| • | Canceling send packets |
| • | Registering a MiniportShutdown function |
| • | New miniport driver attributes |
| • | Safe functions |
Implementing CoNIDS WAN miniport drivers will also allow you to take advantage of future NDIS enhancements that support WAN miniports.
| • | Where appropriate, write CoNDIS miniport drivers for WAN devices that are designed to work with Windows. For implementation details, see "WAN Miniport Drivers" in the Windows DDK. |
| • | For more information about networking technologies, see Networking and Wireless Technologies. |