Datenstrukturen der Dienstklasse in der SPI
Wenn eine neue Dienstklasse installiert wird, muss eine WSASERVICECLASSINFO-Struktur vorbereitet und bereitgestellt werden. Diese Struktur besteht auch aus Unterstrukturen, die eine Reihe von Parametern enthalten, die für bestimmte Namespaces gelten.

Für jede Dienstklasse gibt es eine einzelne WSASERVICECLASSINFO-Struktur. Innerhalb der WSASERVICECLASSINFO-Struktur ist der eindeutige Bezeichner der Dienstklasse in lpServiceClassId enthalten, und auf eine zugeordnete Anzeigezeichenfolge wird von lpServiceClassName verwiesen.
Der lpClassInfos-Member in der WSASERVICECLASSINFO-Struktur verweist auf ein Array von WSANSCLASSINFO-Strukturen, von denen jedes einen benannten und typierten Parameter liefert, der für einen angegebenen Namespace gilt. Beispiele für Werte für das lpszName-Member sind: SAPID, TCPPORT, UDPPORT usw. Diese Zeichenfolgen sind im Allgemeinen spezifisch für den Namespace, der in dwNameSpace identifiziert wird. Typische Werte für dwValueType können REG _ DWORD, REG _ SZ usw. sein. Das dwValueSize-Element gibt die Länge des Datenelements an, auf das lpValue zeigt.
Die gesamte Auflistung von Daten, die in einer WSASERVICECLASSINFO-Struktur dargestellt werden, wird jedem Namespaceanbieter über NSPInstallServiceClass bereitgestellt. Jeder einzelne Namespaceanbieter durchsieft dann die Liste der WSANSCLASSINFO-Strukturen und behält die entsprechenden Informationen bei. Diese Architektur sieht auch das zukünftige Vorhandensein eines speziellen Namespaceanbieters vor, der alle Schemainformationen der Dienstklasse für alle Namespaces beibehalten würde. Die Ws2-32.dll würde diesen Anbieter abfragen, um die WSASERVICECLASSINFO-Daten zu erhalten, die für namespace-Anbieter erforderlich sind, wenn _ NSPLookupServiceBegin aufgerufen wird, um eine Abfrage zu initiieren, und wenn NSPSetService aufgerufen wird, um einen Dienst zu registrieren. Der Namespaceanbieter sollte sich vorerst nicht auf diese Funktion verlassen und stattdessen über eine anbieterspezifische Möglichkeit verfügen, alle erforderlichen Informationen zum Dienstklassenschema zu erhalten. Wenn kein Anbieter verfügbar ist, der alle Dienstklassenschemas für alle Namespaces speichert, verwendet die _ Ws2-32.dll NSPGetServiceClassInfo, um solche Informationen von jedem einzelnen Namespaceanbieter zu erhalten.