Zacząłem pisać formant ActiveX, który korzysta z gniazd.Czy można sprawdzić, czy WSAStartup został wywołany w procesie?
Aplikacje korzystające z tej kontroli mogą, ale nie muszą również używać gniazd. Czy moja kontrola może stwierdzić, czy wywołano funkcję WSAStartup?
Jeśli nie, zadzwoń. Mały test pokazuje, że wielokrotne wywoływanie WSAStartup jest tollerowane. Ale co się stanie, jeśli zażąda się innej wersji serwera winsock? Czy złamie to inne części aplikacji?
Nie zapomnij wywołać 'closesocket()' jeśli 'socket()' zakończyło się pomyślnie w 'WinsockInitialized()', w przeciwnym razie wystąpi przeciek. –
dobry punkt! naprawiono to. – Matt
Wywołanie WSAStartup w dowolnym momencie NIE jest bezpieczne. Z MSDN: "Funkcja WSAStartup zazwyczaj prowadzi do ładowania zależnych od protokołu bibliotek DLL pomocniczych, w wyniku czego funkcja WSAStartup nie powinna być wywoływana z funkcji DllMain w bibliotece DLL aplikacji, co może potencjalnie powodować zakleszczenia" – czz