Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un'operazione che completa in modo asincrono parte dell'elaborazione nella chiamata di funzione effettuata dall'applicazione e il resto di esso in un thread di esecuzione indipendente dopo che TAPI 2.x è stato restituito dalla chiamata di funzione. Per garantire il completamento dell'elaborazione della chiamata, il provider di servizi vettori la richiesta a un'altra entità attiva nel sistema, ad esempio un server LAN, hardware del componente aggiuntivo, un commutatore o una rete, e quindi torna all'applicazione. Al momento, all'applicazione viene restituito un risultato di errore negativo o un identificatore di richiesta positivo.
Al momento del completamento asincrono (il provider di servizi ha ricevuto un interrupt dall'hardware, vale a dire che deve essere recapitato un messaggio), il provider di servizi chiama TAPISRV e segnala che "Evento X è stato appena eseguito. Recapitare un messaggio appropriato a tutte le applicazioni interessate." Quando TAPISRV riceve questo messaggio, inoltra il messaggio alla libreria di collegamento dinamico TAPI, nel processo dell'applicazione, che a sua volta pubblica un messaggio di finestra, segnala un handle di evento o invia a una porta di completamento I/O, in base allo schema di notifica dei messaggi selezionato dall'applicazione in rigaInitializeEx o phoneInitializeEx.
Al termine dell'operazione asincrona, all'applicazione viene inviato un messaggio LINE_REPLY (o PHONE_REPLY). Questo messaggio contiene, come uno dei relativi parametri, l'identificatore della richiesta restituito dalla chiamata di funzione. Questo identificatore di richiesta consente all'applicazione di determinare la richiesta originale completata. Le applicazioni devono ricordare gli identificatori di richiesta di tutte le richieste in corso in modo che i messaggi di risposta possano essere gestiti correttamente. Un secondo parametro del messaggio di LINE_REPLY (o PHONE_REPLY) è il valore restituito asincrono. Si tratta di un valore negativo (per un errore) o zero se l'operazione è stata completata correttamente. Per le operazioni asincrone, qualsiasi valore restituito può essere restituito come parte della funzione restituita o come parametro dwParam2 nel messaggio LINE_REPLY o PHONE_REPLY. Il valore 0, che indica l'esito positivo, verrà restituito solo nel messaggio LINE_REPLY e mai come valore restituito della funzione.
Le funzioni di inizializzazione ( lineInitializeEx e phoneInitializeEx) indicano a TAPI come inviare questi messaggi all'applicazione.
Nota
In alcuni casi, se un'applicazione multithreading chiama una funzione asincrona da un thread diverso dal thread da cui l'applicazione ha inizializzato la riga o il dispositivo telefonico, l'applicazione può ricevere il messaggio LINE_REPLY o PHONE_REPLY prima che venga restituita la funzione asincrona. In questi casi, l'applicazione deve salvare i parametri del messaggio e attendere che la funzione asincrona restituisca e l'identificatore della richiesta sia noto prima di elaborare il messaggio.