停用 VC
通話管理員會將 NdisCmDeactivateVc 呼叫為關閉撥出或來電的基本步驟,通常是在封包與終止通話的網路元件交換之後, (請參閱 用戶端起始的要求以關閉通話 和連入 要求以關閉通話) 。 MCM 驅動程式會藉由呼叫 NdisMCmDeactivateVc來執行相同的動作。
呼叫 NdisCmDeactivateVc 會導致 NDIS呼叫基礎迷你埠驅動程式的MiniportCoDeactivateVc函式, (請參閱下圖) 。 MiniportCoDeactivateVc 會與其網路介面卡通訊,以終止此 VC (的所有通訊,例如清除介面卡) 上的接收或傳送緩衝區。
停用 VC 之前,迷你埠驅動程式必須完成 VC 上任何擱置的傳輸。 也就是說,迷你埠驅動程式必須等到它已完成所有進行中的傳送,以及直到它指出的所有接收封包都傳回給它為止。 停用 VC 之後,迷你埠驅動程式無法指出 VC 上的接收或傳輸傳送。
請注意 ,MiniportCoDeactivateVc 不會刪除 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 驅動程式與網路元件之間的訊號訊息的 VM,例如交換器。 MCM 驅動程式會在內部停用訊號 VC,而不需呼叫任何NdisXxx函式。