マルチポイント呼び出しへのパーティーの追加
クライアントは、NdisClAddParty を使用してマルチポイント呼び出しにパーティーを追加するように要求します。 クライアントは、既存のマルチポイント呼び出し (クライアントが NdisClMakeCall に ProtocolPartyContext を指定した呼び出し)にのみパーティを追加できます (「呼び出しの作成」を参照)。
次の図は、マルチポイント呼び出しにパーティーを追加するよう要求する Call Manager のクライアントを示しています。
次の図は、マルチポイント呼び出しにパーティーを追加することを要求する MCM ドライバーのクライアントを示しています。
NdisClAddParty を呼び出す 前に、クライアントは、追加するパーティのコンテキスト領域を割り当てて初期化する必要があります。 クライアントは通常、ProtocolPartyContext などのコンテキスト領域へのポインターを渡し、NdisClAddParty を呼び出すときに NdisPartyHandle パラメーターとしてそのコンテキスト領域内の変数へのポインターを渡します。
NdisVcHandle と ProtocolPartyContext に加えて、クライアントは呼び出しパラメーター (バッファー CO_CALL_PARAMETERS 構造体) を NdisClAddParty に渡します。 基になるネットワーク メディアは、クライアントがマルチポイント VC でパーティごとのトラフィック パラメーターを指定できるかどうかを決定します。
NdisClAddParty への呼び出しを行うと、NDIS はこの要求を ProtocolCmAddParty 関数 (クライアントが特定のNdisVcHandle を共有する Call Manager か MCM ドライバー) に転送することになります。 NDIS は、ProtocolCmAddParty に次を渡します。
呼び出しの VC を示す CallMgrVcContext。
クライアントが NdisClAddParty に渡す呼び出しパラメーターを含む CO_CALL_PARAMETERS 構造体へのポインター。
追加するパーティを識別する NdisPartyHandle。
ProtocolCmAddParty は、 呼び出しに追加されるパーティーに必要な動的リソースを割り当てて初期化します。 ProtocolCmAddParty から、Call Manager または MCM ドライバーは、必要に応じて、ネットワーク制御デバイスまたはその他のメディア固有のエージェントと通信して、指定されたパーティーをマルチポイント呼び出しに追加します。
クライアントが、マルチポイント VC に対してすでに確立されているものと一致しない呼び出しパラメーターで渡した場合、Call Manager または MCM ドライバーは、以下を実行できます。
基になるネットワーク メディアが、マルチポイント VC でこの機能をサポートしている場合、パーティごとのトラフィック パラメーターを設定します。
クライアントが指定したトラフィック パラメーターを、VC 用に最初に確立されたものにリセットします。
VC とその上で現在接続されているすべてのパーティの呼び出しパラメーターを変更します。
クライアントがパーティーを追加しようとして失敗します。
ProtocolCmAddParty は、Call Manager の場合は NdisCmAddPartyComplete、MCM ドライバーの場合は NdisMCmAddPartyComplete を使用して同期的、または非同期的に完了できます。 Call Manager または MCM ドライバーが同期的または非同期的に動作を完了するかどうかによって、NDIS にバッファー内の呼び出しパラメーターを渡します。
Ndis(M)CmAddPartyComplete を呼び出すと、NDIS はクライアントの ProtocolClAddPartyComplete 関数を呼び出します。 クライアントのパーティの追加要求が成功し、シグナリング プロトコルによって Call Manager または MCM ドライバーが呼び出しパラメーターを変更できる場合、ProtocolClAddPartyComplete はバッファー内の CO_CALL_PARAMETERS 構造体の CALL_PARAMETERS_CHANGED フラグをテストして、呼び出しパラメーターが変更されたかどうかを判断する必要があります。 シグナリング プロトコルは、クライアントが受け入れられない CO_CALL_PARAMETERS への変更を検出した場合に実行する動作を決定します。 通常、この場合、クライアントは NdisClDropParty を呼び出します (「マルチポイント呼び出しからのパーティーの削除」を参照)。