Freigeben über


Provider-Specific Erweiterungsmechanismus

Mit der WSAIoctl--Funktion können Dienstanbieter anbieterspezifische Featureerweiterungen anbieten. Dieser Mechanismus geht natürlich davon aus, dass eine Anwendung eine bestimmte Erweiterung kennt und sowohl die Semantik 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 mithilfe des SIO_GET_EXTENSION_FUNCTION_POINTER Befehlscodes. Der Eingabepuffer zum 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.dllzu durchlaufen.

Die bezeichner, die Erweiterungsfunktionen zugewiesen sind, sind global eindeutige Bezeichner (GUIDs), die von Dienstanbietern zugewiesen werden. Anbieter, die Erweiterungsfunktionen erstellen, werden aufgefordert, vollständige Details zur Funktion einschließlich der Syntax des Funktionsprototyps zu veröffentlichen. So können gängige und beliebte Erweiterungsfunktionen von mehr als einem Dienstleister angeboten werden. Eine Anwendung kann den Funktionszeiger abrufen und die Funktion verwenden, ohne etwas über den jeweiligen Dienstanbieter zu wissen, der die Funktion implementiert.

Unter Windows Vista und höher werden neue Winsock-Systemerweiterungen direkt aus der Winsock-DLL exportiert, sodass die WSAIoctl--Funktion nicht benötigt wird, um diese Erweiterungen zu laden. Zu den neuen Erweiterungsfunktionen unter Windows Vista und höher gehören die WSAPoll- und WSASendMsg Funktionen, die aus Ws2_32.dllexportiert werden.