撥打電話
下圖顯示透過呼叫管理員撥打傳出電話的用戶端。
下圖顯示透過 MCM 驅動程式進行撥出電話的用戶端。
進行撥出電話之前,連線導向用戶端必須:
初始化類型 CO_CALL_PARAMETERS結構中的呼叫參數。 呼叫管理員或 MCM 驅動程式通常會使用用戶端指定的呼叫參數來設定呼叫,以及衍生媒體參數以供迷你埠驅動程式使用。
使用NdisCoCreateVc起始VC 的建立。
在成功傳回 NdisCoCreateVc時,用戶端會呼叫 NdisClMakeCall 來起始呼叫 (請參閱本節) 的兩個圖表。
在對 NdisClMakeCall的呼叫中,用戶端會將指標傳遞給先前初始化CO_CALL_PARAMETERS結構。 用戶端也會傳遞 NdisVcHandle (由 NdisCoCreateVc 傳回的) ,以識別用戶端將傳輸 (的 VC,而且或許會收到呼叫) 資料。 如果用戶端 (呼叫多個遠端合作物件) 進行多點呼叫,它也會傳遞 ProtocolPartyCoNtext ,以指定用戶端配置的駐留內容區域的控制碼,用戶端會在多點 VC 上維護初始合作物件的每一方狀態。
對 NdisClMakeCall的呼叫會導致 NDIS 將此要求轉送到呼叫管理員或 MCM 驅動程式的ProtocolCmMakeCall函式,用戶端會與其共用指定的NdisVcHandle 。 ProtocolCmMakeCall 必須驗證用戶端所設定的輸入呼叫參數。
ProtocolCmMakeCall 會與網路控制裝置通訊 (交換訊號訊息,) 以建立連線。 呼叫管理員會呼叫 NdisCoSendNetBufferLists 來起始這類交換 (請參閱 從 CoNDIS 驅動程式傳送NET_BUFFER結構) 。 MCM 驅動程式永遠不會呼叫 NdisCoSendNetBufferLists。 相反地,它會直接透過網路傳輸資料。
呼叫管理員或 MCM 驅動程式可以在與相關網路元件交涉時修改用戶端提供的呼叫參數,而且可以傳回與原本提供給 NdisClMakeCall 之用戶端不同的流量參數 (請參閱 變更通話參數的連入要求) 。
傳遞至ProtocolCmMakeCall的明確NdisPartyHandle表示用戶端所建立的 VC 將用於多點呼叫。 呼叫管理員或 MCM 驅動程式必須配置並初始化維護每一方狀態資訊並控制多點呼叫所需的任何必要資源。
在通話管理員完成與媒體所需之網路硬體的所有必要通訊之後,它必須呼叫 NdisCmActivateVc ,以起始 VC 的啟用 ,以便傳送通話資料並可能收到。 MCM 驅動程式必須呼叫 NdisMCmActivateVc。
當基礎迷你埠驅動程式準備好在 VC (上進行資料傳輸時,在啟動 VC) 之後,呼叫管理員會呼叫 NdisCmMakeCallComplete,而 MCM 驅動程式會呼叫 NdisMCmMakeCallComplete。 此時,呼叫管理員或 MCM 驅動程式應該已與網路交涉,以建立 VC 的呼叫參數,而基礎迷你埠驅動程式應該已完成 VC 的啟用。
在 呼叫 Ndis (M) CmMakeCallComplete 中,呼叫管理員或 MCM 驅動程式會將 VC 的呼叫參數當做類型CO_CALL_PARAMETERS結構的指標傳遞。 如果呼叫管理員已修改原本由用戶端指定的呼叫參數,則可以在CO_CALL_PARAMETERS結構中設定CALL_PARAMETERS_CHANGED旗標來通知用戶端。
呼叫 Ndis (M) CmMakeCallComplete 會導致 NDIS 呼叫產生撥出電話之用戶端的 ProtocolClMakeCallComplete 函式。 對 ProtocolClMakeCallComplete 的呼叫表示呼叫管理員已完成處理用戶端的要求,以建立與 NdisClMakeCall的虛擬連線。
如果用戶端嘗試建立撥出電話成功, ProtocolClMakeCallComplete 應該檢查CALL_PARAMETERS_CHANGED旗標,以判斷用戶端原先指定的呼叫參數是否已修改。 如果設定旗標,表示呼叫參數已變更, ProtocolClMakeCallComplete 應該檢查傳回的呼叫參數,以判斷是否可接受此連線。
如果可接受呼叫參數, ProtocolClMakeCallComplete 只會傳回控制權。 如果無法接受呼叫參數,而且訊號通訊協定目前允許重新交涉,用戶端可以呼叫 NdisClModifyCallQoS 來要求呼叫參數的變更 (請參閱 用戶端起始的要求以關閉通話) 。 如果訊號通訊協定不允許重新交涉無法接受的呼叫參數, ProtocolClMakeCallComplete 必須使用 NdisCloseCall 卸載呼叫 (請參閱 Client-Initiated 要求關閉通話) 。