Windows Sockets transport and name space service providers are DLLs with a single EXPORTED procedure entry point for the service provider initialization function WSPStartup or NSPStartup, respectively. All other service provider functions are made accessible to the WS2_32.DLL via the service provider's dispatch table. Service provider DLL's are loaded into memory by the WS2_32.DLL only when needed, and are unloaded when their services are no longer required.
The SPI also defines several circumstances in which a transport service provider calls up into the WS2_32.DLL ("upcalls") to obtain DLL support services. The transport service provider DLL is given the WS2_32.DLL's upcall dispatch table via the UpcallTable parameter to WSPStartup.
Service providers should have their file extension changed from ".DLL" to ".WSP" or ".NSP". This requirement is not strict. A service provider will still operate with the WS2_32.DLL with any file extension.