Modalità pass-through
Quando una chiamata è attiva in LINEBEARERMODE_PASSTHROUGH, il provider di servizi concede l'accesso diretto all'hardware collegato per il controllo dell'applicazione. Le applicazioni possono usare questa modalità per il controllo diretto temporaneo sui modem asincroni, accessibili tramite le funzioni di comunicazione, allo scopo di configurare o utilizzare funzionalità speciali non altrimenti supportate dal provider di servizi, ad esempio facsimile (classe 1, 2 e così via). Questa modalità di connessione è supportata dal provider di servizi UNIMODEM (Universal Modem Driver).
Provider di servizi che supportano LINEBEARERMODE_PASSTHROUGH indicarlo nel membro dwBearerModes della struttura LINEDEVCAPS . Quando viene indicato LINEBEARERMODE_PASSTHROUGH , il provider di servizi Unimodem includerà anche nell'area DevSpecific della struttura LINEDEVCAPS la chiave del Registro di sistema utilizzata per accedere ai dati relativi al modem associato al dispositivo linea, nel formato seguente:
struct {
DWORD dwContents; // Set to 1 (indicates containing key).
DWORD dwKeyOffset; // Offset to key from start of this
// structure (not from start of
// LINEDEVCAPS structure).
// 8 in this case.
BYTE rgby[...]; // Place that contains null-terminated
// registry key.
}
Ad esempio:
00000001 00000008 74737953 435c6d65 ........System\C
65727275 6f43746e 6f72746e 7465536c urrentControlSet
7265535c 65636976 6c435c73 5c737361 urrentControlSet
65646f4d 30305c6d xx003030 xxxxxxxx Modem\0000.
Questa chiave del Registro di sistema può quindi essere aperta usando la funzione RegOpenKey .
La modalità pass-through viene richiamata più spesso usando la funzione lineMakeCall , impostando il bit LINEBEARERMODE_PASSTHROUGH nel membro dwBearerMode della struttura LINECALLPARAMS a cui punta il parametro lpCallParams . Al termine, il provider di servizi apre la porta seriale al modem e inserisce immediatamente la chiamata in LINECALLSTATE_CONNECTED. L'applicazione può quindi usare la funzione lineGetID con la classe di dispositivo "comm/datamodem" per ottenere un handle di file aperto da cui leggere e scrivere nella porta comm.
La modalità pass-through può essere richiamata anche in risposta a una chiamata in ingresso. In genere, le applicazioni richiameranno la modalità pass-through mentre la chiamata è in LINECALLSTATE_OFFERING, prima che la chiamata sia stata risposta. Anziché chiamare lineAnswer, l'applicazione chiama lineSetCallParams, passando LINEBEARERMODE_PASSTHROUGH come parametro dwBearerMode . Al termine, come per lineMakeCall, la chiamata viene immediatamente inserita in LINECALLSTATE_CONNECTED dal provider di servizi e l'applicazione può ottenere un handle per la porta aperta usando lineGetID. La funzione lineSetCallParams può essere chiamata quando la chiamata si trova in LINECALLSTATE_OFFERING, LINECALLSTATE_ACCEPTED o LINECALLSTATE_CONNECTED.
La modalità pass-through viene in genere terminata chiamando lineDrop sull'handle di chiamata ottenuto da lineMakeCall o il primo messaggio LINE_CALLSTATE , se la chiamata è una chiamata in arrivo. Il provider di servizi chiude la porta e ripristina lo stato predefinito del modem. L'applicazione deve chiamare CloseHandle sull'handle ricevuto da lineGetID.
La modalità pass-through può anche essere terminata chiamando lineSetCallParams con il parametro dwBearerMode impostato su LINEBEARERMODE_VOICE. Si presuppone che il tipo di supporto (modalità) impostato da lineSetMediaMode sia attivo. Se LINEMEDIAMODE_DATAMODEM è attivo, il provider di servizi assumerà la chiamata come se fosse già in corso una chiamata al modem dati; se lineDrop viene chiamato successivamente, il provider di servizi emetterà i comandi del modem o le modifiche dello stato dell'interfaccia appropriate per eliminare una chiamata dati.
Nota
Se la modalità pass-through viene terminata mentre è in corso la chiamata, il provider di servizi TAPI (TSP) per la riga potrebbe ripristinare lo stato predefinito delle impostazioni del modem. Unimodem è un esempio di TSP che ripristina sempre le impostazioni del modem quando termina la modalità pass-through. Per questo motivo, la modalità pass-through non può essere usata come metodo per configurare il dispositivo. La modalità pass-through deve essere usata solo per attività distinte che possono essere considerate complete al termine del passthrough. Esempi di attività che possono usare la modalità pass-through includono l'invio di un fax o la riproduzione di dati wave/audio tramite un protocollo modem proprietario.