Compartilhar via


função WSCInstallProvider64_32 (ws2spi.h)

[**WSCInstallProvider64_32** não está mais disponível para uso a partir do Windows Vista. Em vez disso, use WSCInstallProvider ou WSCInstallProviderAndChains.]

A função WSCInstallProvider64_32 instala o provedor de serviços de transporte especificado nos bancos de dados de configuração do sistema de 32 e 64 bits em um computador de 64 bits.

Sintaxe

int WSCInstallProvider64_32(
  [in]  LPGUID                    lpProviderId,
  [in]  const WCHAR               *lpszProviderDllPath,
  [in]  const LPWSAPROTOCOL_INFOW lpProtocolInfoList,
  [in]  DWORD                     dwNumberOfEntries,
  [out] LPINT                     lpErrno
);

Parâmetros

[in] lpProviderId

Um ponteiro para um GUID (identificador global exclusivo) para o provedor.

[in] lpszProviderDllPath

Um ponteiro para uma cadeia de caracteres Unicode que contém o caminho de carga para a DLL de 64 bits do provedor. Essa cadeia de caracteres observa as regras usuais para resolução de caminho e pode conter cadeias de caracteres de ambiente inseridas (como %SystemRoot%). Essas cadeias de caracteres de ambiente são expandidas quando o Ws2_32.dll deve carregar posteriormente a DLL do provedor em nome de um aplicativo. Depois que as cadeias de caracteres de ambiente inseridas são expandidas, o Ws2_32.dll passa a cadeia de caracteres resultante para a função LoadLibrary que carrega o provedor na memória. Para obter mais informações, consulte LoadLibrary.

[in] lpProtocolInfoList

Um ponteiro para uma matriz de estruturas WSAProtocol_Info . Cada estrutura define um protocolo, família de endereços e tipo de soquete com suporte do provedor.

[in] dwNumberOfEntries

O número de entradas na matriz lpProtocolInfoList .

[out] lpErrno

Um ponteiro para o código de erro se a função falhar.

Retornar valor

Se WSCInstallProvider64_32 for bem-sucedido, ele retornará zero. Caso contrário, ele retornará SOCKET_ERROR e um código de erro específico será retornado no parâmetro lpErrno .

Código do erro Significado
WSAEFAULT
Um ou mais argumentos não estão em uma parte válida do espaço de endereço do usuário.
WSAEINVAL
Um ou mais argumentos são inválidos.
WSAENOBUFS
Não foi possível alocar memória para buffers.
WSANO_RECOVERY
Ocorreu um erro não recuperável. Esse erro é retornado sob várias condições, incluindo o seguinte: o provedor já está instalado, o usuário não tem os privilégios administrativos necessários para gravar no registro winsock ou ocorreu uma falha ao criar ou instalar uma entrada de catálogo.
WSASYSCALLFAILURE
Falha em uma chamada do sistema que nunca deve falhar.
WSA_NOT_ENOUGH_MEMORY
Memória insuficiente disponível. Esse erro é retornado quando não há memória suficiente para alocar uma nova entrada de catálogo.

Comentários

WSCInstallProvider64_32 é uma versão básica da função WSCInstallProviderAndChains64_32 que instala apenas um único provedor de serviços de transporte. WSCInstallProvider64_32 pode ser usado para instalar um protocolo base, um protocolo em camadas ou uma cadeia de protocolo. Se um provedor de serviços em camadas estiver sendo instalado, WSCInstallProviderAndChains64_32 deverá ser usado porque essa função permite que um protocolo em camadas e uma ou mais cadeias de protocolo sejam instalados com uma única chamada de função. Para realizar o mesmo trabalho usando WSCInstallProvider64_32 exigiria várias chamadas de função para instalar cada componente do provedor de serviços.

O Windows Sockets (Winsock) 2 acomoda a noção de um protocolo em camadas. Um protocolo em camadas é aquele que implementa apenas funções de comunicação de nível mais alto, ao mesmo tempo em que depende de uma pilha de transporte subjacente para a troca real de dados com um ponto de extremidade remoto. Um exemplo de um protocolo em camadas seria uma camada de segurança que adiciona um protocolo ao processo de estabelecimento de conexão para executar a autenticação e estabelecer um esquema de criptografia mutuamente acordado. Esse protocolo de segurança geralmente exigiria os serviços de um protocolo de transporte confiável subjacente, como TCP ou SPX. O termo protocolo base refere-se a um protocolo como TCP ou SPX que é totalmente capaz de executar comunicações de dados com um ponto de extremidade remoto. O termo protocolo em camadas é usado para descrever um protocolo que não pode ficar sozinho. Uma cadeia de protocolos seria definida como um ou mais protocolos em camadas amarrados e ancorados por um protocolo base. Um protocolo base tem o membro ChainLen da estrutura WSAProtocol_Info definido como BASE_PROTOCOL que é definido como 1. Um protocolo em camadas tem o membro ChainLen da estrutura WSAPROTOCOL_INFO definido como LAYERED_PROTOCOL que é definido como zero. Uma cadeia de protocolos tem o membro ChainLen da estrutura WSAPROTOCOL_INFO definido como maior que 1.

