Funzioni linea estese
I servizi line estesi (o servizi line specifici del dispositivo) includono tutte le estensioni definite dal provider di servizi all'API. L'API definisce un meccanismo che consente ai fornitori di provider di servizi di estendere TAPI usando estensioni specifiche del dispositivo. L'API definisce solo il meccanismo di estensione e in questo modo fornisce l'accesso alle estensioni specifiche del dispositivo, ma l'API non ne definisce il comportamento. Il comportamento è completamente definito dal provider di servizi.
TAPI è costituito da definizioni costanti scalari e flag di bit, strutture di dati, funzioni e messaggi. Le procedure sono definite che consentono a un fornitore di estendere la maggior parte di queste procedure come indicato di seguito.
Per le costanti di dati scalari estendibili, un fornitore del provider di servizi può definire nuovi valori in un intervallo specificato. Poiché la maggior parte delle costanti dati sono DWORD, in genere l'intervallo 0x00000000 tramite 0x7FFFFFFF è riservato per le estensioni future comuni, mentre 0x80000000 tramite 0xFFFFFFFF sono disponibili per le estensioni specifiche del fornitore. Il presupposto è che un fornitore definirà valori che sono estensioni naturali dei tipi di dati definiti dall'API.
Per le costanti di dati con flag di bit estendibile, un fornitore del provider di servizi può definire nuovi valori per i bit specificati. Poiché la maggior parte delle costanti del flag di bit è DWORD, in genere un numero specifico di bit inferiori è riservato per le estensioni comuni, mentre i bit superiori rimanenti sono disponibili per le estensioni specifiche del fornitore. I flag di bit comuni vengono assegnati da bit zero in su; Le estensioni specifiche del fornitore devono essere assegnate da bit 31 verso il basso. Ciò garantisce la massima flessibilità nell'assegnazione delle posizioni di bit alle estensioni comuni rispetto alle estensioni specifiche del fornitore. Si prevede che un fornitore definiscano nuovi valori che sono estensioni naturali dei flag di bit definiti dall'API.
Le strutture di dati estendibili hanno un campo di dimensioni variabile riservato per l'uso specifico del dispositivo. Con dimensioni variabili, il provider di servizi decide la quantità di informazioni e l'interpretazione. È previsto che un fornitore che definisce un campo specifico del dispositivo renda queste estensioni naturali della struttura dei dati originale definita dall'API.
Due funzioni, lineDevSpecific e lineDevSpecificFeature e due messaggi correlati, LINE_DEVSPECIFIC e LINE_DEVSPECIFICFEATURE, forniscono un meccanismo di estensione specifico del fornitore. La funzione lineDevSpecific e il messaggio associato LINE_DEVSPECIFIC consentono a un'applicazione di accedere a funzionalità di chiamata, indirizzo o riga specifiche del dispositivo non disponibili con i servizi di telefonia di base o supplementare. Il profilo del parametro della funzione lineDevSpecific è generico in quanto la piccola interpretazione dei parametri viene eseguita dall'API. L'interpretazione dei parametri è definita dal provider di servizi e deve essere compresa da un'applicazione che li usa. I parametri vengono semplicemente passati tramite TAPI dall'applicazione al provider di servizi. Un'applicazione che si basa su estensioni specifiche del dispositivo non funzionerà in genere con altri provider di servizi; Tuttavia, le applicazioni scritte nei servizi di telefonia di base e supplementare funzioneranno con il provider di servizi estesi.
Per praticità, viene fornita anche una funzione di escape più specializzata. È simile a lineDevSpecific, ma inserisce l'interpretazione su alcuni parametri. Questa funzione più specializzata è lineDevSpecificFeature, una funzione di escape specifica del dispositivo per consentire l'invio di funzionalità switch al commutatore. Il messaggio LINE_DEVSPECIFICFEATURE è il messaggio specifico del dispositivo inviato all'applicazione come indicazione delle funzionalità inviate al commutatore. Questa funzione e il messaggio associato consentono a un'applicazione di emulare i tasti di pressione sul telefono delle funzionalità della riga. Poiché i telefoni di funzionalità e i significati dei loro pulsanti sono specifici del fornitore, anche la chiamata di funzionalità tramite lineDevSpecificFeature è specifica del fornitore.
Come accennato in precedenza, non esiste un registro centrale per gli identificatori del produttore. Viene invece reso disponibile un generatore di identificatori univoci (EXTIDGEN).