Architektur (Telefonie-API)

Die folgende Abbildung zeigt die allgemeine Architektur von Telefoniedienstanbietern und den zugehörigen Benutzeroberflächenbibliotheken mit dynamischen Verknüpfungen (UI-DLLs).

tsps und zugeordnete UI-DLLs

Der Dienstanbieter besteht aus mindestens zwei Komponenten. Die Dienstanbieter-DLL (in der Abbildung als MAIN festgelegt. TSP) wird im Kontext des TAPISRV-Prozesses ausgeführt und führt alle Aufgaben des Dienstanbieters aus, die sich nicht auf Benutzeroberflächenelemente beziehen, die mit der Verwendung des Geräts durch eine bestimmte Anwendung verbunden sind (höchstwahrscheinlich in Verbindung mit Komponenten niedrigerer Ebene, die nicht in der Abbildung dargestellt sind). Im Gegensatz zu früheren Versionen von TAPI, in denen der Benutzeroberflächencode in den Dienstanbieter integriert wurde (und aufgrund der vorherigen Architektur im Kontext der Anwendung ausgeführt wurde), muss der Dienstanbieter jetzt eine separate Komponente enthalten, die die Benutzeroberflächenelemente implementiert.

Die Dienstanbieter-UI-DLL muss Funktionen exportieren, die von TAPI aufgerufen werden, wenn die Anwendung TAPI-Funktionen aufruft, die UI generieren: TUISPI_lineConfigDialog, TUISPI_lineConfigDialogEdit, TUISPI_phoneConfigDialog, TUISPI_providerConfig, TUISPI_providerInstall und TUISPI_providerRemove. Jede dieser Funktionen enthält als Parameter einen Zeiger auf eine Rückruffunktion in TAPI vom Typ TUISPIDLLCALLBACK, den die UI-DLL verwenden kann, um bidirektional (sowohl Senden als auch Empfangen von Daten) mit der Dienstanbieter-DLL zu kommunizieren, die im TAPISRV-Prozess ausgeführt wird. Wenn der Dienstanbieter jemals spontane Ui generiert, z. B. das Dialogfeld Unimodem Talk/Hangup , in Verbindung mit einer TSPI-Funktion, für die keine Benutzeroberfläche erwartet wird (z. B. eine Funktion ohne hwnd-Parameter ), muss die UI-DLL TUISPI_providerGenericDialog und TUISPI_providerGenericDialogData exportieren.

Hinweis

Die ursprünglichen TSPI-Benutzeroberflächen generierenden Funktionen ( TSPI_lineConfigDialog, TSPI_lineConfigDialogEdit, TSPI_phoneConfigDialog, TSPI_providerConfig, TSPI_providerInstall und TSPI_providerRemove) sind veraltet und werden von TAPI nie aufgerufen. Daher müssen diese nicht von der Dienstanbieter-DLL exportiert werden. Wenn der Dienstanbieter jedoch als einer aufgeführt werden möchte, der vom Telefonie-Systemsteuerung hinzugefügt werden kann, einem Hilfsprogramm, das mit Windows-Telefonie in Den Versionen 1.4 und früher bereitgestellt wurde, muss er TSPI_providerInstall exportieren. Wenn die Schaltfläche Entfernen im Systemsteuerung Telefonie aktiviert sein soll, wenn es ausgewählt ist, muss er TSPI_providerRemove exportieren. Die Schaltfläche "Setup" soll in der Telefonie-Systemsteuerung wenn sie ausgewählt ist, muss sie TSPI_providerConfig exportieren. Der Telefonie-Systemsteuerung überprüft, ob diese Funktionen in der TSP-Datei des Dienstanbieters vorhanden sind, um die Benutzeroberfläche entsprechend anzupassen, welche Vorgänge ausgeführt werden können.

 

Die Dienstanbieter-DLL muss die TSPI_providerUIIdentify Funktion exportieren, die der TAPISRV-Prozess verwendet, um den Namen der UI-DLL abzurufen, die in den Anwendungsprozess geladen werden soll. Es muss die TSPI_providerGenericDialogData-Funktion exportieren, um Anforderungen von der UI-DLL zu empfangen und darauf zu reagieren, damit Daten angezeigt werden, und es muss TSPI_providerFreeDialogInstance für den TAPISRV-Prozess exportieren, um dem Dienstanbieter mitzuteilen, wann eine Zuordnung freigegeben werden soll, die für die Generierung einer spontanen Benutzeroberfläche in Verbindung mit einer Funktion eingerichtet wurde, die nicht als Darstellung der Benutzeroberfläche für den Benutzer definiert ist. Die Dienstanbieter-DLL kann daten unidirektional an die UI-DLL senden, indem die neue TSPI-Meldung LINE_SENDDIALOGINSTANCEDATA verwendet wird.

Da die Namen der FUNKTIONEN TSPI und TUISPI absichtlich unterschiedlich sind, können die Dienstanbieter-DLL und die UI-DLL bei Bedarf dieselbe DLL-Datei sein. Bei ordnungsgemäßer Segmentierung führt dies nicht unbedingt zu einer unnötigen Speicherauslastung im Anwendungskontext und kann den Installationsprozess für Dienstanbieter vereinfachen, die derzeit in einer einzelnen DLL implementiert werden können. TAPI ruft nur die Funktionen auf, die für den Kontext geeignet sind, in dem die DLL verwendet wird.

Der Telefoniedienstanbieter und die UI-DLL müssen beide unter Berücksichtigung der Anforderung entworfen werden, dass die UI-Funktionen von mehreren Anwendungsprozessen gleichzeitig aufgerufen werden können. Sie müssen auch berücksichtigen, dass sich die Anwendung und der TAPI-Dienst, unter denen der Telefoniedienstanbieter ausführt, auf separaten Computern in einem LAN befinden können.