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 die Ws2_32.dll erforderlichen Informationen zum Dienstanbieter zu erhalten. Die Ws2_32.dll exportiert mehrere Installationsfunktionen, WSCInstallProvider und WSCInstallProviderAndChains, damit das Installationsprogramm des Anbieters die relevanten Informationen über den zu installierenden Dienstanbieter liefert. Diese Informationen umfassen z. B. den Namen und den Pfad zur Dienstanbieter-DLL sowie eine Liste der WSAPROTOCOL_INFO Strukturen, die dieser Anbieter unterstützen kann. Die Ws2_32.dll stellt auch die Funktion WSCDeinstallProvider für das Deinstallationsprogramm eines Anbieters bereit, um alle relevanten Informationen aus der Konfigurationsdatenbank zu entfernen, die vom Ws2_32.dll verwaltet wird. 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 mit einem 32-Bit- und 64-Bit-Katalog arbeiten. Zu diesen Funktionen gehören WSCInstallProvider64_32, WSCInstallProviderAndChains64_32 und WSCDeinstallProvider32.
Die Reihenfolge, in der Transportdienstanbieter anfänglich installiert werden, bestimmt die Reihenfolge, in der sie über WSCEnumProtocols und WSCEnumProtocols32 an der Dienstanbieterschnittstelle oder über WSAEnumProtocols an der Anwendungsschnittstelle aufgezählt werden. 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 seiner Adressfamilie, dem Typ und dem Protokollbezeichner anfordert. Windows Sockets 2 enthält ein Applet namens Sporder.exe, mit dem der Katalog der installierten Protokolle interaktiv neu angeordnet werden kann, nachdem die Protokolle bereits installiert wurden. Windows Sockets 2 enthält auch eine zusätzliche DLL Sporder.dll, die eine prozedurale Schnittstelle zum Neuanordnen von Protokollen exportiert. Diese prozedurale Schnittstelle besteht aus einer einzelnen Prozedur namens WSCWriteProviderOrder.
Installieren von mehrstufigen 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 mehrstufiges Protokoll oder eine Protokollkette handelt. Der Wert des Parameters ProtocolChain.ChainLen wird wie in der folgenden Tabelle dargestellt interpretiert.
Wert | Bedeutung |
---|---|
0 | Mehrschichtige Protokoll. |
1 | Basisprotokoll (oder Verkettung mit nur einer Komponente). |
>1 | Protokollkette. |
Die Installation von Protokollketten kann nur nach erfolgreicher Installation aller komponenten (Basisprotokolle und mehrstufige Protokolle) erfolgen. Die WSAPROTOCOL_INFO Struktur für eine Protokollkette verwendet den Parameter ProtocolChain , 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 ProtocolChain.ChainEntries-Array aufgeführt, wobei das nullte Element des Arrays dem ersten Mehrschichtanbieter entspricht. Protokolle werden durch ihre CatalogEntryID-Werte identifiziert, die vom Ws2_32.dll zum Zeitpunkt der Protokollinstallation zugewiesen werden, und 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 ist, müssen keine Einträge im ProtocolChain.ChainEntries-Array vorgenommen werden . Es wird implizit verstanden, dass die einzige Komponente dieser Kette bereits im CatalogEntryID-Parameter der gleichen WSAPROTOCOL_INFO-Struktur identifiziert ist. Beachten Sie auch, dass Protokollketten möglicherweise nicht mehrere Instanzen desselben mehrstufigen Protokolls enthalten.