次の方法で共有


VC のアクティブ化

仮想接続 (VC) が作成されたら (「VC の作成」を参照)、データを送信または受信する前に、仮想接続をアクティブにする必要があります。 Call Manager は、NdisCmActivateVc を呼び出すことで VC のアクティブ化を開始します (次の図を参照してください)。

Diagram illustrating a call manager initiating VC activation.

MCM ドライバーは、NdisMCmActivateVc を呼び出すことで VC のアクティブ化を開始します (次の図を参照してください)。

Diagram illustrating an MCM driver initiating VC activation.

Call Manager または MCM ドライバーは、ローカル クライアントまたはリモート パーティがその VC の呼び出しパラメーターの変更を正常にネゴシエートする場合にアクティブな VC の再アクティブ化を開始できます (「呼び出しを閉じるためにクライアントが開始した要求」と「呼び出しパラメーターを変更するための受信要求」を参照してください)。 Call Manager または MCM ドライバーは、既にアクティブな呼び出しの呼び出しパラメーターを変更する 1 つの VC の Ndis(M)CmActivateVc を何度も呼び出すことができます。

クライアントが開始した発信呼び出しの場合、Call Manager または MCM ドライバーは、通常、パケット交換の直後に Ndis(M)CmActivateVc を呼び出し、呼び出しのリモート側とのネゴシエートされた契約またはスイッチでの正常な呼び出しセットアップを確認します。 Call Manager または MCM ドライバーは、Ndis(M)CmMakeCallComplete (「呼び出しの作成」を参照) で NDIS (およびクライアント) に発信呼び出しの完了を通知する前に Ndis(M)CmActivateVc を呼び出します。 着信呼び出しの場合、通常、Call Manager または MCM ドライバーは、NdisCo(MCm)CreateVc を正常に呼び出した後、Ndis(M)CmDispatchIncomingCall を呼び出す前に Ndis(M)CmActivateVc を呼び出します (「着信呼び出しの表示」を参照)。

NdisCmActivateVc への Call Manager の呼び出しは、NDIS で、基になるミニポート ドライバーの MiniportCoActivateVc 関数を呼び出します。 MiniportCoActivateVc は、アダプターが要求された呼び出しをサポートできることを確認するために、この VC の呼び出しパラメーターを検証する必要があります。 呼び出しパラメーターが許容される場合、 MiniportCoActivateVc は、仮想接続 (たとえば、プログラミング受信バッファー) を介してデータを受信または送信するアダプターを準備するために必要に応じてアダプターと通信します。 要求された呼び出しパラメーターをサポートできない場合、ミニポート ドライバーは要求に失敗します。

MiniportCoActivateVc は、同期的または非同期的に完了できます。 NdisMCoActivateVcComplete への呼び出しにより、NDIS は Call Manager の ProtocolCmActivateVcComplete 関数を呼び出します。 ProtocolCmActivateVcComplete は、仮想接続が正常にアクティブ化されたことを確認するために、NdisMCoActivateVcComplete によって返される状態をチェックする必要があります。 ミニポート ドライバーが VC を正常にアクティブ化しなかった場合、Call Manager は VC 経由で通信を試みることはできません。 ProtocolCmActivateVcComplete は、NDIS に制御を返す前に、仮想接続がデータ転送可能なことを確認するために、ネットワーク メディアで必要な処理も完了する必要があります。

NdisMCmActivateVc に対する MCM ドライバーの呼び出しは、新しく作成された VC で呼び出しとメディア パラメーターを設定したか、確立された VC の呼び出しパラメーターを変更したことを NDIS に通知します。 このアクションは、MCM ドライバーが VC での転送の準備ができている NIC を NDIS に通知します。 NDIS は、MCM ドライバーの ProtocolCmActivateVcComplete 関数を呼び出すことによってアクティブ化シーケンスを完了します。

MCM ドライバーは NdisMCmActivateVc を呼び出して、クライアント データの送受信に使用される VC のみをアクティブ化しますが、MCM ドライバーとスイッチなどのネットワーク コンポーネント間でシグナリング メッセージを交換するために使用される VC はアクティブ化しません。 MCM ドライバーは、NdisXxx 関数を呼び出さずに内部的にシグナリング VC をアクティブにします。 したがって、MCM ドライバーが独自のシグナリングの目的で設定する VC は、NDIS に対して不透明になります。