傳遞模式
當呼叫在 LINEBEARERMODE_PASSTHROUGH作用中時,服務提供者會直接存取連結的硬體,以供應用程式控制。 應用程式可以使用這個模式,暫時控制透過 通訊功能存取的非同步數據機,以便設定或使用服務提供者不支援的特殊功能,例如 facsimile (類別 1、2 等) 。 通用數據機驅動程式 (UNIMODEM) 服務提供者支援此持有人模式。
支援LINEBEARERMODE_PASSTHROUGH的服務提供者會在LINEDEVCAPS結構的dwBearerModes成員中指出它。 當指出LINEBEARERMODE_PASSTHROUGH時,Unimodem 服務提供者也會包含在LINEDEVCAPS結構的DevSpecific區域中,此登錄機碼用來存取與線路裝置相關聯之數據機的資料,格式如下:
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.
}
例如:
00000001 00000008 74737953 435c6d65 ........System\C
65727275 6f43746e 6f72746e 7465536c urrentControlSet
7265535c 65636976 6c435c73 5c737361 urrentControlSet
65646f4d 30305c6d xx003030 xxxxxxxx Modem\0000.
接著可以使用 RegOpenKey 函式來開啟此登錄機碼。
傳遞模式最常使用lineMakeCall函式叫用,方法是在lpCallParams參數所指向之 LINECALLPARAMS結構的dwBearerMode成員中設定LINEBEARERMODE_PASSTHROUGH位。 完成此動作時,服務提供者會將序列埠開啟至數據機,並立即將呼叫放入 LINECALLSTATE_CONNECTED。 然後,應用程式可以使用 lineGetID 函式搭配裝置類別 「comm/datamodem」 來取得開啟的檔案控制代碼,以讀取和寫入 comm 埠。
您也可以叫用傳遞模式,以回應撥入電話。 一般而言,應用程式會在呼叫處於 LINECALLSTATE_OFFERING時叫用傳遞模式,然後再接聽通話。 應用程式不會呼叫 lineAnswer,而是呼叫 lineSetCallParams,並將 LINEBEARERMODE_PASSTHROUGH 傳遞為 dwBearerMode 參數。 完成此動作時,如同 lineMakeCall,服務提供者會立即將呼叫放入 LINECALLSTATE_CONNECTED ,而應用程式可以使用 lineGetID取得開啟埠的控制碼。 當呼叫位於LINECALLSTATE_OFFERING、LINECALLSTATE_ACCEPTED或LINECALLSTATE_CONNECTED時,可以呼叫lineSetCallParams函式。
如果呼叫是來電,通常透過從lineMakeCall取得的呼叫控制碼上呼叫lineDrop或第一個LINE_CALLSTATE訊息來終止傳遞模式。 服務提供者將會關閉埠,並將數據機還原為其預設狀態。 應用程式必須在從lineGetID收到的控制碼上呼叫CloseHandle。
傳遞模式也可以藉由呼叫 lineSetCallParams ,並將 dwBearerMode 參數設定為 LINEBEARERMODE_VOICE來終止。 lineSetMediaMode所設定的媒體類型 (模式) 假設為有效。 如果 LINEMEDIAMODE_DATAMODEM 作用中,服務提供者會接管呼叫,就像它是正在進行中的資料數據機呼叫一樣;如果後續呼叫 lineDrop ,服務提供者將會發出適當的數據機命令或介面狀態變更,以卸載資料呼叫。
注意
如果在呼叫進行時終止傳遞模式,TAPI 服務提供者 (TSP) 行可能會將數據機設定還原為其預設狀態。 Unimodem 是 TSP 的範例,一律會在終止傳遞模式時還原數據機設定。 因此,傳遞模式無法當做設定裝置的方法使用。 傳遞模式應該只用于終止傳遞時可視為完成的不同活動。 可以使用傳遞模式的活動範例包括透過專屬數據機通訊協定傳送傳真或播放波/音訊資料。