Compartilhar via


Configuração e instalação de transporte

Para que um protocolo de transporte seja acessível por meio de Soquetes do Windows, ele deve ser instalado corretamente no sistema e registrado com o Windows Sockets. Quando um provedor de serviços de transporte é instalado invocando o programa de instalação de um fornecedor, as informações de configuração devem ser adicionadas a um banco de dados de configuração para fornecer ao Ws2_32.dll informações necessárias sobre o provedor de serviços. O Ws2_32.dll exporta várias funções de instalação, WSCInstallProvider e WSCInstallProviderAndChains, para que o programa de instalação do fornecedor forneça as informações relevantes sobre o provedor de serviço a ser instalado. Essas informações incluem, por exemplo, o nome e o caminho para a DLL do provedor de serviços e uma lista de estruturas de WSAPROTOCOL_INFO que esse provedor pode dar suporte. O Ws2_32.dll também fornece uma função, WSCDeinstallProvider, para que o programa de desinstalação de um fornecedor remova todas as informações relevantes do banco de dados de configuração mantido pelo Ws2_32.dll. O local exato e o formato dessas informações de configuração são privados para o Ws2_32.dlle só podem ser manipulados pelas funções mencionadas acima.

Em plataformas de 64 bits, há funções semelhantes que operam em catálogos de 32 bits e 64 bits. Essas funções incluem WSCInstallProvider64_32, WSCInstallProviderAndChains64_32e WSCDeinstallProvider32.

A ordem na qual os provedores de serviços de transporte são inicialmente instalados rege a ordem na qual eles são enumerados por meio de WSCEnumProtocols e WSCEnumProtocols32 na interface do provedor de serviços ou por meio de WSAEnumProtocols na interface do aplicativo. Mais importante, essa ordem também rege a ordem na qual os protocolos e provedores de serviços são considerados quando um cliente solicita a criação de um soquete com base em sua família de endereços, tipo e identificador de protocolo. O Windows Sockets 2 inclui um applet chamado Sporder.exe que permite que o catálogo de protocolos instalados seja reordenado interativamente após a instalação dos protocolos. O Windows Sockets 2 também inclui uma DLL auxiliar, Sporder.dll, que exporta uma interface de procedimento para reordenar protocolos. Essa interface de procedimento consiste em um único procedimento chamado WSCWriteProviderOrder.

Instalando protocolos em camadas e cadeias de protocolo

A estrutura WSAPROTOCOL_INFO fornecida com cada protocolo a ser instalado indica se o protocolo é um protocolo base, protocolo em camadas ou cadeia de protocolo. O valor do parâmetro ProtocolChain.ChainLen é interpretado conforme mostrado na tabela a seguir.

Valor Significado
0 Protocolo em camadas.
1 Protocolo base (ou cadeia com apenas um componente).
>1 Cadeia de protocolos.

 

A instalação de cadeias de protocolo só pode ocorrer após a instalação bem-sucedida de todos os componentes constituintes (protocolos base e protocolos em camadas). A estrutura WSAPROTOCOL_INFO para uma cadeia de protocolos usa o parâmetro ProtocolChain para descrever o comprimento da cadeia e a identidade de cada componente. Os protocolos individuais que compõem uma cadeia são listados em ordem na matriz ProtocolChain.ChainEntries, com o elemento zero da matriz correspondente ao primeiro provedor em camadas. Os protocolos são identificados por seus valores CatalogEntryID, que são atribuídos pelo Ws2_32.dll no momento da instalação do protocolo e podem ser encontrados na estrutura WSAPROTOCOL_INFO para cada protocolo.

Os valores dos parâmetros restantes na estrutura de WSAPROTOCOL_INFO da cadeia de protocolo devem ser escolhidos para refletir os atributos e identificadores que melhor caracterizam a cadeia de protocolo como um todo. Ao selecionar esses valores, os desenvolvedores devem ter em mente que as comunicações sobre cadeias de protocolo só podem ocorrer quando ambos os pontos de extremidade têm cadeias de protocolo compatíveis instaladas e que os aplicativos devem ser capazes de reconhecer a estrutura de WSAPROTOCOL_INFO correspondente.

Quando um protocolo base é instalado, não é necessário fazer nenhuma entrada no ProtocolChain.ChainEntries matriz. Entende-se implicitamente que o único componente dessa cadeia já está identificado no parâmetro CatalogEntryID da mesma estrutura de WSAPROTOCOL_INFO. Observe também que as cadeias de protocolo podem não incluir várias instâncias do mesmo protocolo em camadas.