Tryb przekazywania
Gdy wywołanie jest aktywne w LINEBEARERMODE_PASSTHROUGH, dostawca usług zapewnia bezpośredni dostęp do dołączonego sprzętu do kontroli przez aplikację. Aplikacje mogą używać tego trybu do tymczasowej bezpośredniej kontroli nad modemami asynchronicznymi, uzyskiwanymi za pośrednictwem funkcji komunikacji , w celu konfigurowania lub używania specjalnych funkcji, które nie są w inny sposób obsługiwane przez dostawcę usług, takich jak facsimile (klasa 1, 2 itd.). Ten tryb elementu nośnego jest obsługiwany przez dostawcę usług sterownika uniwersalnego modemu (UNIMODEM).
Dostawcy usług obsługujący LINEBEARERMODE_PASSTHROUGH wskazują go w dwBearerModes członkiem struktury LINEDEVCAPS. Po wskazaniu LINEBEARERMODE_PASSTHROUGH dostawca usług Unimodem będzie również uwzględnić w obszarze DevSpecificLINEDEVCAPS struktury klucza rejestru używanego do uzyskiwania dostępu do danych o modemie skojarzonym z urządzeniem liniowym w następującym formacie:
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.
}
Na przykład:
00000001 00000008 74737953 435c6d65 ........System\C
65727275 6f43746e 6f72746e 7465536c urrentControlSet
7265535c 65636976 6c435c73 5c737361 urrentControlSet
65646f4d 30305c6d xx003030 xxxxxxxx Modem\0000.
Ten klucz rejestru można następnie otworzyć przy użyciu funkcji RegOpenKey.
Tryb przekazywania jest wywoływany najczęściej przy użyciu funkcji lineMakeCall, ustawiając bit LINEBEARERMODE_PASSTHROUGH w dwBearerMode elementu członkowskiego LINECALLPARAMS struktury wskazywanej przez parametr lpCallParams. Po wykonaniu tej czynności dostawca usług otworzy port szeregowy do modemu i natychmiast umieść wywołanie w LINECALLSTATE_CONNECTED. Następnie aplikacja może użyć funkcji lineGetID z klasą urządzenia "comm/datamodem", aby uzyskać otwarte dojście do odczytu i zapisu na porcie comm.
Tryb przekazywania można również wywołać w odpowiedzi na wywołanie przychodzące. Ogólnie rzecz biorąc, aplikacje będą wywoływać tryb przekazywania, podczas gdy wywołanie jest w LINECALLSTATE_OFFERING, zanim wywołanie zostanie odebrane. Zamiast wywoływać lineAnswer, aplikacja wywołuje lineSetCallParams, przekazując LINEBEARERMODE_PASSTHROUGH jako parametr dwBearerMode. Po wykonaniu tej czynności, podobnie jak w przypadku lineMakeCall, wywołanie jest natychmiast umieszczane w LINECALLSTATE_CONNECTED przez dostawcę usług, a aplikacja może uzyskać dojście do otwartego portu przy użyciu lineGetID. Funkcja lineSetCallParams może być wywoływana, gdy wywołanie znajduje się w LINECALLSTATE_OFFERING, LINECALLSTATE_ACCEPTEDlub LINECALLSTATE_CONNECTED.
Tryb przekazywania jest zwykle przerywany przez wywołanie lineDrop na dojściu wywołania uzyskanego z lineMakeCall lub pierwszego komunikatu LINE_CALLSTATE, jeśli wywołanie było wywołaniem przychodzącym. Dostawca usług zamknie port i przywróci modem do stanu domyślnego. Aplikacja musi wywołać CloseHandle na dojściu otrzymanego z lineGetID.
Tryb przekazywania można również zakończyć przez wywołanie lineSetCallParams za pomocą parametru dwBearerMode ustawionego na wartość LINEBEARERMODE_VOICE. Typ nośnika (tryb) ustawiony przez lineSetMediaMode ma obowiązywać. Jeśli LINEMEDIAMODE_DATAMODEM jest aktywna, dostawca usług przejmie połączenie tak, jakby było to już w toku wywołanie modemu danych; Jeśli lineDrop jest następnie wywoływany, dostawca usług wyda odpowiednie polecenia modemu lub stan interfejsu, aby usunąć wywołanie danych.
Nuta
Jeśli tryb przekazywania zostanie przerwany, gdy wywołanie jest w toku, dostawca usług TAPI (TSP) dla wiersza może przywrócić ustawienia modemu do stanu domyślnego. Unimodem to przykład dostawcy TSP, który zawsze przywraca ustawienia modemu podczas kończania trybu przekazywania. Z tego powodu nie można użyć trybu przekazywania jako metody konfigurowania urządzenia. Tryb przekazywania powinien być używany tylko w przypadku odrębnych działań, które można uznać za ukończone po zakończeniu przekazywania. Przykłady działań, które mogą używać trybu przekazywania, obejmują wysyłanie faksu lub odtwarzanie danych falowych/audio za pośrednictwem zastrzeżonego protokołu modemu.