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 sein. Wenn ein Transportdienstanbieter durch Aufrufen des Installationsprogramms eines Anbieters installiert wird, müssen Konfigurationsinformationen zu einer Konfigurationsdatenbank hinzugefügt werden, um den Ws2_32.dll erforderlichen Informationen zum Dienstanbieter zu geben. Die Ws2_32.dll exportiert mehrere Installationsfunktionen, WSCInstallProvider und WSCInstallProviderAndChains, damit das Installationsprogramm des Anbieters die relevanten Informationen zum zu installierenden Dienstanbieter bereitstellt. Diese Informationen umfassen z. B. den Namen und den Pfad zur Dienstanbieter-DLL und eine Liste der WSAPROTOCOL_INFO Strukturen, die dieser Anbieter unterstützen kann. Die Ws2_32.dll bietet auch eine Funktion, WSCDeinstallProvider, für das Deinstallationsprogramm eines Anbieters, um alle relevanten Informationen aus der Konfigurationsdatenbank zu entfernen, die vom Ws2_32.dllverwaltet wird. Der genaue Speicherort und das genaue Format dieser Konfigurationsinformationen sind privat für die Ws2_32.dllund 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_32und WSCDeinstallProvider32.
Die Reihenfolge, in der Transportdienstanbieter anfangs installiert werden, steuert die Reihenfolge, in der sie über WSCEnumProtocols und WSCEnumProtocols32 auf der Dienstanbieterschnittstelle oder über WSAEnumProtocols auf der Anwendungsschnittstelle aufgelistet werden. Wichtiger ist, dass diese Bestellung auch die Reihenfolge regelt, 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 protokolle bereits installiert wurden. Windows Sockets 2 enthält auch eine Hilfs-DLL, Sporder.dll, die eine prozedurale Schnittstelle zum Neuanordnen von Protokollen exportiert. Diese prozedurale Schnittstelle besteht aus einer einzigen Prozedur namens WSCWriteProviderOrder.
Installieren von mehrschichtigen Protokollen und Protokollketten
Die WSAPROTOCOL_INFO Struktur, die für jedes zu installierende Protokoll bereitgestellt wird, gibt an, ob es sich bei dem Protokoll um ein Basisprotokoll, ein schichtweises Protokoll oder eine Protokollkette handelt. Der Wert des ProtocolChain.ChainLen-Parameters wird wie in der folgenden Tabelle dargestellt interpretiert.
Wert | Bedeutung |
---|---|
0 | Layered protocol. |
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 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 im ProtocolChain.ChainEntries-Array mit dem Null-Element des Arrays aufgelistet, das dem ersten layerierten Anbieter entspricht. Protokolle werden durch ihre CatalogEntryID- Werte identifiziert, die vom Ws2_32.dll zur Protokollinstallationszeit zugewiesen werden, und finden Sie in der WSAPROTOCOL_INFO Struktur für jedes Protokoll.
Die Werte für die übrigen Parameter in der WSAPROTOCOL_INFO Struktur der Protokollkette sollten ausgewählt werden, um die Attribute und Bezeichner widerzuspiegeln, die die Protokollkette als Ganzes am besten kennzeichnen. Beim Auswählen dieser Werte sollten Entwickler bedenken, dass die Kommunikation über Protokollketten nur auftreten kann, wenn beide Endpunkte kompatible Protokollketten installiert haben und dass Anwendungen die entsprechende WSAPROTOCOL_INFO Struktur erkennen können müssen.
Wenn ein Basisprotokoll installiert wird, ist es nicht erforderlich, Einträge im ProtocolChain.ChainEntries Array vorzunehmen. Es wird implizit verstanden, dass die einzige Komponente dieser Kette bereits in der CatalogEntryID Parameter derselben WSAPROTOCOL_INFO Struktur identifiziert wird. Beachten Sie außerdem, dass Protokollketten möglicherweise nicht mehrere Instanzen desselben Schichtprotokolls enthalten.