Phone SPI Initialization

As part of the phone device abstraction defined by TSPI, tapi32.dll and the service provider must first undergo basic initialization. This basic initialization is accomplished both for the line and phone halves of the interface by the same set of steps. The first of these steps is interface version negotiation. The tapi32.dll performs this by calling the TSPI_lineNegotiateTSPIVersion function. This function is usually used to negotiate on behalf of an individual line device; different line devices within the same service provider may operate according to different interface versions. The tapi32.dll passes a special reserved device identifier value, INITIALIZE_NEGOTIATION, to indicate that it is negotiating an overall interface version for initialization functions that affect the entire service provider, both for lines and phones.

The result of this negotiation is passed to subsequent procedures until a phone device is opened. At that time, the phone device becomes committed to a particular interface version. This interface version is implicit until the phone is closed, and does not need to be passed to subsequent functions that operate on an opened phone.

Following overall interface version negotiation, tapi32.dll calls the TSPI_providerInit function. This function initializes the service provider, also giving it parameters required for subsequent operation. These parameters include the following:

Following TSPI_providerInit, normal operations such as opening phones can be carried out.