通話管理員會呼叫 NdisCmDeactivateVc,作為關閉撥出或來電的一個重要步驟,通常在透過網路元件進行封包交換以終止通話後(請參閱 Client-Initiated 要求關閉通話,以及 來電關閉要求)。 MCM 驅動程式會呼叫 NdisMCmDeactivateVc來執行相同的動作。
呼叫 NdisCmDeactivateVc 會導致 NDIS 呼叫基礎迷你埠驅動程式的 MiniportCoDeactivateVc 函式(請參閱下圖)。 MiniportCoDeactivateVc 會與其網路適配器通訊,以終止此 VC 的所有通訊(例如清除適配卡上的接收或傳送緩衝區)。
在停用 VC 之前,迷你埠驅動程式必須完成 VC 上任何擱置的傳輸。 也就是說,迷你埠驅動程序必須等到完成所有正在進行的傳送,以及所有它所指示的接收數據包都已被傳回給它為止。 停用 VC 後,迷你埠驅動程式無法在 VC 上指示接收或傳送資料。
請注意,MiniportCoDeactivateVc 不會刪除 VC。 特定 VC 的建立者(用戶端、呼叫管理員或 MCM 驅動程式)將不被重複使用的 VC 呼叫 NdisCoDeleteVc,以 終結該 VC。 已停用的 VC 可由連線導向客戶端、呼叫管理員或 MCM 驅動程式 重新啟用。
MiniportCoDeactivateVc 可以同步或異步完成。 呼叫 NdisMCoDeactivateVcComplete。 這會導致 NDIS 呼叫原本要求停用 VC 的呼叫管理員的 ProtocolCmDeactivateVcComplete 函式。 停用的完成表示啟用時所使用的 VC 的所有呼叫參數都不再有效。 禁止進一步使用 VC,除非以一組新的呼叫參數重新啟用它。
MCM 驅動程式呼叫 NdisMCmDeactivateVc 通知 NDIS 已停用 VC 或變更已建立 VC 上的呼叫參數(請參閱下圖)。 NDIS 會呼叫 MCM 驅動程式的 ProtocolCmDeactivateVcComplete 函式來完成停用序列。
MCM 驅動程式不會呼叫 NdisMCmDeactivateVc 來停用用於交換 MCM 驅動程式與網路元件之間訊號訊息的 VC,例如交換器。 MCM 驅動程式會在內部停用訊號 VC,而不呼叫任何 NdisXxx 函式。