次の方法で共有


VC の削除

仮想回線 (VC) の作成を開始した接続指向のクライアント、Call Manager、または MCM ドライバーのみが、その VC の削除を開始できます。 そのため、クライアントは、発信用に以前に作成した VC を削除し、Call Manager または MCM ドライバーは、ネットワーク経由で着信用に以前に作成した VC を削除し、Call Manager は、ネットワーク経由で信号メッセージを交換するために以前に作成した VC を削除します。 (MCM ドライバーは、信号メッセージを交換するために作成した VC を削除する NDIS を呼び出しません。MCM ドライバーは、NDIS への不透明な内部操作でこのような VC を削除します。)

接続指向のクライアントまたは Call Manager は、NdisCoDeleteVc を使用して VC の削除を開始します。

次の図は、VC の削除を開始する Call Manager のクライアントを示しています。

Diagram showing a client of a call manager initiating the deletion of a VC.

次の図は、VC の削除を開始する MCM ドライバーのクライアントを示しています。

Diagram showing a client of an MCM driver initiating the deletion of a VC.

次の図は、VC の削除を開始する Call Manager を示しています。

Diagram showing a call manager initiating the deletion of a VC.

クライアントまたは Call Manager が NdisCoDeleteVc を呼び出す時、または MCM ドライバーが NdisMCmDeleteVc を呼び出す時は、指定された VC に未処理の呼び出しがなくその VC がすでに 非アクティブ化 されている必要があります。 これらの要件を満たす場合、次の条件が満たされていることを意味します。

クライアントまたは Call Manager が NdisCoDeleteVc を呼び出すと、NDIS は基になるミニポート ドライバーの MiniportCoDeleteVc 関数と、呼び出し元が NdisVcHandle を共有するするクライアントまたは Call Manager の ProtocolCoDeleteVc 関数の両方を呼び出します (上の 3 つの図を参照)。

MiniportCoDeleteVc は、VC に割り当てられているすべてのリソースと、VC のミニポート ドライバーのコンテキストを解放します。 ProtocolCoDeleteVc は、VC の操作を実行して状態を追跡するためにクライアントまたは Call Manager が使用したすべてのリソースを解放します。 MiniportCoDeleteVcProtocolCoDeleteVc はどちらも NDIS_STATUS_PENDING を返すことができない同期関数です。

MCM ドライバーは NdisMCmDeleteVc を使用して VC の削除を開始します (次の図を参照してください)。

Diagram showing an MCM driver initiating the deletion of a VC.

MCM ドライバーの NdisMCmDeleteVc の呼び出しにより、NDIS は、MCM ドライバーが NdisVcHandle を共有したクライアントの ProtocolCoDeleteVc 関数を呼び出します。

NdisCoDeleteVc または NdisMCmDeleteVc がコントロールを返すと、NdisVcHandle は無効になります。