Provedores de Serviços de Namespace

Um provedor de namespace implementa um mapeamento de interface entre o SPI do namespace Winsock e a interface programática nativa de um serviço de nome existente, como DNS, X.500 ou NDS (NetWare Directory Services). Embora um provedor de namespace dê suporte a exatamente um namespace, é possível que vários provedores para um determinado namespace sejam instalados. Também é possível que uma única DLL crie uma instância de vários provedores de namespace. À medida que os provedores de namespace são instalados, um catálogo de estruturas de WSANAMESPACE_INFO é mantido. Um aplicativo pode usar WSAEnumNameSpaceProviders para descobrir quais namespaces têm suporte em um computador.

No Windows Vista e posterior, uma estrutura de WSANAMESPACE_INFOEX aprimorada e a função WSAEnumNameSpaceProvidersEx são fornecidas.

Em plataformas de 64 bits, funções WSCEnumNameSpaceProviders32 e WSCEnumNameSpaceProvidersEx32 semelhantes são fornecidas para enumerar o catálogo de 32 bits.

Consulte Requisitos do Provedor de Serviços de Namespace winsock para obter informações detalhadas.

Provedores de serviços GetXbyY herdados

O Windows Sockets 2 dá suporte total às instalações de resolução de nomes específicas de TCP/IP encontradas no Windows Sockets versão 1.1. Ele faz isso incluindo o conjunto de funções GetXbyY no SPI. No entanto, o tratamento desse conjunto de funções é um pouco diferente do restante das funções SPI. As funções GetXbyY que aparecem no SPI são precedidas de GETXBYYSP_ e são resumidas na tabela a seguir.

Funções de estilo Berkeley

Nome da função SPI Descrição
GETXBYYSP_gethostbyaddr Fornece uma estrutura de hostent para o endereço de host especificado.
GETXBYYSP_gethostbyname Fornece uma estrutura de hostent para o nome do host especificado.
GETXBYYSP_getprotobyname Fornece uma estrutura protoente para o nome do protocolo especificado.
GETXBYYSP_getprotobynumber Fornece uma estrutura protoente para o número de protocolo especificado.
GETXBYYSP_getservbyname Fornece uma estrutura servent para o serviço nam.e especificado
GETXBYYSP_getservbyport Fornece uma estrutura de servent para o serviço na porta especificada.
GETXBYYSP_gethostname Retorna o nome do host padrão para o computador local.

 

Funções de estilo assíncrono

Nome da função SPI Descrição
GETXBYYSP_WSAAsyncGetHostByAddr Fornece uma estrutura de hostent para o endereço de host especificado.
GETXBYYSP_WSAAsyncGetHostByName Fornece uma estrutura de hostent para o nome do host especificado.
GETXBYYSP_WSAAsyncGetProtoByName Fornece uma estrutura protoente para o nome do protocolo especificado.
GETXBYYSP_WSAAsyncGetProtoByNumber Fornece uma estrutura protoente para o número de protocolo especificado.
GETXBYYSP_WSAAsyncGetServByName Fornece uma estrutura servent para o nome do serviço especificado.
GETXBYYSP_WSAAsyncGetServByPort Fornece uma estrutura de servent para o serviço na porta especificada.
GETXBYYSP_WSACancelAsyncRequest Cancela uma operação GetXbyY assíncrona.

 

A sintaxe e a semântica dessas funções GetXbyY no SPI são exatamente iguais às documentadas na Especificação da API e, portanto, não são repetidas aqui.

A DLL do Windows Sockets 2 permite que exatamente um provedor de serviços ofereça esses serviços. Portanto, não é necessário incluir ponteiros para essas funções na tabela de procedimentos recebida de provedores de serviços na inicialização. Em ambientes Windows, o caminho para a DLL que implementa essas funções é recuperado do valor encontrado no caminho do Registro a seguir. Essa entrada do Registro não existe por padrão:

HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Serviços\Winsock2\Parâmetros\GetXByYLibraryPath

Built-In provedor de serviços GetXbyY padrão

Um provedor de serviços GetXbyY padrão é integrado aos componentes de tempo de execução padrão do Windows Sockets 2. Esse provedor padrão implementa todas as funções acima, portanto, não é necessário que essas funções sejam implementadas por nenhum provedor de namespace. No entanto, um provedor de namespace é livre para fornecer qualquer ou todas essas funções (e, portanto, substituir os padrões) simplesmente armazenando a cadeia de caracteres que é o caminho para a DLL que implementa essas funções na chave do Registro indicada. Qualquer uma das funções GetXbyY não exportadas pela DLL do provedor nomeado será fornecida por meio dos padrões internos. Observe, no entanto, que se um provedor optar por fornecer qualquer uma das versões assíncronas das funções GetXbyY , ele deverá fornecer todas as funções assíncronas para que a operação de cancelamento funcione adequadamente.

A implementação atual do provedor de serviços GetXbyY padrão reside no Wsock32.dll. Dependendo de como as configurações de TCP/IP foram estabelecidas por meio de Painel de Controle, a resolução de nomes ocorrerá usando arquivos DNS ou host local. Quando o DNS é usado, o provedor de serviços GetXbyY padrão usa chamadas à API padrão do Windows Sockets 1.1 para se comunicar com o servidor DNS. Essas transações ocorrerão usando qualquer pilha TCP/IP configurada como a pilha TCP/IP padrão. Dois casos especiais, no entanto, merecem menção especiais.

A implementação padrão de GETXBYYSP_gethostname obtém o nome do host local do registro. Isso corresponderá ao nome atribuído a "Meu Computador". A implementação padrão de GETXBYYSP_gethostbyname e GETXBYYSP_WSAAsyncGetHostByName sempre compara o nome do host fornecido com o nome do host local. Se corresponderem, a implementação padrão usará uma interface privada para investigar a pilha TCP/IP da Microsoft para descobrir seu endereço IP local. Portanto, para ser completamente independente da pilha TCP/IP da Microsoft, um provedor de namespace deve implementar GETXBYYSP_gethostbyname e GETXBYYSP_WSAAsyncGetHostByName.