Transportkonfiguration und -installation

Damit auf ein Transportprotokoll über Windows Sockets zugegriffen werden kann, muss es ordnungsgemäß auf dem System installiert und bei Windows Sockets registriert werden. Wenn ein Transportdienstanbieter durch Aufrufen des Installationsprogramms eines Anbieters installiert wird, müssen Konfigurationsinformationen zu einer Konfigurationsdatenbank hinzugefügt werden, um dem Ws2-32.dll informationen zum Dienstanbieter _ zu geben. Der Ws2-32.dll exportiert mehrere _ Installationsfunktionen, WSCInstallProvider und WSCInstallProviderAndChains,damit das Installationsprogramm des Anbieters die relevanten Informationen zum zu installierenden Dienstanbieter liefert. Diese Informationen umfassen beispielsweise den Namen und Pfad zur Dienstanbieter-DLL und eine Liste der WSAPROTOCOL _ INFO-Strukturen, die dieser Anbieter unterstützen kann. Der Ws2-32.dll stellt auch eine _ Funktion, WSCDeinstallProvider,für das Deinstallationsprogramm eines Anbieters bereit, um alle relevanten Informationen aus der Konfigurationsdatenbank zu entfernen, die von der Ws2-Anwendung _ verwaltet32.dll. Der genaue Speicherort und das Format dieser Konfigurationsinformationen sind für die Ws2-32.dll privat und können nur von den oben _ genannten Funktionen bearbeitet werden.

Auf 64-Bit-Plattformen gibt es ähnliche Funktionen, die für 32-Bit- und 64-Bit-Kataloge verwendet werden. Zu diesen Funktionen gehören WSCInstallProvider64 _ 32, WSCInstallProviderAndChains64 _ 32und WSCDeinstallProvider32.

Die Reihenfolge, in der Transportdienstanbieter zuerst installiert werden, bestimmt die Reihenfolge, in der sie über WSCEnumProtocols und WSCEnumProtocols32 an der Schnittstelle des Dienstanbieters oder über WSAEnumProtocols an der Anwendungsschnittstelle aufzählt. Noch wichtiger ist, dass diese Reihenfolge auch die Reihenfolge bestimmt, in der Protokolle und Dienstanbieter berücksichtigt werden, wenn ein Client die Erstellung eines Sockets basierend auf der Adressfamilie, dem Typ und dem Protokollbezeichner an fordert. Windows Sockets 2 enthält ein Applet namens Sporder.exe, mit dem der Katalog installierter Protokolle interaktiv neu angeordnet werden kann, nachdem protokolle bereits installiert wurden. Windows Sockets 2 enthält auch eine zusätzliche DLL, Sporder.dll, die eine prozedurale Schnittstelle zum Neuordnen von Protokollen exportiert. Diese prozedurale Schnittstelle besteht aus einer einzelnen Prozedur namens WSCWriteProviderOrder.

Installieren von mehrschichtigen Protokollen und Protokollketten

Die WSAPROTOCOL _ INFO-Struktur, die mit jedem zu installierenden Protokoll bereitgestellt wird, gibt an, ob es sich bei dem Protokoll um ein Basisprotokoll, ein mehrschichtiges Protokoll oder eine Protokollkette handelt. Der Wert des Parameters ProtocolChain.ChainLen wird wie in der folgenden Tabelle dargestellt interpretiert.

Wert Bedeutung
0 Mehrschichtige Protokolle.
1 Basisprotokoll (oder Kette mit nur einer Komponente).
> 1 Protokollkette.

Die Installation von Protokollketten kann nur nach erfolgreicher Installation aller Komponenten (Basisprotokolle und mehrschichtige Protokolle) erfolgen. Die WSAPROTOCOL _ INFO-Struktur für eine Protokollkette verwendet den ProtocolChain-Parameter, um die Länge der Kette und die Identität der einzelnen Komponenten zu beschreiben. Die einzelnen Protokolle, aus denen eine Kette besteht, werden in der Reihenfolge im Array ProtocolChain.ChainEntries aufgelistet, und das nullte Element des Arrays entspricht dem ersten mehrschichtigen Anbieter. Protokolle werden durch ihre CatalogEntryID-Werte identifiziert, die von der Ws2-32.dll zur Protokollinstallationszeit zugewiesen werden. Sie finden sie in der _ WSAPROTOCOL _ INFO-Struktur für jedes Protokoll.

Die Werte für die verbleibenden Parameter in der WSAPROTOCOL _ INFO-Struktur der Protokollkette sollten so ausgewählt werden, dass sie die Attribute und Bezeichner widerspiegeln, die die Protokollkette als Ganzes am besten charakterisieren. Bei der Auswahl dieser Werte sollten Entwickler bedenken, dass die Kommunikation über Protokollketten nur erfolgen kann, wenn auf beiden Endpunkten kompatible Protokollketten installiert sind und Anwendungen in der Lage sein müssen, die entsprechende WSAPROTOCOL _ INFO-Struktur zu erkennen.

Wenn ein Basisprotokoll installiert wird, ist es nicht erforderlich, Einträge im Array ProtocolChain.ChainEntries zu erstellen. Es wird implizit verstanden, dass die einzige Komponente dieser Kette bereits im CatalogEntryID-Parameter der gleichen WSAPROTOCOL _ INFO-Struktur identifiziert wurde. Beachten Sie auch, dass Protokollketten möglicherweise nicht mehrere Instanzen desselben mehrschichtigen Protokolls enthalten.