Могут ли быть проблемы при вызове WSAStartup() несколько раз?
Здравствуйте!
Есть Win32 приложение. Оно загружает несколько Win32 DLL библиотек, и из каждой вызывает некоторую функцию инициализации. DLL библиотеки скорее всего не знают о существовании друг друга, и каждая в своей функции инициализации вызывает WSAStartup().
DLL библиотеки написаны так, что они не все и не всегда проверяют, что возвращается в структуре с информацией из WSAStartup(). (проверяется только возвращаемое значение).
Вопрос. Какие могут быть с этим связаны проблемы? В случае, если, например, две разные DLL вызовут WSAStartup() с разными версиями? (Хотя, версии младше 2.0 не запрашиваются точно).
А как писать приложение? Если необходимо использовать три - пять сторонних DLL, про которые мы "ничего не знаем", а само приложение тоже должно использовать Windows Sockets ?
(подразумевается, что не используются трюки вроде перехвата обращений к win sock dll, и влиять на то, как инициализируются библиотеки, мы не можем)
(в случае, если только DLL из всего процесса работает с сетью (и соотв., WSAStartup() вызывается только один раз) - всё точно работает корректно).
An application can call WSAStartup more than once if it needs to obtain the WSADATA structure information more than once. On each such call, the application can specify any version number supported by the Winsock DLL.
Надо только WSACleanup потом вызвать столько же раз, сколько вызывался WSAStartup