Configurazione e installazione del trasporto
Affinché un protocollo di trasporto sia accessibile tramite Windows Sockets, deve essere installato correttamente nel sistema e registrato con Windows Sockets. Quando un provider di servizi di trasporto viene installato richiamando il programma di installazione di un fornitore, le informazioni di configurazione devono essere aggiunte a un database di configurazione per fornire alle Ws2_32.dll informazioni necessarie relative al provider di servizi. Il Ws2_32.dll esporta diverse funzioni di installazione, WSCInstallProvider e WSCInstallProviderAndChains, affinché il programma di installazione del fornitore fornisca le informazioni pertinenti sul provider di servizi da installare. Queste informazioni includono, ad esempio, il nome e il percorso della DLL del provider di servizi e un elenco di strutture WSAPROTOCOL_INFO che questo provider può supportare. Il Ws2_32.dll fornisce anche una funzione WSCDeinstallProvider per il programma di installazione di un fornitore per rimuovere tutte le informazioni rilevanti dal database di configurazione gestito dal Ws2_32.dll. La posizione esatta e il formato di queste informazioni di configurazione sono privati per il Ws2_32.dll e possono essere modificati solo dalle funzioni indicate in precedenza.
Nelle piattaforme a 64 bit sono disponibili funzioni simili che operano su cataloghi a 32 bit e a 64 bit. Queste funzioni includono WSCInstallProvider64_32, WSCInstallProviderAndChains64_32 e WSCDeinstallProvider32.
L'ordine in cui i provider di servizi di trasporto vengono inizialmente installati determina l'ordine in cui vengono enumerati tramite WSCEnumProtocols e WSCEnumProtocols32 nell'interfaccia del provider di servizi o tramite WSAEnumProtocols all'interfaccia dell'applicazione. Inoltre, questo ordine regola anche l'ordine in cui i protocolli e i provider di servizi vengono considerati quando un client richiede la creazione di un socket in base alla famiglia di indirizzi, al tipo e all'identificatore del protocollo. Windows Sockets 2 include un applet denominato Sporder.exe che consente di riordinare in modo interattivo il catalogo dei protocolli installati dopo l'installazione dei protocolli. Windows Sockets 2 include anche una DLL ausiliaria, Sporder.dll, che esporta un'interfaccia procedurale per riordinare i protocolli. Questa interfaccia procedurale è costituita da una singola procedura denominata WSCWriteProviderOrder.
Installazione di protocolli e catene di protocolli su più livelli
La struttura WSAPROTOCOL_INFO fornita con ogni protocollo da installare indica se il protocollo è un protocollo di base, un protocollo a più livelli o una catena di protocolli. Il valore del parametro ProtocolChain.ChainLen viene interpretato come illustrato nella tabella seguente.
Valore | Significato |
---|---|
0 | Protocollo a più livelli. |
1 | Protocollo di base (o concatenamento con un solo componente). |
>1 | Catena di protocolli. |
L'installazione delle catene di protocolli può verificarsi solo dopo la corretta installazione di tutti i componenti costitutivi (protocolli di base e protocolli a più livelli). La struttura WSAPROTOCOL_INFO per una catena di protocolli usa il parametro ProtocolChain per descrivere la lunghezza della catena e l'identità di ogni componente. I singoli protocolli che costituiscono una catena sono elencati nell'ordine nella matrice ProtocolChain.ChainEntries, con l'elemento zeroth della matrice corrispondente al primo provider a più livelli. I protocolli sono identificati dai valori CatalogEntryID assegnati dal Ws2_32.dll in fase di installazione del protocollo e sono disponibili nella struttura WSAPROTOCOL_INFO per ogni protocollo.
I valori per i parametri rimanenti nella struttura WSAPROTOCOL_INFO della catena di protocolli devono essere scelti per riflettere gli attributi e gli identificatori che caratterizzano meglio la catena di protocolli nel suo complesso. Quando si selezionano questi valori, gli sviluppatori devono tenere presente che le comunicazioni tramite catene di protocolli possono verificarsi solo quando entrambi gli endpoint hanno catene di protocolli compatibili installati e che le applicazioni devono essere in grado di riconoscere la struttura di WSAPROTOCOL_INFO corrispondente.
Quando viene installato un protocollo di base, non è necessario creare voci nella matrice ProtocolChain.ChainEntries . È implicitamente riconosciuto che l'unico componente di questa catena è già identificato nel parametro CatalogEntryID della stessa struttura WSAPROTOCOL_INFO . Si noti anche che le catene di protocolli potrebbero non includere più istanze dello stesso protocollo a più livelli.