Passthroughmodus
Wenn ein Aufruf in LINEBEARERMODE _ PASSTHROUGH aktiv ist, gewährt der Dienstanbieter direkten Zugriff auf die angefügte Hardware zur Steuerung durch die Anwendung. Anwendungen können diesen Modus für die temporäre direkte Steuerung über asynchrone Modems verwenden, auf die über die Kommunikationsfunktionenzugegriffen wird, um spezielle Features zu konfigurieren oder zu verwenden, die vom Dienstanbieter nicht anderweitig unterstützt werden, z. B. Faksimile (Klasse 1, 2 usw.). Dieser Bearermodus wird vom UNIMODEM-Dienstanbieter (Universal Modem Driver) unterstützt.
Dienstanbieter, die LINEBEARERMODE _ PASSTHROUGH unterstützen, geben dies im dwBearerModes-Member der LINEDEVCAPS-Struktur an. Wenn LINEBEARERMODE _ PASSTHROUGH angegeben wird, schließt der Unimodem-Dienstanbieter auch im DevSpecific-Bereich der LINEDEVCAPS-Struktur den Registrierungsschlüssel ein, der für den Zugriff auf Daten über das Modem verwendet wird, das dem Liniengerät zugeordnet ist, im folgenden Format:
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.
}
Beispiel:
00000001 00000008 74737953 435c6d65 ........System\C
65727275 6f43746e 6f72746e 7465536c urrentControlSet
7265535c 65636976 6c435c73 5c737361 urrentControlSet
65646f4d 30305c6d xx003030 xxxxxxxx Modem\0000.
Dieser Registrierungsschlüssel kann dann mit der RegOpenKey-Funktion geöffnet werden.
Der Passthroughmodus wird am häufigsten mithilfe der lineMakeCall-Funktion aufgerufen, indem das LINEBEARERMODE _ PASSTHROUGH-Bit im dwBearerMode-Member der LINECALLPARAMS-Struktur festgelegt wird, auf die der lpCallParams-Parameter zeigt. Wenn dies erfolgt ist, öffnet der Dienstanbieter den seriellen Anschluss für das Modem und ruft sofort LINECALLSTATE _ CONNECTED auf. Die Anwendung kann dann die lineGetID-Funktion mit der Geräteklasse "comm/datamodem" verwenden, um ein geöffnetes Dateihandle zum Lesen und Schreiben in den Comm-Port abzurufen.
Der Passthroughmodus kann auch als Reaktion auf einen eingehenden Aufruf aufgerufen werden. Im Allgemeinen rufen Anwendungen den Passthroughmodus auf, während sich der Aufruf im LINECALLSTATE _ OFFERING befindet, bevor der Aufruf beantwortet wurde. Anstatt lineAnsweraufzurufen, ruft die Anwendung lineSetCallParamsauf und übergibt LINEBEARERMODE _ PASSTHROUGH als dwBearerMode-Parameter. Wenn dies wie bei lineMakeCallerfolgt, wird der Aufruf sofort vom Dienstanbieter in LINECALLSTATE _ CONNECTED platziert, und die Anwendung kann mithilfe von lineGetIDein Handle für den geöffneten Port abrufen. Die lineSetCallParams-Funktion kann aufgerufen werden, wenn sich der Aufruf in LINECALLSTATE _ OFFERING, LINECALLSTATE _ ACCEPTED oder LINECALLSTATE _ CONNECTED befindet.
Der Passthroughmodus wird normalerweise beendet, indem lineDrop für das Aufrufhandle aufgerufen wird, das von lineMakeCall oder der ersten LINE _ CALLSTATE-Nachricht abgerufen wurde, wenn der Aufruf ein eingehender Aufruf war. Der Dienstanbieter schließt den Port und stellt das Modem im Standardzustand wieder her. Die Anwendung muss CloseHandle für das Handle aufrufen, das sie von lineGetIDerhalten hat.
Der Passthroughmodus kann auch beendet werden, indem lineSetCallParams aufgerufen wird, wobei der dwBearerMode-Parameter auf LINEBEARERMODE _ VOICE festgelegt ist. Es wird davon ausgegangen, dass der von lineSetMediaMode festgelegte Medientyp (Modus) wirksam ist. Wenn LINEMEDIAMODE _ DATAMODEM aktiv ist, übernimmt der Dienstanbieter den Aufruf so, als wäre es ein bereits ausgeführter Datenmodemaufruf. Wenn lineDrop anschließend aufgerufen wird, gibt der Dienstanbieter die entsprechenden Modembefehle oder Schnittstellenzustandsänderungen aus, um einen Datenaufruf zu löschen.
Hinweis
Wenn der Passthroughmodus beendet wird, während der Aufruf ausgeführt wird, stellt der TAPI-Dienstanbieter (TSP) für die Zeile möglicherweise den Standardzustand der Modemeinstellungen wieder her. Unimodem ist ein Beispiel für einen TSP, der beim Beenden des Passthroughmodus immer die Modemeinstellungen wiederherstellt. Aus diesem Grund kann der Passthroughmodus nicht als Methode zum Konfigurieren des Geräts verwendet werden. Der Passthroughmodus sollte nur für unterschiedliche Aktivitäten verwendet werden, die als abgeschlossen betrachtet werden können, wenn Passthrough beendet wird. Beispiele für Aktivitäten, die den Passthroughmodus verwenden können, sind das Senden eines Faxes oder das Wiedergeben von Wellen-/Audiodaten über ein proprietäres Modemprotokoll.