WSCInstallProvider64_32 é a versão de 64 bits do WSCInstallProvider que instala o provedor nos catálogos de 32 e 64 bits em plataformas de 64 bits. Ou seja, em plataformas de 64 bits, dois catálogos winsock são mantidos e os processos de 32 e 64 bits são capazes de carregar o provedor de transporte instalado com essa função. Em plataformas de 64 bits, o WSCInstallProvider é instalado somente no catálogo winsock de 64 bits.

Em um computador de 64 bits, todas as chamadas não projetadas especificamente para 32 bits (por exemplo, todas as funções que não terminam em "32") operam no catálogo nativo de 64 bits. Os processos executados em um computador de 64 bits devem usar WSCInstallProvider64_32 para operar no catálogo de 32 bits, bem como no catálogo de 64 bits, preservando a compatibilidade. As definições e a semântica das chamadas específicas de 32 bits são as mesmas que suas contrapartes nativas.

Essa rotina cria as informações de configuração comuns do Winsock 2 necessárias para o provedor especificado. É aplicável a protocolos base, protocolos em camadas e cadeias de protocolo.

O parâmetro lpProtocolInfoList contém uma lista de entradas de protocolo a serem instaladas. Os chamadores de WSCInstallProvider64_32 são responsáveis por configurar as entradas de protocolo adequadas. O parâmetro lpProtocolInfoList não deve ser NULL.

Depois que essa rotina for concluída com êxito, as informações de protocolo fornecidas em lpProtocolInfoList serão retornadas por WSAEnumProtocols, WSCEnumProtocols ou WSCEnumProtocols32. Lembre-se de que, no Windows, somente as instâncias do Ws2_32.dll criadas chamando WSAStartup após uma conclusão bem-sucedida dessa função incluirão as novas entradas em WSAEnumProtocols, WSCEnumProtocols e WSCEnumProtocols32.

Nota A função WSAEnumProtocols não enumera uma entrada de protocolo em camadas enquanto WSCEnumProtocols e WSCEnumProtocols32 fazem.

 

Em caso de êxito, WSCInstallProvider64_32 tentará alertar todos os aplicativos interessados que se registraram para notificação da alteração chamando WSAProviderConfigChange.

A função WSCInstallProvider64_32 só pode ser chamada por um usuário conectado como membro do grupo Administradores. Se WSCInstallProvider64_32 for chamado por um usuário que não seja membro do grupo Administradores, a chamada de função falhará e WSANO_RECOVERY será retornado no parâmetro lpErrno . Para computadores que executam o Windows Vista ou o Windows Server 2008, essa função também pode falhar devido ao UAC (controle de conta de usuário). Se um aplicativo que contém essa função for executado por um usuário conectado como um membro do grupo Administradores diferente do Administrador interno, essa chamada falhará, a menos que o aplicativo tenha sido marcado no arquivo de manifesto com um requestedExecutionLevel definido como requireAdministrator. Se o aplicativo no Windows Vista ou no Windows Server 2008 não tiver esse arquivo de manifesto, um usuário conectado como membro do grupo Administradores que não seja o Administrador interno deverá executar o aplicativo em um shell aprimorado como administrador interno (administrador RunAs) para que essa função tenha êxito.

Qualquer instalação de arquivo ou configuração específica do provedor de serviços deve ser executada pelo aplicativo de chamada.

Se a função WSCInstallProvider ou WSCInstallProviderAndChains for usada, a função deverá ser chamada uma vez para instalar o provedor no catálogo de 32 bits e uma vez para instalar o provedor no catálogo de 64 bits em uma plataforma de 64 bits.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP Professional x64 Edition [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 x64 Edition [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ws2spi.h
Biblioteca Ws2_32.lib
DLL Ws2_32.dll

Confira também

LoadLibrary

Configuração e instalação do transporte

Provedores de Serviços de Transporte

Wsaenumprotocols

WSAProviderConfigChange

Wsastartup

WSCDeinstallProvider32

WSCEnumProtocols

WSCEnumProtocols32

WSCInstallProvider

WSCInstallProviderAndChains

WSCInstallProviderAndChains64_32