Udostępnij za pośrednictwem


mechanizm rozszerzenia Provider-Specific

Funkcja WSAIoctl umożliwia dostawcom usług oferowanie rozszerzeń funkcji specyficznych dla dostawcy. Ten mechanizm zakłada oczywiście, że aplikacja zna określone rozszerzenie i rozumie zarówno semantykę, jak i składnię. Takie informacje zazwyczaj są dostarczane przez dostawcę usług.

Aby wywołać funkcję rozszerzenia, aplikacja musi najpierw poprosić o wskaźnik do żądanej funkcji. Odbywa się to za pomocą funkcji WSAIoctl przy użyciu kodu polecenia SIO_GET_EXTENSION_FUNCTION_POINTER. Bufor wejściowy WSAIoctl zawiera identyfikator żądanej funkcji rozszerzenia, podczas gdy bufor wyjściowy zawiera sam wskaźnik funkcji. Aplikacja może następnie wywołać funkcję rozszerzenia bezpośrednio bez przechodzenia przez Ws2_32.dll.

Identyfikatory przypisane do funkcji rozszerzenia to globalnie unikatowe identyfikatory (GUID), które są przydzielane przez dostawców usług. Dostawcy, którzy tworzą funkcje rozszerzenia, są proszeni o opublikowanie pełnych szczegółów dotyczących funkcji, w tym składni prototypu funkcji. Dzięki temu można korzystać z typowych i popularnych funkcji rozszerzeń oferowanych przez więcej niż jednego dostawcę usług. Aplikacja może uzyskać wskaźnik funkcji i użyć funkcji bez konieczności znajomości niczego o konkretnym dostawcy usług, który implementuje funkcję.

W systemie Windows Vista i nowszych nowe rozszerzenia systemu Winsock są eksportowane bezpośrednio z biblioteki DLL winsock, więc funkcja WSAIoctl nie jest wymagana do załadowania tych rozszerzeń. Nowe funkcje rozszerzenia dostępne w systemie Windows Vista i nowszych obejmują funkcje WSAPoll i WSASendMsg funkcji wyeksportowanych z Ws2_32.dll.