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).