呼び出しパラメーターを変更するためのクライアントが開始した要求
クライアントは、NdisClModifyCallQoS を使用してアクティブな仮想接続 (VC) のサービス品質 (QoS) の変更を要求します。
次の図は、サービス品質の変更を要求する Call Manager のクライアントを示しています。
次の図は、サービス品質の変更を要求する MCM ドライバーのクライアントを示しています。
NdisClModifyCallQoS の呼び出しでは、クライアントは次を提供します。
VC を識別する NdisVcHandle パラメーター。
クライアントが要求している呼び出しパラメーターを含む CO_CALL_PARAMETERS 構造へのポインター。
クライアントが QoS の変更を要求できる状況は、シグナリング プロトコルによって決まります。
NdisClModifyCallQoS の呼び出しにより、NDIS が呼び出しマネージャーまたは MCM ドライバーの ProtocolCmModifyCallQoS 関数を呼び出します。この関数は、NdisVcHandle と、クライアントが NdisClModifyCallQoS に渡すバッファー CO_CALL_PARAMETERS 構造を入力します。 ProtocolCmModifyQoS は、確立された仮想接続のメディア固有の呼び出しパラメーターを変更するために、そのメディアでの必要性に応じて、ネットワーク制御デバイスまたはその他のメディア固有のエージェントと通信します。
ネットワークと通信し、変更が成功したことを確認した後、Call Manager は NdisCmActivateVc を呼び出し (MCM ドライバーは NdisMCmActivateVc を呼び出す必要があります)、新しい呼び出しパラメーターで指定された VC をアクティブ化する必要があります。
ネットワークが新しい呼び出しパラメーターを受け入れない場合、または基になるミニポート ドライバーがパラメーターを受け入れることができない場合、Call Manager または MCM ドライバーは、変更が試行される前に存在していた状態に VC を復元し、NDIS_STATUS_FAILURE を返す必要があります。
QoS を変更するクライアントの要求の状態を示すために、Call Manager は NdisCmModifyCallQoSComplete を呼び出し、MCM ドライバーは NdisMCmModifyCallQoSComplete を呼び出します。 この呼び出しでは、Call Manager または MCM ドライバーは、次を渡します。
要求の状態を示す NDIS_STATUS。
VC を識別する NdisVcHandle。
VC の呼び出しパラメーターを含む CO_CALL_PARAMETERS 構造へのポインター。
シグナリング プロトコルで許可されている場合、Call Manager または MCM ドライバーは、変更された呼び出しパラメーターをクライアントに渡すことができます。 これらの変更は、ネットワークとのネゴシエーションの積である場合も、Call Manager または MCM ドライバー自体から提供することもできます。 Call Manager または MCM ドライバーは、CO_CALL_PARAMETERS 構造で CALL_PARAMETERS_CHANGED フラグを設定することによって、呼び出しパラメーターが変更されたことを示す必要があります。
Ndis(M)CmModifyCallQoSComplete を呼び出すと、NDIS はクライアントの ProtocolClModifyCallQoSComplete 関数を呼び出します。 NDIS は ProtocolClModifyCallQoSComplete に次を渡します。
QoS を変更するクライアントの要求の状態を示す NDIS_STATUS。
VC を識別する ProtocolVcContext ハンドル。
Call Manager または MCM ドライバーから Ndis(M)CmModifyCallQoSComplete に渡される呼び出しパラメーターを含む CO_CALL_PARAMETERS 構造へのポインター。
CALL_PARAMETERS_CHANGED フラグが CO_CALL_PARAMETERS 構造に設定されている場合、クライアントは、返された呼び出しパラメーターを調べて、変更が許容されるかどうかを判断する必要があります。 クライアントによる NdisClModifyCallQoS への呼び出しが成功した場合、ProtocolClModifyCallQoSComplete は単に制御を返すことによって QoS の変更を受け入れます。 そうでない場合は、ProtocolClModifyCallQoSComplete は、シグナリング プロトコルで許可されている場合、およびクライアントの開発者が可能な再ネゴシエーションの数に妥当な制限を設定している限り、Call Manager のさらなるネゴシエーションに関与できます。 または、ProtocolClModifyCallQoSComplete は、Call Manager が QoS を変更する要求を拒否し、以前に確立された QoS がクライアントに対して受け入れられない場合に、NdisClCloseCall (「呼び出しを閉じるためのクライアント開始要求」を参照) を使用して単に呼び出しを破棄できます。