Fonction de rappel LPWSPCLEANUP (ws2spi.h)
La fonction LPWSPCleanup met fin à l’utilisation du fournisseur de services Windows Sockets.
Syntaxe
LPWSPCLEANUP Lpwspcleanup;
int Lpwspcleanup(
[out] LPINT lpErrno
)
{...}
Paramètres
[out] lpErrno
Pointeur vers le code d’erreur.
Valeur retournée
La valeur de retour est zéro si l’opération a été lancée avec succès. Sinon, la valeur SOCKET_ERROR est retournée et un numéro d’erreur spécifique est disponible dans lpErrno.
Code d'erreur | Signification |
---|---|
Un appel **WSPStartup** réussi doit se produire avant d’utiliser cette fonction. | |
Le sous-système réseau a échoué. | |
L’identificateur de fournisseur donné au fournisseur d’espace de noms n’est pas géré par le fournisseur d’espace de noms. |
Remarques
Le client SPI Windows Sockets 2 est requis pour effectuer un appel WSPStartup réussi avant de pouvoir utiliser des fournisseurs de services Winsock. Une fois l’utilisation de fournisseurs de services Winsock terminée, le client SPI appelle LPWSPCleanup pour se désinscrire d’un fournisseur de services Winsock et autoriser le fournisseur de services à libérer toutes les ressources allouées pour le compte du client Windows Sockets 2. Les clients SPI peuvent effectuer plusieurs appels WSPStartup . Pour chaque appel WSPStartup , un appel LPWSPCleanup correspondant est également émis. Seul le LPWSPCleanup final pour le fournisseur de services effectue le nettoyage réel ; les appels précédents décrémentent simplement un nombre de références internes dans le fournisseur de services Winsock.
Lorsque le nombre de références internes atteint zéro et que les opérations de nettoyage réelles commencent, tous les appels bloquants ou asynchrones en attente émis par un thread dans ce processus sont annulés sans publier de messages de notification ni signaler d’objets événement. Toutes les opérations d’envoi et de réception en attente qui se chevauchent (LPWSPSend, LPWSPSendTo, LPWSPRecv,LPWSPRecvFrom avec un socket superposé) émises par un thread dans ce processus sont également annulées sans définir l’objet événement ou appeler la routine d’achèvement, si elle est spécifiée. Dans ce cas, les opérations en attente qui se chevauchent échouent avec l’erreur status WSA_OPERATION_ABORTED. Tous les sockets ouverts lorsque LPWSPCleanup est appelé sont réinitialisés et libérés automatiquement comme si LPWSPCloseSocket était appelé ; Les sockets qui ont été fermés avec LPWSPCloseSocket mais qui ont toujours des données en attente à envoyer ne sont pas affectés, mais les données en attente sont toujours envoyées.
Cette fonction ne doit pas être retournée tant que la DLL du fournisseur de services n’est pas prête à être déchargée de la mémoire. En particulier, toutes les données restantes à transmettre doivent avoir déjà été envoyées ou être mises en file d’attente pour la transmission par des parties de la pile de transport qui ne seront pas déchargées de la mémoire avec la DLL du fournisseur de services.
Un fournisseur de services Winsock doit être prêt à traiter un processus qui se termine sans appeler LPWSPCleanup (par exemple, suite à une erreur). Un fournisseur de services Winsock doit s’assurer que LPWSPCleanup laisse les éléments dans un état dans lequel le Ws2_32.dll peut appeler immédiatement WSPStartup pour rétablir l’utilisation de Winsock.
Spécifications
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | ws2spi.h |