Condividi tramite


Provider di servizi dello spazio dei nomi

Un provider di spazi dei nomi implementa un mapping di interfaccia tra lo spi dello spazio dei nomi Winsock e l'interfaccia programmatica nativa di un servizio dei nomi esistente, ad esempio DNS, X.500 o NetWare Directory Services (NDS). Anche se un provider di spazi dei nomi supporta esattamente uno spazio dei nomi, è possibile installare più provider per uno spazio dei nomi specifico. È anche possibile creare una singola DLL per creare un'istanza di più provider di spazi dei nomi. Quando vengono installati i provider di spazi dei nomi, viene mantenuto un catalogo di strutture WSANAMESPACE_INFO . Un'applicazione può usare WSAEnumNameSpaceProviders per individuare gli spazi dei nomi supportati in un computer.

In Windows Vista e versioni successive vengono fornite una struttura di WSANAMESPACE_INFOEX avanzata e una funzione WSAEnumNameSpaceProvidersEx .

Nelle piattaforme a 64 bit vengono fornite funzioni WSCEnumNameSpaceProviders32 e WSCEnumNameSpaceProvidersEx32 per enumerare il catalogo a 32 bit.

Per informazioni dettagliate, vedere Requisiti del provider di servizi dello spazio dei nomi Winsock .

Provider di servizi GetXbyY legacy

Windows Sockets 2 supporta completamente le funzionalità di risoluzione dei nomi specifiche di TCP/IP disponibili in Windows Sockets versione 1.1. Questa operazione viene eseguita includendo il set di funzioni GetXbyY in SPI. Tuttavia, il trattamento di questo set di funzioni è leggermente diverso dal resto delle funzioni SPI. Le funzioni GetXbyY visualizzate in SPI sono precedute da GETXBYYSP_ e sono riepilogate nella tabella seguente.

Funzioni di stile Berkeley

Nome della funzione SPI Descrizione
GETXBYYSP_gethostbyaddr Fornisce una struttura hostent per l'indirizzo host specificato.
GETXBYYSP_gethostbyname Fornisce una struttura hostent per il nome host specificato.
GETXBYYSP_getprotobyname Fornisce una struttura protoent per il nome del protocollo specificato.
GETXBYYSP_getprotobynumber Fornisce una struttura protoent per il numero di protocollo specificato.
GETXBYYSP_getservbyname Fornisce una struttura servent per il servizio nam.e specificato
GETXBYYSP_getservbyport Fornisce una struttura servent per il servizio nella porta specificata.
GETXBYYSP_gethostname Restituisce il nome host standard per il computer locale.

 

Funzioni di stile asincrone

Nome della funzione SPI Descrizione
GETXBYYSP_WSAAsyncGetHostByAddr Fornisce una struttura hostent per l'indirizzo host specificato.
GETXBYYSP_WSAAsyncGetHostByName Fornisce una struttura hostent per il nome host specificato.
GETXBYYSP_WSAAsyncGetProtoByName Fornisce una struttura protoent per il nome del protocollo specificato.
GETXBYYSP_WSAAsyncGetProtoByNumber Fornisce una struttura protoent per il numero di protocollo specificato.
GETXBYYSP_WSAAsyncGetServByName Fornisce una struttura servent per il nome del servizio specificato.
GETXBYYSP_WSAAsyncGetServByPort Fornisce una struttura servent per il servizio nella porta specificata.
GETXBYYSP_WSACancelAsyncRequest Annulla un'operazione GetXbyY asincrona.

 

La sintassi e la semantica di queste funzioni GetXbyY in SPI sono esattamente uguali a quelle documentate nella specifica dell'API e pertanto non vengono ripetute qui.

La DLL Di Windows Sockets 2 consente esattamente a un provider di servizi di offrire questi servizi. Non è pertanto necessario includere puntatori a queste funzioni nella tabella delle procedure ricevuta dai provider di servizi all'avvio. Negli ambienti Windows il percorso della DLL che implementa queste funzioni viene recuperato dal valore trovato nel percorso del Registro di sistema seguente. Questa voce del Registro di sistema non esiste per impostazione predefinita:

HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Servizi\Winsock2\Parametri\GetXByYLibraryPath

Built-In provider di servizi GetXbyY predefinito

Un provider di servizi GetXbyY predefinito è integrato nei componenti di runtime standard di Windows Sockets 2. Questo provider predefinito implementa tutte le funzioni precedenti, pertanto non è necessario che queste funzioni vengano implementate da alcun provider di spazi dei nomi. Tuttavia, un provider di spazi dei nomi è libero di fornire una o tutte queste funzioni (e quindi eseguire l'override delle impostazioni predefinite) semplicemente archiviando la stringa che è il percorso della DLL che implementa queste funzioni nella chiave del Registro di sistema indicata. Tutte le funzioni GetXbyY non esportate dalla DLL del provider denominata verranno fornite tramite le impostazioni predefinite predefinite. Si noti, tuttavia, che se un provider sceglie di fornire una delle versioni asincrone delle funzioni GetXbyY , deve fornire tutte le funzioni asincrone in modo che l'operazione di annullamento funzioni correttamente.

L'implementazione corrente del provider di servizi GetXbyY predefinito si trova all'interno del Wsock32.dll. A seconda di come sono state stabilite le impostazioni TCP/IP tramite Pannello di controllo, la risoluzione dei nomi verrà eseguita usando i file DNS o host locali. Quando si usa DNS, il provider di servizi GetXbyY predefinito usa chiamate API Standard di Windows Sockets 1.1 per comunicare con il server DNS. Queste transazioni verranno eseguite usando qualsiasi stack TCP/IP configurato come stack TCP/IP predefinito. Tuttavia, due casi speciali meritano una menzione speciale.

L'implementazione predefinita di GETXBYYSP_gethostname ottiene il nome host locale dal Registro di sistema. Corrisponderà al nome assegnato a "My Computer". L'implementazione predefinita di GETXBYYSP_gethostbyname e GETXBYYSP_WSAAsyncGetHostByName confronta sempre il nome host fornito con il nome host locale. Se corrispondono, l'implementazione predefinita usa un'interfaccia privata per eseguire il probe dello stack TCP/IP Microsoft per individuare l'indirizzo IP locale. Pertanto, per essere completamente indipendente dallo stack TCP/IP Microsoft, un provider di spazi dei nomi deve implementare sia GETXBYYSP_gethostbyname che GETXBYYSP_WSAAsyncGetHostByName.