次の方法で共有


ネットワーク プログラミング インターフェイス

ネットワーク プログラミング インターフェイス (NPI) は、相互に接続できるネットワーク モジュール間のインターフェイスを定義します。 特定の NPI のクライアントとして登録されているクライアント モジュール は、同じ NPI のプロバイダーとして登録されているプロバイダー モジュール にのみアタッチできます。 同様に、特定の NPI のプロバイダーとして登録されているプロバイダー モジュールは、同じ NPI のクライアントとして登録されているクライアント モジュールにのみアタッチできます。

各 NPI は、次の項目を定義します。

  • NPI を一意に識別する NPI 識別子。 ネットワーク モジュールは、ネットワーク モジュールがネットワーク モジュール レジストラー (NMR) に自身を登録するときにサポートする特定の NPI を示す NPI 識別子を指定します。 ネットワーク モジュールは、サポートする NPI ごとに 1 回ずつ、自身をNMR に複数回登録することで、複数の NPI をサポートできます。 NMR は、クライアント モジュールとプロバイダー モジュールの両方が同じ NPI をサポートしている場合にのみ、クライアント モジュールをプロバイダー モジュールに接続する処理を開始します。

  • クライアント モジュールの NPI 固有の特性を指定するオプションのクライアント特性構造体。 このような NPI 固有の特性には、クライアント モジュールがサポートする NPI のバージョン (またはバージョン) や、クライアント モジュールで必要なアドレス ファミリまたはプロトコルなどの項目が含まれる場合があります。 プロバイダー モジュールは、クライアント モジュールのクライアント特性構造に含まれる情報を使用して、クライアント モジュールにアタッチするかどうかを判断できます。 NPI で NPI 固有のクライアント特性が定義されていない場合、この構造体は必要ありません。

  • プロバイダー モジュールの NPI 固有の特性を指定するオプションのプロバイダー特性構造体。 このような NPI 固有の特性には、プロバイダー モジュールがサポートする NPI のバージョン (またはバージョン) や、プロバイダー モジュールがサポートするアドレス ファミリまたはプロトコルなどの項目が含まれる場合があります。 クライアント モジュールは、プロバイダー モジュールのクライアント特性構造に含まれる情報を使用して、プロバイダー モジュールにアタッチするかどうかを判断できます。 NPI で NPI 固有のプロバイダー特性が定義されていない場合、この構造体は必要ありません。

  • 0 個以上のクライアントモジュールのコールバック関数。 プロバイダー モジュールがクライアント モジュールに正常にアタッチされると、プロバイダー モジュールはクライアント モジュールのコールバック関数を呼び出すことによって、クライアント モジュールの機能にアクセスできます。

  • 1 つ以上のプロバイダー モジュール関数。 クライアント モジュールがプロバイダー モジュールに正常にアタッチされると、クライアント モジュールはプロバイダー モジュールの関数を呼び出すことによってプロバイダー モジュールの機能にアクセスできます。

  • 各クライアント モジュールコールバック関数への関数ポインターを含むクライアント ディスパッチ テーブル 構造体。 NPI でクライアント モジュールコールバック関数が定義されていない場合、この構造体は必要ありません。

  • 各プロバイダー モジュール関数への関数ポインターを含むプロバイダー ディスパッチ テーブル 構造体。

特定の NPI をサポートするクライアント モジュールは、NPI によって定義された項目を使用して、インターフェイスのクライアント側を実装します。 同様に、特定の NPI をサポートするプロバイダー モジュールは、NPI によって定義された項目を使用して、インターフェイスのプロバイダー側を実装します。

NPI で定義されているすべての項目は、NPI 識別子を除き、NMR に対して不透明です。 NMR は NPI 識別子を使用して、どのクライアント モジュールをどのプロバイダー モジュールにアタッチするかを決定します。