Share via


Uso de SIO_ADDRESS_LIST_SORT

El SIO_ADDRESS_LIST_SORT IOCTL permite a los desarrolladores de aplicaciones ordenar una lista de direcciones de destino IPv6 e IPv4 para determinar la mejor dirección disponible para realizar una conexión. El SIO_ADDRESS_LIST_SORT IOCTL se admite en Windows XP y versiones posteriores.

En Windows Vista y versiones posteriores, la función CreateSortedAddressPairs toma una lista proporcionada de posibles direcciones de destino IP, empareja las direcciones de destino con las direcciones IP locales del equipo host y ordena los pares según qué par de direcciones es más adecuado para la comunicación entre los dos pares. La función CreateSortedAddressPairs debe usarse en lugar de la SIO_ADDRESS_LIST_SORT IOCTL en Windows Vista y versiones posteriores.

En las secciones siguientes se describen las consideraciones de uso para SIO_ADDRESS_LIST_SORT.

Parámetros

El búfer pasado a SIO_ADDRESS_LIST_SORT es una estructura de SOCKET_ADDRESS_LIST . Cada SOCKET_ADDRESS de la lista debe estar en formato SOCKADDR_IN6.

El SIO_ADDRESS_LIST_SORT IOCTL ordena las direcciones IPv6 e IPv4 en Windows Vista y versiones posteriores. Las direcciones IPv4 de la lista que se van a ordenar deben estar en el formato de dirección IPv4 asignado a IPv6. Para obtener más información sobre el formato de dirección IPv4 asignado a IPv6, consulte Sockets de doble pila.

En Windows Server 2003 y Windows XP, SIO_ADDRESS_LIST_SORT ordena solo las direcciones IPv6. No se admiten las direcciones IPv4 en el formato de dirección IPv6 asignada por IPv4.

En la salida, el miembro iAddressCount de la estructura SOCKET_ADDRESS_LIST puede ser menor que en la entrada si el código IOCTL determina que algunas direcciones de destino no son válidas.

Determinación de ordenación

El criterio de ordenación de las direcciones IPv6 para el SIO_ADDRESS_LIST_SORT IOCTL se basa en la tabla de directivas de prefijo. La tabla de directivas de prefijo se configura mediante la utilidad de línea de comandos Netsh.exe . Los siguientes fragmentos de código de línea de comandos muestran los comandos básicos de configuración de la tabla de directivas deNetsh.exeprefijo:

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

Nota

En Windows Server 2003 y Windows XP, el primer comando netsh enumerado anteriormente era el siguiente. Todos los demás comandos relacionados son los mismos.

 

netsh interface ipv6 show prefixpolicy

La ordenación de direcciones también viene determinada por un algoritmo descrito en rfC 3484 en la selección de direcciones predeterminada para el protocolo de Internet versión 6 (IPv6) publicada por el IETF. Para obtener más información, vea https://www.ietf.org/rfc/rfc3484.txt. (Este recurso solo puede estar disponible en inglés).

El SIO_ADDRESS_LIST_SORT IOCTL ordena las direcciones de mejor a peor y rellena sin6_scope_id miembros, si es necesario. En el caso de las direcciones locales del sitio, SIO_ADDRESS_LIST_SORT rellena el identificador de ámbito o quita la dirección.

El SIO_ADDRESS_LIST_SORT IOCTL omite la dirección de origen enlazada al socket y solo ordena por la lista de direcciones de destino que se pasa como parámetro.

La función CreateSortedAddressPairs debe usarse en lugar de la SIO_ADDRESS_LIST_SORT IOCTL en Windows Vista y versiones posteriores. La función CreateSortedAddressPairs devuelve una lista de pares de direcciones que contiene una dirección de origen local y una dirección de destino. Esto proporciona a una aplicación la dirección de origen correcta que se va a usar para cada dirección de destino. Una aplicación también puede filtrar los resultados buscando una dirección de origen específica. en los resultados.

Requisitos

El SIO_ADDRESS_LIST_SORT IOCTL se define en el archivo de encabezado Winsock2.h . En el Kit de desarrollo de software (SDK) de Microsoft Windows publicado para Windows Vista y versiones posteriores, la organización de archivos de encabezado ha cambiado y SIO_ADDRESS_LIST_SORT IOCTL se define en el archivo de encabezado Ws2def.h . Tenga en cuenta que el archivo de encabezado Ws2def.h se incluye automáticamente en Winsock2.h y nunca se debe usar directamente.

El SIO_ADDRESS_LIST_SORT IOCTL se admite en Windows XP y versiones posteriores.

CreateSortedAddressPairs