ネットワーク モジュールのアタッチ

クライアント モジュールプロバイダー モジュールを相互にアタッチする前に、それぞれを NMR に登録する必要があります。 クライアント モジュールは、NmrRegisterClient 関数を呼び出して NMR に登録し、プロバイダー モジュールは、NmrRegisterProvider 関数を呼び出すことによって、NMR に登録します。 以下の図は、ネットワーク モジュールの登録を示しています。

Diagram showing the process of network module registration.

クライアント モジュールとプロバイダー モジュールの両方が、NMR に登録する際に、同じ ネットワーク プログラミング インターフェイス (NPI) を指定する場合、NMR は2 つのネットワーク モジュールのアタッチを開始します。 NMR は、クライアント モジュールの ClientAttachProvider コールバック関数を呼び出してアタッチメント処理を開始します。 以下の図は、ネットワーク モジュール レジストラー (NMR) がアタッチメントを開始する様子を示しています。

Diagram depicting the NMR initiating the attachment process.

クライアント モジュールの ClientAttachProvider コールバック関数は、プロバイダー モジュールの登録データを調べて、プロバイダー モジュールにアタッチするかどうかを決定できます。 クライアント モジュールがプロバイダー モジュールにアタッチすると決定した場合は、NmrClientAttachProvider 関数を呼び出してアタッチメント処理を続行します。 クライアント モジュールが NmrClientAttachProvider 関数を呼び出すと、次に、NMR はプロバイダー モジュールの ProviderAttachClient コールバック関数を呼び出します。 以下の図は、アタッチメントを続行するクライアント モジュールを示しています。

Diagram demonstrating the client module proceeding with the attachment process.

プロバイダー モジュールの ProviderAttachClient コールバック関数は、クライアント モジュールの登録データを調べて、クライアント モジュールにアタッチするかどうかを決定することができます。 プロバイダー モジュールがクライアント モジュールにアタッチすると決定した場合、プロバイダー モジュールとクライアント モジュールは、それぞれの NPI ディスパッチ テーブル構造へのポインターを交換します。 クライアント モジュールとプロバイダー モジュールがアタッチされると、NMR から独立した NPI 関数を通じて相互に作用することができます。 以下の図は、アタッチされているネットワーク モジュールを示しています。

Diagram displaying the attached network modules after successful attachment.