WSAStartup() can be called multiple times in a single process, as long as the requested version is supported by the WinSock dll and that calls to WSAStartup() and WSACleanup() are balanced. In addition to that, Multiple sockets using different WinSock versions is allowed. (see this post: Is it possible to tell if WSAStartup has been called in a process?)
In that case, how do these different WinSock versions coexist?
For example, what if I request the use of a specific WinSock version for my application, and my application also loads a third party dll that happens to request the use a different version? What version gets used, and when?