SIO_ADDRESS_LIST_SORTの使用
SIO_ADDRESS_LIST_SORT IOCTL を使用すると、アプリケーション開発者は IPv6 と IPv4 の宛先アドレスの一覧を並べ替えて、接続に最適なアドレスを決定できます。 SIO_ADDRESS_LIST_SORT IOCTL は、Windows XP 以降でサポートされています。
Windows Vista 以降では、 CreateSortedAddressPairs 関数は、指定された潜在的な IP 宛先アドレスの一覧を取得し、宛先アドレスとホスト マシンのローカル IP アドレスをペアにし、2 つのピア間の通信に最適なアドレス ペアに従ってペアを並べ替えます。 Windows Vista 以降の IOCTL SIO_ADDRESS_LIST_SORTの代わりに、CreateSortedAddressPairs 関数を使用する必要があります。
次のセクションでは、 SIO_ADDRESS_LIST_SORTの使用に関する考慮事項について説明します。
パラメーター
SIO_ADDRESS_LIST_SORTに渡されるバッファーは、SOCKET_ADDRESS_LIST構造体です。 リスト内の各 SOCKET_ADDRESS は、SOCKADDR_IN6形式である必要があります。
SIO_ADDRESS_LIST_SORT IOCTL は、Windows Vista 以降の IPv6 アドレスと IPv4 アドレスの両方を並べ替えます。 並べ替えるリスト内の IPv4 アドレスは、IPv4 マップの IPv6 アドレス形式である必要があります。 IPv4 マップ IPv6 アドレス形式の詳細については、「 デュアル スタック ソケット」を参照してください。
Windows Server 2003 および Windows XP では、 SIO_ADDRESS_LIST_SORT は IPv6 アドレスのみを並べ替えます。 IPv4 マップ IPv6 アドレス形式の IPv4 アドレスはサポートされていません。
出力時に、IOCTL コードが一部の宛先アドレスが無効であると判断した場合、SOCKET_ADDRESS_LIST構造体の iAddressCount メンバーが入力時よりも小さい場合があります。
並べ替えの決定
SIO_ADDRESS_LIST_SORT IOCTL の IPv6 アドレスの並べ替え順序は、プレフィックス ポリシー テーブルに基づいています。 プレフィックス ポリシー テーブルは、 Netsh.exe コマンド ライン ユーティリティを使用して構成されます。 次のコマンド ライン スニペットは、基本的な Netsh.exe プレフィックス ポリシー テーブル構成コマンドを示しています。
netsh interface ipv6 show prefixpolicies
netsh interface ipv6 add prefixpolicy ::/96 3 4
netsh interface ipv6 delete prefixpolicy ::/96
netsh interface ipv6 set prefixpolicy ::/96 3 4
注意
Windows Server 2003 および Windows XP では、上記の最初の netsh コマンドは次のとおりです。 その他の関連コマンドはすべて同じです。
netsh interface ipv6 show prefixpolicy
アドレスの順序付けは、IETF によって公開されている インターネット プロトコル バージョン 6 (IPv6) の既定のアドレス選択 に関する RFC 3484 に記載されているアルゴリズムによっても決定されます。 詳細については、「https://www.ietf.org/rfc/rfc3484.txt」を参照してください。 (このリソースは英語でのみ使用できます)。
SIO_ADDRESS_LIST_SORT IOCTL は、アドレスを最適から最悪の状態に並べ替え、必要に応じてメンバー sin6_scope_id入力します。 サイト ローカル アドレスの場合、SIO_ADDRESS_LIST_SORTは scope-id を入力するか、アドレスを削除します。
SIO_ADDRESS_LIST_SORT IOCTL は、ソケットにバインドされているソース アドレスを無視し、パラメーターとして渡された宛先アドレス一覧でのみ並べ替えます。
Windows Vista 以降の IOCTL SIO_ADDRESS_LIST_SORTの代わりに、CreateSortedAddressPairs 関数を使用する必要があります。 CreateSortedAddressPairs 関数は、ローカル ソース アドレスと宛先アドレスを含むアドレス ペアの一覧を返します。 これにより、各宛先アドレスに使用する正しいソース アドレスがアプリケーションに提供されます。 アプリケーションでは、特定のソース アドレスを探して結果をフィルター処理することもできます。 結果に含まれます。
要件
SIO_ADDRESS_LIST_SORT IOCTL は Winsock2.h ヘッダー ファイルで定義されます。 Windows Vista 以降用にリリースされた Microsoft Windows ソフトウェア開発キット (SDK) では、ヘッダー ファイルのorganizationが変更され、IOCTL SIO_ADDRESS_LIST_SORT Ws2def.h ヘッダー ファイルで定義されています。 Ws2def.h ヘッダー ファイルは Winsock2.h に自動的に含まれるので、直接使用しないでください。
SIO_ADDRESS_LIST_SORT IOCTL は、Windows XP 以降でサポートされています。
関連トピック