Sdílet prostřednictvím


Mechanismus rozšíření Provider-Specific

Funkce WSAIoctl umožňuje poskytovatelům služeb nabízet rozšíření funkcí specifických pro poskytovatele. Tento mechanismus samozřejmě předpokládá, že aplikace si je vědoma konkrétního rozšíření a rozumí sémantice i syntaxi. Tyto informace by obvykle poskytl dodavatel poskytovatele služeb.

Pokud chcete vyvolat funkci rozšíření, musí aplikace nejprve požádat o ukazatel na požadovanou funkci. To se provádí prostřednictvím funkce WSAIoctl pomocí kódu příkazu SIO_GET_EXTENSION_FUNCTION_POINTER. Vstupní vyrovnávací paměť pro WSAIoctl obsahuje identifikátor požadované funkce rozšíření, zatímco výstupní vyrovnávací paměť obsahuje samotný ukazatel funkce. Aplikace pak může vyvolat funkci rozšíření přímo bez průchodu Ws2_32.dll.

Identifikátory přiřazené funkcím rozšíření jsou globálně jedinečné identifikátory (GUID), které přidělují dodavatelé poskytovatelů služeb. Dodavatelé, kteří vytvářejí funkce rozšíření, jsou vyzváni k publikování úplných podrobností o funkci, včetně syntaxe prototypu funkce. To umožňuje, aby běžné a oblíbené funkce rozšíření nabízelo více než jeden dodavatel služeb. Aplikace může získat ukazatel funkce a používat funkci, aniž by potřebovala znát cokoli o konkrétním poskytovateli služeb, který funkci implementuje.

V systému Windows Vista a novějších jsou nová rozšíření systému Winsock exportována přímo z knihovny Winsock DLL, takže WSAIoctl funkce není nutná k načtení těchto rozšíření. Nové funkce rozšíření dostupné v systému Windows Vista a novější zahrnují WSAPoll a WSASendMsg funkce, které jsou exportovány z Ws2_32.dll.