Configuration et installation du transport
Pour qu’un protocole de transport soit accessible via des sockets Windows, il doit être correctement installé sur le système et inscrit auprès des sockets Windows. Lorsqu’un fournisseur de services de transport est installé en appelant le programme d’installation d’un fournisseur, les informations de configuration doivent être ajoutées à une base de données de configuration pour donner aux Ws2_32.dll informations requises concernant le fournisseur de services. Le Ws2_32.dll exporte plusieurs fonctions d’installation, WSCInstallProvider et WSCInstallProviderAndChains, pour que le programme d’installation du fournisseur fournisse les informations pertinentes sur le fournisseur de services à installer. Ces informations incluent, par exemple, le nom et le chemin d’accès à la DLL du fournisseur de services, ainsi qu’une liste de structures WSAPROTOCOL_INFO que ce fournisseur peut prendre en charge. Le Ws2_32.dll fournit également une fonction, WSCDeinstallProvider, pour le programme de désinstallation d’un fournisseur afin de supprimer toutes les informations pertinentes de la base de données de configuration gérée par le Ws2_32.dll. L’emplacement et le format exacts de ces informations de configuration sont privés au Ws2_32.dll et ne peuvent être manipulés que par les fonctions mentionnées ci-dessus.
Sur les plateformes 64 bits, il existe des fonctions similaires qui fonctionnent sur des catalogues 32 bits et 64 bits. Ces fonctions incluent WSCInstallProvider64_32, WSCInstallProviderAndChains64_32 et WSCDeinstallProvider32.
L’ordre dans lequel les fournisseurs de services de transport sont initialement installés détermine l’ordre dans lequel ils sont énumérés via WSCEnumProtocols et WSCEnumProtocols32 à l’interface du fournisseur de services, ou via WSAEnumProtocols à l’interface de l’application. Plus important encore, cet ordre régit également l’ordre dans lequel les protocoles et les fournisseurs de services sont pris en compte lorsqu’un client demande la création d’un socket en fonction de sa famille d’adresses, de son type et de son identificateur de protocole. Windows Sockets 2 inclut une applet appelée Sporder.exe qui permet au catalogue des protocoles installés d’être réorganisé de manière interactive une fois que les protocoles ont déjà été installés. Windows Sockets 2 inclut également une DLL auxiliaire, Sporder.dll, qui exporte une interface procédurale pour réorganiser les protocoles. Cette interface procédurale se compose d’une procédure unique appelée WSCWriteProviderOrder.
Installation de protocoles en couches et de chaînes de protocoles
La structure WSAPROTOCOL_INFO fournie avec chaque protocole à installer indique s’il s’agit d’un protocole de base, d’un protocole en couches ou d’une chaîne de protocole. La valeur du paramètre ProtocolChain.ChainLen est interprétée comme indiqué dans le tableau suivant.
Valeur | Signification |
---|---|
0 | Protocole en couches. |
1 | Protocole de base (ou chaîne avec un seul composant). |
>1 | Chaîne de protocole. |
L’installation des chaînes de protocoles ne peut se produire qu’après l’installation réussie de tous les composants constitutifs (protocoles de base et protocoles en couches). La structure WSAPROTOCOL_INFO d’une chaîne de protocole utilise le paramètre ProtocolChain pour décrire la longueur de la chaîne et l’identité de chaque composant. Les protocoles individuels qui composent une chaîne sont répertoriés dans l’ordre dans le tableau ProtocolChain.ChainEntries, avec le zéro élément du tableau correspondant au premier fournisseur en couches. Les protocoles sont identifiés par leurs valeurs CatalogEntryID , qui sont affectées par les Ws2_32.dll au moment de l’installation du protocole, et se trouvent dans la structure WSAPROTOCOL_INFO pour chaque protocole.
Les valeurs des paramètres restants dans la structure WSAPROTOCOL_INFO de la chaîne de protocole doivent être choisies pour refléter les attributs et identificateurs qui caractérisent le mieux la chaîne de protocole dans son ensemble. Lors de la sélection de ces valeurs, les développeurs doivent garder à l’esprit que les communications sur les chaînes de protocole ne peuvent se produire que lorsque les deux points de terminaison ont des chaînes de protocole compatibles installées, et que les applications doivent être en mesure de reconnaître la structure WSAPROTOCOL_INFO correspondante.
Lorsqu’un protocole de base est installé, il n’est pas nécessaire d’effectuer des entrées dans le tableau ProtocolChain.ChainEntries . Il est implicitement entendu que le seul composant de cette chaîne est déjà identifié dans le paramètre CatalogEntryID de la même structure WSAPROTOCOL_INFO . Notez également que les chaînes de protocole peuvent ne pas inclure plusieurs instances du même protocole en couches.