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