Configuración e instalación de transporte
Para que un protocolo de transporte sea accesible a través de Windows Sockets, debe estar instalado correctamente en el sistema y registrado con Windows Sockets. Cuando se instala un proveedor de servicios de transporte invocando el programa de instalación de un proveedor, la información de configuración debe agregarse a una base de datos de configuración para proporcionar a la Ws2_32.dll información necesaria sobre el proveedor de servicios. El Ws2_32.dll exporta varias funciones de instalación, WSCInstallProvider y WSCInstallProviderAndChains, para que el programa de instalación del proveedor proporcione la información pertinente sobre el proveedor de servicios que se va a instalar. Esta información incluye, por ejemplo, el nombre y la ruta de acceso al archivo DLL del proveedor de servicios y una lista de WSAPROTOCOL_INFO estructuras que este proveedor puede admitir. El Ws2_32.dll también proporciona una función, WSCDeinstallProvider, para que el programa de desinstalación de un proveedor quite toda la información pertinente de la base de datos de configuración mantenida por el Ws2_32.dll. La ubicación y el formato exactos de esta información de configuración son privados para el Ws2_32.dll y solo las funciones mencionadas anteriormente pueden manipularla.
En plataformas de 64 bits, hay funciones similares que funcionan en catálogos de 32 y 64 bits. Estas funciones incluyen WSCInstallProvider64_32, WSCInstallProviderAndChains64_32 y WSCDeinstallProvider32.
El orden en que los proveedores de servicios de transporte se instalan inicialmente rige el orden en el que se enumeran a través de WSCEnumProtocols y WSCEnumProtocols32 en la interfaz del proveedor de servicios, o a través de WSAEnumProtocols en la interfaz de la aplicación. Lo más importante es que este orden también rige el orden en el que se consideran protocolos y proveedores de servicios cuando un cliente solicita la creación de un socket en función de su familia de direcciones, tipo e identificador de protocolo. Windows Sockets 2 incluye un applet llamado Sporder.exe que permite que el catálogo de protocolos instalados se reordene de forma interactiva después de que ya se hayan instalado los protocolos. Windows Sockets 2 también incluye un archivo DLL auxiliar, Sporder.dll, que exporta una interfaz de procedimientos para reordenar protocolos. Esta interfaz de procedimiento consta de un único procedimiento denominado WSCWriteProviderOrder.
Instalación de protocolos superpuestas y cadenas de protocolos
La estructura WSAPROTOCOL_INFO proporcionada con cada protocolo que se va a instalar indica si el protocolo es un protocolo base, un protocolo en capas o una cadena de protocolos. El valor del parámetro ProtocolChain.ChainLen se interpreta como se muestra en la tabla siguiente.
Valor | Significado |
---|---|
0 | Protocolo superpuesta. |
1 | Protocolo base (o cadena con un solo componente). |
>1 | Cadena de protocolos. |
La instalación de cadenas de protocolo solo puede producirse después de una instalación correcta de todos los componentes constituyentes (protocolos base y protocolos superpuestas). La estructura WSAPROTOCOL_INFO de una cadena de protocolos usa el parámetro ProtocolChain para describir la longitud de la cadena y la identidad de cada componente. Los protocolos individuales que componen una cadena se enumeran en orden en la matriz ProtocolChain.ChainEntries, con el elemento cero de la matriz correspondiente al primer proveedor en capas. Los protocolos se identifican mediante sus valores CatalogEntryID , asignados por el Ws2_32.dll en el momento de la instalación del protocolo, y se pueden encontrar en la estructura de WSAPROTOCOL_INFO para cada protocolo.
Los valores de los parámetros restantes de la estructura WSAPROTOCOL_INFO de la cadena de protocolos deben elegirse para reflejar los atributos e identificadores que mejor caracterizan la cadena de protocolos en su conjunto. Al seleccionar estos valores, los desarrolladores deben tener en cuenta que las comunicaciones a través de cadenas de protocolo solo pueden producirse cuando ambos puntos de conexión tienen instaladas cadenas de protocolo compatibles y que las aplicaciones deben poder reconocer la estructura de WSAPROTOCOL_INFO correspondiente.
Cuando se instala un protocolo base, no es necesario realizar ninguna entrada en la matriz ProtocolChain.ChainEntries . Se entiende implícitamente que el único componente de esta cadena ya se identifica en el parámetro CatalogEntryID de la misma estructura WSAPROTOCOL_INFO . Tenga en cuenta también que es posible que las cadenas de protocolo no incluyan varias instancias del mismo protocolo en capas.