Client-Initiated 呼び出しパラメーターを変更する要求

クライアントは、 NdisClModifyCallQoS を使用してアクティブな仮想接続 (VC) のサービス品質 (QoS) の変更を要求します。

次の図は、サービス品質の変更を要求する通話マネージャーのクライアントを示しています。

アクティブ VC の QoS 変更を要求するコール マネージャのクライアントを示す図。

次の図は、サービス品質の変更を要求する MCM ドライバーのクライアントを示しています。

アクティブ 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 を参照) を使用して呼び出しを破棄できます。