Est-il possible de savoir si WSAStartup a été appelé dans un processus?
J'ai commencé la rédaction d'un contrôle ActiveX qui rend l'utilisation des sockets.
Applications qui utilisent ce contrôle peut ou peut ne pas aussi utiliser des sockets.
Est-il possible pour mon contrôle pour savoir si WSAStartup a été appelé?
Si pas, appelez-elle. Un petit test révèle que l'appel de WSAStartup plusieurs fois est tollerated.
Mais ce qui se passe si une autre version de winsock qui est demandé? va ce casser d'autres parties de l'application?
source d'informationauteur Matt
Vous devez vous connecter pour publier un commentaire.
Oui c'est possible.
Et voici comment c'est fait.
Mais ce n'est pas vraiment nécessaire pour ce faire. C'est tout à fait sûr d'appeler WSAStartup à tout moment. Il est également sans danger à la fin de chaque appel réussi à WSAStartup() avec un appel à WSACleanup().
par exemple
Non, il n'est pas possible de dire si
WSAStartup()
a déjà été appelée.Oui,
WSAStartup()
peut être appelée plusieurs fois dans un même processus, aussi longtemps que la version demandée est pris en charge par la DLL WinSock. Les appels àWSAStartup()
etWSACleanup()
doit être équilibré.WinSock l'initialisation d'un processus de négociation; vous êtes responsable de la validation de l'info que
WSAStartup()
retourne pour s'assurer qu'il répond à votre application.Existant sockets ne sont pas affectées par la suite
WSAStartup()
appels.Prises multiples à l'aide de différents WinSock versions est autorisé.
Voir le
WSAStartup()
de la documentation pour plus d'informations.