1. 程式人生 > >關於Winsock:Winsock程式設計注意事項:特定於提供者的擴充套件機制

關於Winsock:Winsock程式設計注意事項:特定於提供者的擴充套件機制

WSAIoctl功能使服務提供商能夠提供特定於提供商的功能擴充套件。 當然,這種機制假定應用程式知道特定擴充套件並理解所涉及的語義和語法。 這些資訊通常由服務提供商供應商提供。

要呼叫擴充套件函式,應用程式必須首先請求指向所需函式的指標。 這是通過使用SIO_GET_EXTENSION_FUNCTION_POINTER命令程式碼的WSAIoctl函式完成的。 WSAIoctl的輸入緩衝區包含所需擴充套件函式的識別符號,而輸出緩衝區包含函式指標本身。 然後,應用程式可以直接呼叫擴充套件函式,而無需通過Ws2_32.dll。

分配給擴充套件功能的識別符號是由服務提供商供應商分配的全域性唯一識別符號(GUID)。 敦促建立擴充套件函式的供應商釋出有關函式的完整詳細資訊,包括函式原型的語法。 這使得可以由多個服務提供商供應商提供通用和流行的擴充套件功能。 應用程式可以獲取函式指標並使用該函式,而無需瞭解實現該函式的特定服務提供者的任何資訊。

在Windows Vista及更高版本中,新的Winsock系統擴充套件直接從Winsock DLL匯出,因此不需要WSAIoctl函式來載入這些擴充套件。 Windows Vista及更高版本中可用的新擴充套件功能包括從Ws2_32.dll匯出的WSAPoll和WSASendMsg函式。