Comencé a escribir un control ActiveX que hace uso de sockets.¿Es posible saber si WSAStartup ha sido llamado en un proceso?
Las aplicaciones que usan este control también pueden o no usar sockets. ¿Mi control puede indicar si se ha llamado a WSAStartup?
Si no, llámalo. Una pequeña prueba revela que llamar a WSAStartup varias veces es tolerado. ¿Pero qué ocurre si se solicita una versión diferente de winsock? ¿Esto romperá otras partes de la aplicación?
No olvides llamar 'closesocket()' si 'socket()' tiene éxito en 'WinsockInitialized()', de lo contrario, tienes una fuga. –
¡buen punto! arregló eso. – Matt
No es seguro llamar a WSAStartup en cualquier momento. Desde MSDN: "La función WSAStartup normalmente lleva a que se carguen archivos DLL auxiliares específicos del protocolo. Como resultado, la función WSAStartup no se debe invocar desde la función DllMain en una DLL de aplicación. Esto puede provocar interbloqueos" – czz