Inicialización de SPI de teléfono

Como parte de la abstracción de dispositivos telefónicos definida por TSPI, TAPI y el proveedor de servicios deben someterse primero a la inicialización básica. Esta inicialización básica se logra tanto para la línea como para las mitades telefónicas de la interfaz mediante el mismo conjunto de pasos. El primero de estos pasos es la negociación de la versión de interfaz. TAPI lo realiza llamando a la función TSPI_lineNegotiateTSPIVersion. Esta función se usa normalmente para negociar en nombre de un dispositivo de línea individual; diferentes dispositivos de línea dentro del mismo proveedor de servicios pueden funcionar según diferentes versiones de interfaz. TAPI pasa un valor de identificador de dispositivo reservado especial, INITIALIZE_NEGOTIATION, para indicar que está negociando una versión general de interfaz para las funciones de inicialización que afectan a todo el proveedor de servicios, tanto para líneas como teléfonos.

El resultado de esta negociación se pasa a procedimientos posteriores hasta que se abre un dispositivo telefónico. En ese momento, el dispositivo telefónico se confirma en una versión de interfaz determinada. Esta versión de interfaz es implícita hasta que se cierra el teléfono y no es necesario pasar a funciones posteriores que operan en un teléfono abierto.

Después de la negociación general de la versión de la interfaz, TAPI llama a la función TSPI_providerInit. Esta función inicializa el proveedor de servicios, lo que también le proporciona los parámetros necesarios para la operación posterior. Estos parámetros incluyen lo siguiente:

  • dwPermanentProviderID: especifica el identificador permanente del proveedor de servicios que se está inicializando, único dentro de los proveedores de servicios de este sistema.
  • dwLineDeviceIDBase: especifica el identificador de dispositivo más bajo para los dispositivos de línea admitidos por este proveedor de servicios.
  • dwPhoneDeviceIDBase: especifica el identificador de dispositivo más bajo para los dispositivos telefónicos compatibles con este proveedor de servicios. Los dispositivos de la clase de dispositivo telefónico telefónico se identifican por enteros a partir de cero. Este intervalo de identificadores es contiguo en toda la gama de dispositivos telefónicos. Dado que puede haber varios proveedores de servicios que administran dispositivos telefónicos en un único sistema, cada proveedor de servicios obtiene una parte contigua del intervalo total. Este parámetro indica al proveedor de servicios el valor más bajo en su parte del intervalo. El proveedor de servicios, en lugar de TAPI, es responsable de asignar este intervalo de variables a sus propios identificadores de dispositivo internos. Esto proporciona al proveedor de servicios flexibilidad suficiente para usar identificadores de dispositivo en extensiones específicas del dispositivo si lo desea. Dado que el proveedor de servicios sabe qué identificadores de dispositivo aparecen en los parámetros y estructuras de datos definidos por TAPI, puede usar identificadores de dispositivo coherentes en parámetros de extensión y estructuras de datos específicos del dispositivo.
  • dwNumLines: especifica cuántos dispositivos de línea admite este proveedor de servicios.
  • dwNumPhones: especifica cuántos dispositivos telefónicos admite este proveedor de servicios.
  • lpfnCompletionProc: especifica el procedimiento al que llama el proveedor de servicios para notificar la finalización de todos los procedimientos operativos asincrónicos en dispositivos de línea y teléfono.

Después de TSPI_providerInit, se pueden realizar operaciones normales como abrir teléfonos.