Line Initialization

As part of the line device abstraction defined by TSPI, tapi32.dll and the service provider must first perform some basic initialization. The first step 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 can operate under 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.

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

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

Following TSPI_providerInit, normal operations such as opening lines can be performed.