6.14  The NDISTAPI Interface

The following is a summary of the OID requests that define the interface between the NDISTAPI driver, NDISWAN and underlying WAN NIC miniport drivers. Each of these operations has a corresponding SPI function defined in the Telephony Software Development Kit, documented in the Win32 SDK.

WAN miniport developers should consult the SPI specifications when designing and implementing drivers. Note that function definitions and parameters might differ slightly between the NDISTAPI specification and the SPI specification, in which case the developer should adhere to the NDISTAPI driver Interface specification.

OID Optional or Required
OID_TAPI_ACCEPT Optional
OID_TAPI_ANSWER Required
OID_TAPI_CLOSE Required
OID_TAPI_CLOSE_CALL Required
OID_TAPI_CONDITIONAL_MEDIA_DETECTION Required
OID_TAPI_CONFIG_DIALOG Optional
OID_TAPI_DEV_SPECIFIC Optional
OID_TAPI_DIAL Optional
OID_TAPI_DROP Required
OID_TAPI_GET_ADDRESS_CAPS Required
OID_TAPI_GET_ADDRESS_ID Required
OID_TAPI_GET_ADDRESS_STATUS Required
OID_TAPI_GET_CALL_ADDRESS_ID Required
OID_TAPI_GET_CALL_INFO Required
OID_TAPI_GET_CALL_STATUS Required
OID_TAPI_GET_DEV_CAPS Required
OID_TAPI_GET_DEV_CONFIG Optional
OID_TAPI_GET_EXTENSION_ID Optional
OID_TAPI_GET_ID Required
OID_TAPI_GET_LINE_DEV_STATUS Required
OID_TAPI_MAKE_CALL Required
OID_TAPI_NEGOTIATE_EXT_VERSION Optional
OID_TAPI_OPEN Required
OID_TAPI_PROVIDER_INITIALIZE Required
OID_TAPI_PROVIDER_SHUTDOWN Required
OID_TAPI_SECURE_CALL Optional
OID_TAPI_SELECT_EXT_VERSION Optional
OID_TAPI_SEND_USER_USER_INFO Optional
OID_TAPI_SET_APP_SPECIFIC Required
OID_TAPI_SET_CALL_PARAMS Required
OID_TAPI_SET_DEFAULT_MEDIA_DETECTION Required
OID_TAPI_SET_DEV_CONFIG Optional
OID_TAPI_SET_MEDIA_MODE Required
OID_TAPI_SET_STATUS_MESSAGES Required

Definitions for these OIDs are found in ntddndis.h. Definitions for NDIS_TAPI_EVENT messages are found in ndistapi.h.

The extent to which a given WAN NIC driver supports this interface depends in large part on the discretion of the miniport developer and the capabilities of the underlying hardware. The functional requirements are quite simple for several of the requests; for example, the OID_TAPI_SET_APP_SPECIFIC request only requires the driver to associate a ULONG value with a specified call instance, which can be retrieved later through an OID_TAPI_GET_CALL_INFO request.

Requests that the NIC driver developer chooses not to support should be completed with the NDIS_STATUS_TAPI_OPERATIONUNAVAIL status code. The NIC driver can indicate what types of requests it supports (which can vary over time depending on line, address, or call state) by setting or clearing specific bits in the members of structures present in some of the OID_TAPI_GET_XXX requests (for example, the ulAddrCapFlags member in the LINE_ADDRESS_CAPS structure).