Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция WSAIoctl позволяет поставщикам услуг предлагать расширения функций для конкретного поставщика. Этот механизм предполагает, конечно, что приложение знает о конкретном расширении и понимает как семантику, так и синтаксис. Такие сведения обычно предоставляются поставщиком услуг.
Чтобы вызвать функцию расширения, приложение должно сначала попросить указатель на нужную функцию. Это делается с помощью функции WSAIoctl с помощью кода команды SIO_GET_EXTENSION_FUNCTION_POINTER. Входной буфер для WSAIoctl содержит идентификатор требуемой функции расширения, а выходной буфер содержит сам указатель функции. Затем приложение может вызвать функцию расширения напрямую, не передавая Ws2_32.dll.
Идентификаторы, назначенные функциям расширения, являются глобально уникальными идентификаторами (GUID), выделенными поставщиками услуг. Поставщики, создающие функции расширения, призывают публиковать полные сведения о функции, включая синтаксис прототипа функции. Это позволяет использовать распространенные и популярные функции расширения, предоставляемые несколькими поставщиками услуг. Приложение может получить указатель функции и использовать функцию без необходимости знать что-либо о конкретном поставщике услуг, реализующего функцию.
В Windows Vista и более поздних версиях новые расширения системы Winsock экспортируются непосредственно из библиотеки DLL Winsock, поэтому функция WSAIoctl не требуется для загрузки этих расширений. Новые функции расширения, доступные в Windows Vista и более поздних версиях, включают WSAPoll и функции WSASendMsg, экспортируемые из Ws2_32.dll.