只有起始建立虛擬線路 (VC) 的連線導向客戶端、呼叫管理員或 MCM 驅動程式可以起始刪除該 VC。 因此,用戶端會刪除先前針對傳出通話建立的 VC、通話管理員或 MCM 驅動程式會刪除先前針對網路來電所建立的 VC,而呼叫管理員會刪除先前為透過網路交換訊號訊息而建立的 VC。 MCM 驅動程式不會呼叫 NDIS 來刪除它為交換訊號訊息而建立的 VC。MCM 驅動程式透過一項 NDIS 無法看見的內部操作來刪除這類 VC。
面向連線的客戶端或呼叫管理員會使用 NdisCoDeleteVc發起 VC 的刪除。
下圖顯示呼叫管理員的用戶端正在起始刪除 VC 的操作。
下圖顯示 MCM 驅動程式的用戶端開始刪除 VC。
下圖顯示呼叫管理員正在開始刪除 VC 的操作。
當用戶端或呼叫管理員呼叫 NdisCoDeleteVc 或 MCM 驅動程式呼叫 NdisMCmDeleteVc時,指定的 VC 上必須沒有任何未完成的呼叫,而且 VC 必須已經 停用。 若要符合這些需求,表示符合下列條件:
用戶端已使用給定的 NdisVcHandle 呼叫 NdisClCloseCall,且其 關閉通話請求 已成功完成。
呼叫管理員已呼叫 NdisCmDeactivateVc,或者 MCM 驅動程式已呼叫 NdisMCmDeactivateVc,指定的 NdisVcHandle 的停用要求已順利完成(請參閱 關閉來電要求)。
用戶端或呼叫管理員對 NdisCoDeleteVc 的呼叫 會導致 NDIS 同時呼叫基礎迷你埠驅動程式的 MiniportCoDeleteVc 函式以及與呼叫端共用 NdisVcHandle 的用戶端或呼叫管理員的 ProtocolCoDeleteVc 函式(請參閱前三個圖例)。
MiniportCoDeleteVc 釋放為 VC 分配的任何資源,以及迷你埠驅動程式的 VC 環境。 ProtocolCoDeleteVc 釋放用戶端或呼叫管理員用來執行 VC 作業並追蹤狀態的任何資源。 MiniportCoDeleteVc 和 ProtocolCoDeleteVc 都是無法傳回NDIS_STATUS_PENDING的同步函式。
MCM 驅動程式會使用 NdisMCmDeleteVc起始刪除 VC(請參閱下圖)。
MCM 驅動程式呼叫 NdisMCmDeleteVc 會導致 NDIS 呼叫 MCM 驅動程式共用 NdisVcHandle 用戶端的 ProtocolCoDeleteVc 函式。
當 NdisCoDeleteVc 或 NdisMCmDeleteVc 傳回控件時,NdisVcHandle 不再有效。