Architettura (API di telefonia)

La figura seguente illustra l'architettura generale dei provider di servizi di telefonia e le librerie di collegamento dinamico dell'interfaccia utente associate.

tsps e dll dell'interfaccia utente associate

Il provider di servizi è costituito da almeno due componenti. DLL del provider di servizi ,designata nell'illustrazione come MAIN. TSP) viene eseguito nel contesto del processo TAPISRV ed esegue tutte le attività del provider di servizi che non sono correlate agli elementi dell'interfaccia utente associati all'uso del dispositivo da parte di un'applicazione specifica (molto probabilmente, in combinazione con i componenti di livello inferiore non visualizzati nella figura). A differenza delle versioni precedenti di TAPI in cui il codice dell'interfaccia utente è stato integrato nel provider di servizi (ed eseguito, a causa dell'architettura precedente, all'interno del contesto dell'applicazione), il provider di servizi deve ora includere un componente separato che implementa gli elementi dell'interfaccia utente.

La DLL dell'interfaccia utente del provider di servizi deve esportare le funzioni chiamate da TAPI quando l'applicazione chiama le funzioni TAPI che generano l'interfaccia utente: TUISPI_lineConfigDialog, TUISPI_lineConfigDialogEdit, TUISPI_phoneConfigDialog, TUISPI_providerConfig, TUISPI_providerInstalle TUISPI_providerRemove. Ognuna di queste funzioni include come parametro un puntatore a una funzione di callback in TAPI, di tipo TUISPIDLLCALLBACK, che la DLL dell'interfaccia utente può usare per comunicare bidirezionalmente (sia inviare che ricevere dati) con la DLL del provider di servizi in esecuzione nel processo TAPISRV. Se il provider di servizi genera mai interfaccia utente spontanea, ad esempio la finestra di dialogo Unimodem Talk/Hangup, insieme a qualsiasi funzione TSPI per cui l'interfaccia utente non è prevista (ad esempio, qualsiasi funzione che non dispone di un parametro hwnd), la DLL dell'interfaccia utente deve esportare TUISPI_providerGenericDialog e TUISPI_providerGenericDialogData.

Nota

Le funzioni originali di generazione dell'interfaccia utente TSPI ( TSPI_lineConfigDialog, TSPI_lineConfigDialogEdit, TSPI_phoneConfigDialog, TSPI_providerConfig, TSPI_providerInstalle TSPI_providerRemove) sono obsolete e mai chiamate da TAPI. Di conseguenza, questi non devono essere esportati dalla DLL del provider di servizi. Tuttavia, se il provider di servizi vuole essere elencato come uno che può essere aggiunto dal Pannello di controllo di telefonia, un'utilità fornita con La telefonia Di Windows nelle versioni 1.4 e precedenti, deve esportare TSPI_providerInstall; se si desidera che il pulsante rimuovisia abilitato nel Pannello di controllo telefonia quando è selezionato, deve esportare TSPI_providerRemove; e se desidera che il pulsante di installazione di sia abilitato nel Pannello di controllo di telefonia quando è selezionato, deve esportare TSPI_providerConfig. Il Pannello di controllo della telefonia verifica la presenza di queste funzioni nel file TSP del provider di servizi per regolare l'interfaccia utente in modo da riflettere le operazioni che è possibile eseguire.

 

La DLL del provider di servizi deve esportare la funzione TSPI_providerUIIdentify utilizzata dal processo TAPISRV per ottenere il nome della DLL dell'interfaccia utente da caricare nel processo dell'applicazione. Deve esportare la funzione TSPI_providerGenericDialogData per ricevere e rispondere alle richieste dalla DLL dell'interfaccia utente per la visualizzazione dei dati e deve esportare TSPI_providerFreeDialogInstance per il processo TAPISRV per indicare al provider di servizi quando rilasciare un'associazione stabilita allo scopo di generare un'interfaccia utente spontanea in combinazione con una funzione non definita come presentazione dell'interfaccia utente all'utente. La DLL del provider di servizi può inviare i dati alla DLL dell'interfaccia utente usando il nuovo messaggio TSPI LINE_SENDDIALOGINSTANCEDATA.

Poiché i nomi delle funzioni TSPI e TUISPI sono definiti intenzionalmente in modo diverso, la DLL del provider di servizi e la DLL dell'interfaccia utente possono essere lo stesso file DLL, se necessario. Con la segmentazione corretta, questo non comporta necessariamente alcun utilizzo non necessario della memoria nel contesto dell'applicazione e può semplificare il processo di installazione per i provider di servizi che attualmente possono essere implementati in una singola DLL. TAPI chiama solo le funzioni appropriate per il contesto in cui viene usata la DLL.

Il provider di servizi di telefonia e la DLL dell'interfaccia utente devono entrambi essere progettati tenendo presente che le funzioni dell'interfaccia utente possono essere richiamate contemporaneamente da più processi dell'applicazione. Devono inoltre considerare che l'applicazione e il servizio TAPI in cui è in esecuzione il provider di servizi di telefonia possono essere in computer separati in una LAN.