6.1  Overview of NDISTAPI

The NDISTAPI defines how wan miniport NIC drivers implement telephonic services. It is closely related to the Service Provider Interface established in Windows Telephony, with telephony-capable NDIS miniport NIC drivers providing kernel-mode support for user-mode TAPI service providers. This document presents an overview of how a TAPI-capable WAN miniport initializes, brings up lines, sets up calls and closes calls using TAPI and WAN OIDs. This description touches briefly on the concepts embodied in Windows Telephony, but the reader should to consult the documentation published with the Telephony SDK for an in-depth discussion.

A TAPI-capable WAN miniport registers and initializes itself as a user of both WAN and TAPI services. When registration and initialization are complete, a user-level application can make telephonic requests to the user-mode KMDDSP service provider module which converts SPI requests to corresponding OIDs. The KMDDSP module passes the OIDs to the NDISTAPI driver, the kernel-mode component of TAPI. NDISTAPI routes the OIDs to the correct NIC driver in order to set up, monitor, and tear down lines, and calls. NDISTAPI passes the OIDs in NdisRequest calls to the NDISWAN intermediate driver. NDISWAN passes these NDIS requests on, resulting in a call to the MiniportQueryInformation function or the MiniportSetInformation function of a TAPI-capable miniport.

A TAPI-capable WAN miniport communicates changes in the states of lines and calls, for instance a change from the proceeding state to the connected state, the arrival of an incoming call, or a remote disconnection. State changes are communicated to upper-layers by passing appropriate NDIS_STATUS_TAPI_XXX and NDIS_STATUS_WAN_XXX status messages to NdisMIndicateStatus.

The relationship among these components is shown in the following diagram. The kernel-mode flow of communication is from NDISTAPI to NDISWAN, through NDIS to a TAPI-capable WAN miniport.