Provider-Specific-Erweiterungsmechanismus
Die WSAIoctl-Funktion ermöglicht es Dienstanbietern, anbieterspezifische Funktionserweiterungen anzubieten. Dieser Mechanismus geht natürlich davon aus, dass eine Anwendung eine bestimmte Erweiterung kennt und sowohl die semantische als auch die syntax versteht. Solche Informationen werden in der Regel vom Anbieter des Dienstanbieters bereitgestellt.
Um eine Erweiterungsfunktion aufzurufen, muss die Anwendung zuerst einen Zeiger auf die gewünschte Funktion anfordern. Dies erfolgt über die WSAIoctl-Funktion mit dem SIO_GET_EXTENSION_FUNCTION_POINTER Befehlscode. 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 zu durchlaufen.
Die den Erweiterungsfunktionen zugewiesenen Bezeichner sind GUIDs (Globally Unique Identifier), die von Dienstanbieteranbietern zugeordnet werden. Anbieter, die Erweiterungsfunktionen erstellen, werden dringend aufgefordert, vollständige Details zur Funktion zu veröffentlichen, einschließlich der Syntax des Funktionsprototyps. Dies ermöglicht es, dass gängige und beliebte Erweiterungsfunktionen von mehreren Dienstanbieteranbietern angeboten werden. Eine Anwendung kann den Funktionszeiger abrufen und die Funktion verwenden, ohne etwas über den jeweiligen 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 benötigt wird. Die neuen Erweiterungsfunktionen, die unter Windows Vista und höher verfügbar sind, umfassen die Funktionen WSAPoll und WSASendMsg , die aus Ws2_32.dllexportiert werden.