クライアントは、 NdisClModifyCallQoS を使用してアクティブな仮想接続 (VC) のサービス品質 (QoS) の変更を要求します。
次の図は、サービス品質の変更を要求する通話マネージャーのクライアントを示しています。
次の図は、サービス品質の変更を要求する MCM ドライバーのクライアントを示しています。
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 ハンドル。
Ndis(M)CmModifyCallQoSComplete に呼び出しマネージャーまたは MCM ドライバーによって渡される呼び出しパラメーターを含むCO_CALL_PARAMETERS構造体へのポインター。
CALL_PARAMETERS_CHANGED フラグが CO_CALL_PARAMETERS 構造体に設定されている場合、クライアントは、返された呼び出しパラメーターを調べて、変更が許容されるかどうかを判断する必要があります。 クライアントが NdisClModifyCallQoS 呼び出しに成功した場合、ProtocolClModifyCallQoSComplete は、制御を返すだけで QoS の変更を受け入れます。 それ以外の場合、 ProtocolClModifyCallQoSComplete は、シグナリング プロトコルで許可されている場合、およびクライアントの開発者が可能な再ネゴシエーションの数に妥当な制限を設定している限り、呼び出しマネージャーとのさらなるネゴシエーションに関与できます。 または、 ProtocolClModifyCallQoSComplete は、呼び出しマネージャーが QoS を変更する要求を拒否し、以前に確立された QoS がクライアントに対して受け入れられない場合は常に、 NdisClCloseCall (呼び出しを 閉じる要求のClient-Initiated を参照) を使用して呼び出しを破棄できます。