VC の作成
発信呼び出しを行う前に、接続指向クライアントは仮想接続 (VC) の作成を開始します。 接続指向クライアントへの着信呼び出しを示す前に、呼び出しマネージャーまたは MCM ドライバーが VC の作成を開始します。 VC がセットアップされ、アクティブにされると、VC でクライアント データを送受信できます。
呼び出しマネージャーまたは MCM ドライバーは、ネットワーク スイッチなどのネットワーク コンポーネントとシグナリング メッセージが交換される VC の作成を開始することもできます。
クライアントによる VC の作成開始
NdisClMakeCall を使用して呼び出しを行う前に、接続指向クライアントは NdisCoCreateVc を呼び出して VC の作成を開始します。
次の図は、VC の作成を開始する呼び出しマネージャーのクライアントを示しています。
次の図は、VC の作成を開始する MCM ドライバーのクライアントを示しています。
呼び出しマネージャーの接続指向クライアントが NdisCoCreateVc、NDIS 呼び出しを同期操作として呼び出す場合、呼び出しマネージャーの ProtocolCoCreateVc 関数と基になるミニポート ドライバーのミニポートCoCreateVc 関数 (このトピックの最初の図を参照してください)。 NDIS は、ProtocolCoCreateVc とミニポートCoCreateVc の両方に VC を表す NdisVcHandle を渡します。 NdisCoCreateVc の呼び出しが成功した場合、NDIS は NdisCoCreateVc に NdisVcHandle を返します。
ProtocolCoCreateVc は、呼び出しマネージャーがアクティブ化される VC に対して後続の操作を実行するために必要な動的リソースと構造体を割り当てて初期化します。 ミニポートCoCreateVc は、VC に関する状態情報をメインにミニポート ドライバーが必要とするリソースを割り当てて初期化します。 ProtocolCoCreateVc とミニポートCoCreateVc の両方が NdisVcHandle を格納します。
MCM ドライバーの接続指向クライアントの場合、NdisCoCreateVc への呼び出しにより、NDIS は MCM ドライバーの ProtocolCoCreateVc 関数を呼び出します (VC のクライアント開始作成 (MCM ドライバーの存在)を参照してください)。 この場合、 ProtocolCoCreateVc は VC に必要なリソースの割り当てと初期化を実行します。 呼び出しはありません (内部またはそれ以外の場合) ミニポートCoCreateVc、MCM ドライバーがこのような関数を提供しないためです。
VC の呼び出しマネージャーによって開始される作成
indicating an incoming call を使用して接続指向クライアントへの着信呼び出しを示す前に、呼び出しマネージャーは NdisCoCreateVc を呼び出して VC の作成を開始します (次の図を参照)。
呼び出しマネージャーが NdisCoCreateVc を呼び出すと、NDIS 呼び出しは、同期操作として、呼び出しを受信している SAP を登録した接続指向クライアントの ProtocolCoCreateVc 関数と、基になるミニポートのミニポートのミニポートCoCreateVc 関数。 NDIS は、ProtocolCoCreateVc とミニポートCoCreateVc の両方に VC を表す NdisVcHandle を渡します。 NdisCoCreateVc の呼び出しが成功した場合、NDIS は NdisCoCreateVc に NdisVcHandle を返します。
MCM ドライバーによって開始される VC の作成
NdisMCmDispatchIncomingCall を使用して接続指向クライアントへの着信呼び出しを示す前に、MCM ドライバーは NdisMCmCreateVc を呼び出して VC の作成を開始します (次の図を参照)。
MCM ドライバーが NdisMCmCreateVc を呼び出すと、NDIS 呼び出しは、NdisMCmCreateVc が返される前に同期操作として、呼び出しを受信している SAP を登録した接続指向クライアントの ProtocolCoCreateVc 関数です。 NDIS は、VC を 表す NdisVcHandle を ProtocolCoCreateVc に 渡します。 NdisMCmCreateVc の呼び出しが成功した場合、NDIS は NdisMCmCreateVc に NdisVcHandle を返します。
ProtocolCoCreateVc は、 クライアントが VC に対して後続の操作を実行するために必要な動的リソースと構造体を割り当てて初期化します。 ProtocolCoCreateVc には、NdisVcHandle も格納されます。
MCM ドライバーは、ネットワーク コンポーネントとシグナリング メッセージを交換するための VC を作成するときに、NdisXxx 呼び出しを使用して VC を作成しないことに注意してください。 実際、MCM ドライバーでは、このような VC の作成、アクティブ化、非アクティブ化、または削除に NdisXxx 呼び出しを使用しません。 代わりに、MCM ドライバーはこれらの操作を内部的に実行します。 したがって、このような VC は NDIS に対して不透明です。