次の方法で共有


NIC アドレスの受信と変換

Windows ソケット スイッチは、SAN サービス プロバイダーおよび SAN NIC と対話するとき、必ず IP アドレスを含む WSK アドレス ファミリを使用します。 スイッチでは、SAN のネイティブ アドレス ファミリは使用されません。 したがって、SAN サービス プロバイダーは、関連付けられたプロキシ ドライバーを使用して、NIC に割り当てられている IP アドレスの一覧を取得する必要があります。 SAN サービス プロバイダーは、プロキシ ドライバーとやり取りときにこれらの IP アドレスを使用します。 プロキシ ドライバーは、IP アドレスとネイティブ アドレスの変換を行う必要があります。

初期化時、プロキシ ドライバーは通常、トランスポート ドライバー インターフェイス (TDI) でアドレス変更通知に登録します。 TCP/IP を含むすべてのプラグ アンド プレイ (PnP) 対応トランスポートは、TDI を通じて、そのような通知に登録されているクライアントにアドレス変更通知を提供します。

TDI は Windows Vista より後の Microsoft Windows バージョンでサポートされません。 代わりに、Windows フィルタリング プラットフォームWinsock カーネルを使用してください。

住所変更通知の登録

初期化時、プロキシ ドライバーは TdiRegisterPnPHandlers 関数を呼び出してアドレス変更通知を登録します。 この呼び出しでは、プロキシ ドライバーは、TDI_CLIENT_INTERFACE_INFO 構造の AddAddressHandlerV2 および DelAddressHandlerV2 メンバーで、アドレスの追加と削除のコールバック関数へのポインターを渡します。 プロキシ ドライバーがこれらの通知を受信するよう登録すると、TDI は、add-address コールバックを使って現在アクティブなすべてのネットワーク アドレスをすぐに示します。

TDI は、プロキシ ドライバーの add-address または delete-address コールバック関数に以下のパラメーターを渡します。

住所
NIC に割り当てられた、または NIC から削除されたネットワーク アドレスを記述する TA_ADDRESS 構造へのポインター。 TCP/IP の場合、このポインターは実際には TA_ADDRESS_IP 構造へのポインターです。

DeviceName
アドレスが関連付けられているトランスポートから NIC へのバインドを識別する Unicode 文字列へのポインター。 TCP/IP の場合、Unicode 文字列の形式は以下のとおりです。

\Device\Tcpip_{NIC-GUID}

ここで、NIC GUID は、ネットワーク構成サブシステムによって NIC に割り当てられるグローバル一意識別子です。

上記の構造定義は、tdi.h ヘッダー ファイルで定義されます。 上記の登録関数とコールバック関数は、tdikrnl.h ヘッダー ファイルで定義されます。 これらのヘッダー ファイルは、Microsoft Windows Driver Development Kit (DDK) と Windows Driver Kit (WDK) で使用できます。 TDI PnP 通知に関する詳細情報は、TDI クライアント コールバックTDI クライアント イベントおよび PnP 通知ハンドラーに含まれています。

TDI は Windows Vista より後の Microsoft Windows バージョンでサポートされません。 代わりに、Windows フィルタリング プラットフォームWinsock カーネルを使用してください。

IP アドレスのリストの管理

SAN サービス プロバイダーのプロキシ ドライバーは、add-address 通知と delete-address 通知を使用して、各 NIC に割り当てられた IP アドレスのリストをその制御下に維持します。 プロキシ ドライバーは、このリストを使用して、TCP/IP トランスポートによって SAN NIC に割り当てられた 1 つ以上の IP アドレスとネイティブ SAN アドレスの変換を行います。 さらに、プロキシ ドライバーは、スイッチが SIO_ADDRESS_LIST_QUERY コントロール コード クエリを実行するたびに、Windows ソケット スイッチで NIC に割り当てられている IP アドレスのリストを使用できるようにするデバイス制御ルーチンも提供する必要があります。 プロキシ ドライバーの DriverEntry ルーチンは、このデバイス制御ルーチンのエントリ ポイントを指定する必要があります。

Windows ソケット スイッチには、各 SAN NIC に割り当てられているすべての IP アドレスのリストが維持されます。 この包括リストの IP アドレスを取得するため、スイッチは各 SAN サービス プロバイダーの WSPIoctl 関数を呼び出し、SIO_ADDRESS_LIST_QUERY 制御コードを渡します。 同様に、各 SAN サービス プロバイダーは、関連するプロキシ ドライバーに対して、SAN NIC に割り当てられている個々の IP アドレスのリストを照会します。 アドレスの変更がスイッチに通知されると、各 SAN サービス プロバイダーに対して、各リストの更新を再度照会します。