Provider-Specific Erweiterungsmechanismus
Mit der WSAIoctl-Funktion können Dienstanbieter anbieterspezifische Featureerweiterungen anbieten. Bei diesem Mechanismus wird natürlich davon ausgegangen, dass eine Anwendung eine bestimmte Erweiterung kennt und sowohl die semantische als auch die damit verbundenen Syntax versteht. Solche Informationen werden in der Regel vom Anbieter des Dienstanbieters bereitgestellt.
Zum Aufrufen einer Erweiterungsfunktion muss die Anwendung zunächst nach einem Zeiger auf die gewünschte Funktion fragen. Dies erfolgt über die WSAIoctl-Funktion unter Verwendung des Befehlscodes SIO _ GET EXTENSION FUNCTION _ _ _ POINTER. Der Eingabepuffer für WSAIoctl enthält einen Bezeichner für die gewünschte Erweiterungsfunktion, während der Ausgabepuffer den Funktionszeiger selbst enthält. Die Anwendung kann dann die Erweiterungsfunktion direkt aufrufen, ohne die Ws2-32.dll. _
Die Bezeichner, die Erweiterungsfunktionen zugewiesen sind, sind GUIDs (Globally Unique Identifiers), die von Dienstanbieteranbietern zugeordnet werden. Anbieter, die Erweiterungsfunktionen erstellen, können vollständige Details zur Funktion veröffentlichen, einschließlich der Syntax des Funktionsprototyps. Dadurch können allgemeine und beliebte Erweiterungsfunktionen von mehr als einem Dienstanbieteranbieter angeboten werden. Eine Anwendung kann den Funktionszeiger abrufen und die Funktion verwenden, ohne etwas über den bestimmten Dienstanbieter wissen zu müssen, der die Funktion implementiert.
Unter Windows Vista und höher werden neue Winsock-Systemerweiterungen direkt aus der Winsock-DLL exportiert, sodass die WSAIoctl-Funktion zum Laden dieser Erweiterungen nicht erforderlich ist. Die neuen Erweiterungsfunktionen, die unter Windows Vista und höher verfügbar sind, umfassen die WSAPoll- und WSASendMsg-Funktionen, die aus Ws2 _ 32.dll.