1.7 Versioning and Capability Negotiation

This specification covers versioning issues in the following areas.

Supported Transports:

  • The Telephony Remote Protocol uses RPC over named pipes only on the tapsrv interface.

  • The server uses a mailslot mechanism with connection-less clients.

  • The server uses the RPC protocol and endpoint that is specified by connection-oriented clients.

Security and Authentication Methods: The Telephony Remote Protocol depends on the RPC protocol for security and authentication. The client supports RPC_C_AUTHN_GSS_NEGOTIATE for the authentication service on both the tapsrv and remotesp interfaces. The server can reject RPC communications on the tapsrv interface if the authentication level is not set to RPC_C_AUTHN_LEVEL_PKT_PRIVACY by the client. In this case, the protocol cannot be used by the client to control telephony devices on the server. The client can reject RPC communications on the remotesp interface if the authentication level is not set to RPC_C_AUTHN_LEVEL_PKT_PRIVACY by the server. In this case, the protocol cannot be used by a connection-oriented client to control telephony devices on the server.

Localization: The Telephony Remote Protocol does not contain locale-specific information.

Protocol Versions: The Telephony Remote Protocol has only one interface version. However, the underlying TAPI operations supported by the protocol can correspond to any of the multiple versions of TAPI. This difference is handled in the protocol by allowing additional values for the constants that are passed in the RPC packets between the client and server. The use of these methods is specified in section 3.1. The constants specified in section 2 include details on the TAPI versions for which they are valid. The client and server determine the TAPI version as described in the following sections:

The client queries the line device capabilities by sending the line GetDevCaps packet.

The client determines the address capabilities by sending the GetAddressCaps packet to the server.

The client determines the phone device capabilities by sending the phone GetDevCaps packet.

TAPI versions are specified in terms of DWORDs, where the higher word represents the major version and the lower word represents the minor version, shown as follows:<3>

  • 0x00010004 = TAPI version 1.4

  • 0x00020000 = TAPI version 2.0

  • 0x00020001 = TAPI version 2.1

  • 0x00020002 = TAPI version 2.2

    For more information, see [MSDN-TAPI2.2].

  • 0x00030000 = TAPI version 3.0

  • 0x00030001 = TAPI version 3.1

    For more information, see [MSDN-TAPI3.1].