共用方式為


Client-Initiated 變更呼叫參數的要求

用戶端會要求使用 NdisClModifyCallQoS在作用中虛擬連線 (VC) 上變更服務品質 (QoS) 。

下圖顯示要求服務品質變更之呼叫管理員的用戶端。

此圖顯示要求使用中 VC 上 QoS 變更之呼叫管理員的用戶端。

下圖顯示要求服務品質變更之 MCM 驅動程式的用戶端。

說明 MCM 驅動程式用戶端在作用中 VC 上要求 QoS 變更的圖表。

在對 NdisClModifyCallQoS的呼叫中,用戶端會提供:

  • 識別 VC 的 NdisVcHandle 參數。

  • 包含用戶端所要求呼叫參數 之CO_CALL_PARAMETERS 結構的指標。

用戶端可以要求 QoS 變更的情況取決於訊號通訊協定。

對 NdisClModifyCallQoS的呼叫會導致 NDIS 呼叫呼叫管理員的 或 MCM 驅動程式的ProtocolCmModifyCallQoS函式,此函式會輸入NdisVcHandle並緩衝處理用戶端傳遞至NdisClModifyCallQoS的CO_CALL_PARAMETERS結構。 ProtocolCmModifyQoS 會與其媒體所需的網路控制裝置或其他媒體特定代理程式通訊,以修改已建立虛擬連線的媒體特定呼叫參數。

與網路通訊並判斷變更成功之後,呼叫管理員必須呼叫 NdisCmActivateVc (,而 MCM 驅動程式必須呼叫 NdisMCmActivateVc) ,才能使用新的呼叫參數來啟用指定的 VC。

如果網路不接受新的呼叫參數,或基礎迷你埠驅動程式無法接受參數,則呼叫管理員或 MCM 驅動程式必須將 VC 還原到任何修改之前存在的狀態,並傳回NDIS_STATUS_FAILURE。

若要指出用戶端變更 QoS 的要求狀態,呼叫管理員會呼叫 NdisCmModifyCallQoSComplete,而 MCM 驅動程式會呼叫 NdisMCmModifyCallQoSComplete。 在此呼叫中,呼叫管理員或 MCM 驅動程式會通過:

  • 指出要求狀態的NDIS_STATUS。

  • 識別 VC 的 NdisVcHandle

  • 包含 VC 呼叫參數之CO_CALL_PARAMETERS結構的指標。

如果訊號通訊協定允許,呼叫管理員或 MCM 驅動程式可以將修改的呼叫參數傳回用戶端。 這些修改可以是與網路交涉的乘積,或可由呼叫管理員或 MCM 驅動程式本身提供。 呼叫管理員或 MCM 驅動程式應該透過在 CO_CALL_PARAMETERS 結構中設定CALL_PARAMETERS_CHANGED旗標來指出已修改呼叫參數。

呼叫 Ndis (M) CmModifyCallQoSComplete會導致 NDIS 呼叫用戶端的ProtocolClModifyCallQoSComplete 函式。 NDIS 會將下列專案傳遞至 ProtocolClModifyCallQoSComplete

  • 指出變更 QoS 之用戶端要求狀態的NDIS_STATUS。

  • 識別 VC 的 ProtocolVcCoNtext 控制碼。

  • CO_CALL_PARAMETERS 結構的指標,其中包含呼叫管理員或 MCM 驅動程式傳遞給 Ndis (M) CmModifyCallQoSComplete的呼叫參數。

如果CALL_PARAMETERS_CHANGED旗標是在 CO_CALL_PARAMETERS 結構中設定,用戶端必須檢查傳回的呼叫參數,並判斷是否可接受修改。 如果用戶端對 NdisClModifyCallQoS 的呼叫成功, ProtocolClModifyCallQoSComplete 只要傳回控制項即可接受 QoS 變更。 否則,如果訊號通訊協定允許, ProtocolClModifyCallQoSComplete 可以與呼叫管理員進一步交涉,只要用戶端的開發人員對可能重新交涉的數目有一些合理的限制即可。 或者, 只要通訊協定ClModifyCallQoSComplete 只要使用 NdisCloseCall 來結束通話, (請參閱 用戶端起始的要求以關閉呼叫) 每當呼叫管理員拒絕變更 QoS 的要求,且先前建立的 QoS 對用戶端已無法接受。