次の方法で共有


アドレス ファミリの登録と開始

コール マネージャーは、接続指向クライアントにコール マネージャー サービスを提供する NIC ごとにアドレス ファミリを登録する必要があります。 同様に、MCM ドライバーは、管理する NIC のアドレス ファミリを登録する必要があります。

アドレス ファミリを登録すると、コール マネージャーまたは MCM ドライバーは、アダプターにバインドするすべての接続指向クライアントにコール マネージャーまたは MCM ドライバーのサービスをアドバタイズする NDIS を生成します。

接続指向クライアントは、コール マネージャーまたは MCM ドライバーによってアドバタイズされたサービスを使用できる場合、コール マネージャーまたは MCM ドライバーでアドレス ファミリを開くことができます。

コール マネージャーからのアドレス ファミリの登録

ProtocolBindAdapterEx 関数が NdisOpenAdapterEx を使用して基になるミニポート ドライバーにバインドした後、コール マネージャーは NdisCmRegisterAddressFamilyEx を呼び出して、バインディングのアドレス ファミリを登録します (次の図を参照)。

Diagram illustrating the process of registering and opening an address family with a call manager.

NdisCmRegisterAddressFamilyEx への呼び出しは、コール マネージャーの特定のシグナリング サービスをアドバタイズします。 コール マネージャーは、その ProtocolBindAdapterEx 関数が呼び出され、NdisOpenAdapterEx を使用して NIC に正常にバインドされるたびにアドレス ファミリを登録する必要があります。

コール マネージャーは、バインドされたすべてのミニポート ドライバー間で複数のアドレス ファミリをサポートできます。 コール マネージャーは、バインド先の 1 つの NIC で複数のアドレス ファミリをサポートすることもできます。 コール マネージャーは、バインディングの各アドレス ファミリに同じエントリ ポイントを登録する必要があります。 特定のミニポート ドライバーにバインドされているクライアントの特定の種類のアドレス ファミリをサポートできるコール マネージャーは 1 つだけです。 コール マネージャのエントリ ポイントの登録について詳しくは、「CoNDIS 登録」をご覧ください。

MCM ドライバーからのアドレス ファミリの登録

ミニポート ドライバーエントリ ポイントを NdisMRegisterMiniportDriver に登録した後、MCM ドライバーは、MiniportInitializeEx 関数から NdisMCmRegisterAddressFamilyEx を呼び出します。 エントリ ポイントの登録について詳しくは、「CoNDIS 登録」をご覧ください。 MCM ドライバーは、NdisMCmRegisterAddressFamilyEx を 1 回呼び出して、そのサービスを接続指向クライアントにアドバタイズします (次の図を参照)。

Diagram illustrating the process of registering and opening an address family with an MCM driver.

オンボード接続指向のシグナリング サポートを持つ NIC のミニポート ドライバーは、コール マネージャーが使用可能な場合でも、MCM ドライバーとして自身を登録できます。 こうすることで、このような MCM ドライバーは、その NIC のコール マネージャーとしてコール マネージャーを優先します。

アドレス ファミリを開く

Ndis(M)CmRegisterAddressFamily に対するコール マネージャーまたは MCM ドライバーの呼び出しにより、NDIS は (前の 2 つの図に示したように) バインディングの各接続指向クライアントの ProtocolCoAfRegisterNotify 関数を呼び出します。

ProtocolCoAfRegisterNotify は、アドレス ファミリ データを調べて、クライアントがこの特定の CM ドライバーまたは MCM ドライバーのサービスを使用できるかどうかを判断します。 クライアントが (M)CM 提供のアドレス ファミリ データを変更できるかどうかは、コール マネージャーまたは MCM ドライバーの特定のシグナリング プロトコルのサポートによって異なります。

提供されたコール管理サービスが許容可能である場合、ProtocolCoAfRegisterNotify はクライアントに AF 単位のコンテキスト領域を割り当て、NdisClOpenAddressFamilyEx を呼び出 します。 NdisClOpenAddressFamilyEx は、クライアントの接続指向エントリ ポイントを NDIS に登録しません。 NDIS に接続指向のエントリ ポイントを登録する方法の詳細については、「CoNDIS 登録」を参照してください。

NdisClOpenAddressFamilyEx を呼び出すと、(前の 2 つの図で既に示したように) NDIS はコール マネージャーまたは MCM ドライバーの ProtocolCmOpenAf 関数を呼び出します。 ProtocolCmOpenAf は、クライアントが有効なアドレス ファミリで渡され、アドレス ファミリのこのインスタンスを開いているクライアントに代わって操作を実行するために必要なリソースを割り当てて初期化することを確認します。 ProtocolCmOpenAf には、開いているアドレス ファミリのコール マネージャーとクライアントの間の関連付けを表す NDIS 提供の NdisAfHandle も格納されます。

ProtocolCmOpenAf は、同期的または非同期的に完了できます。 非同期的に完了するため、コール マネージャーの ProtocolCmOpenAf 関数は NdisCmOpenAddressFamilyComplete を呼び出します。MCM ドライバーの ProtocolCmOpenAf 関数は、NdisMCmOpenAddressFamilyComplete を呼び出します。 Ndis(M)CmOpenAddressFamilyComplete を呼び出すと、NDIS は、最初に NdisClOpenAddressFamilyEx を呼び出したクライアントの ProtocolOpenAfComplete 関数を呼び出します。

NdisClOpenAddressFamilyEx へのクライアントの呼び出しに成功した場合、NDIS は、開いているアドレス ファミリのコール マネージャーとクライアント間の関連付けを表す NdisAfHandle をクライアントに返します。

クライアントが着信呼び出しを受け入れた場合、通常は、NdisClOpenAddressFamilyEx への正常な呼び出しの後に NdisClRegisterSap を呼び出すことにより、その ProtocolClOpenAfCompleteEx 関数から 1 つ以上の SAP を登録します。

クライアントが発信呼び出しを行った場合、1 つ以上のクライアントが発信呼び出しを行う要求を想定して、ProtocolClOpenAfCompleteEx 関数に 1 つ以上の VC を作成できます。