Ho iniziato a scrivere un controllo ActiveX che fa uso di socket.È possibile stabilire se WSAStartup è stato chiamato in un processo?
Le applicazioni che utilizzano questo controllo possono utilizzare o meno anche le prese. È possibile per il mio controllo dire se WSAStartup è stato chiamato?
In caso contrario, chiamarlo. Un piccolo test rivela che la chiamata a WSAStartup più volte è tollerata. Ma cosa succede se viene richiesta una versione di winsock diversa? questo interromperà altre parti dell'applicazione?
Non dimenticare di chiamare 'closesocket()' se 'socket()' ha successo in 'WinsockInitialized()', altrimenti c'è una perdita. –
buon punto! risolto quello. – Matt
Non è sicuro chiamare WSAStartup in qualsiasi momento. Da MSDN: "La funzione WSAStartup in genere porta a DLL helper specifiche del protocollo che vengono caricate. Di conseguenza, la funzione WSAStartup non deve essere chiamata dalla funzione DllMain in una DLL dell'applicazione. Ciò può potenzialmente causare deadlock" – czz