Comment corriger l’erreur Pipe Not Connected 233 (0xE9)
L’erreur ERROR_PIPE_NOT_CONNECTED est un problème courant rencontré par les développeurs, généralement accompagné du message 233 (0xE9) indiquant qu’aucun processus n’est connecté au tuyau. Si vous rencontrez cette erreur, cet article fournit plusieurs solutions pour la résoudre efficacement.
Quelles mesures puis-je prendre pour résoudre ERROR_PIPE_NOT_CONNECTED ?
1. Modifiez votre code
- Accédez à vos fichiers de code.
- Confirmez ce que vous avez
PIPE_NOWAIT
défini dans votre code. - Implémentez-le dans votre code comme suit :
DWORD mode = PIPE_NOWAIT;SetNamedPipeHandleState(_callstackPipe,&mode,NULL,NULL);ConnectNamedPipe(_callstackPipe,NULL);mode = PIPE_WAIT;SetNamedPipeHandleState(_callstackPipe,&mode,NULL,NULL);
- Sauvegarder les modifications.
2. Implémenter ConnectNamedPipe
- Révisez votre code.
- Si vous rencontrez ERROR_PIPE_NOT_CONNECTED lors de l’utilisation de ReadFile, cela indique que la connexion à l’extrémité distante a été perdue.
- Dans cette situation, envisagez d’utiliser ConnectNamedPipe sans appeler initialement DisconnectNamedPipe .
3. Intégrer un thread d’écoute après ConnectNamedPipe()
- Ouvrez votre éditeur de code.
- Modifiez votre implémentation pour inclure un thread d’écoute, permettant la prochaine connexion client comme indiqué ici :
Main Thread{ CreateListenerThread(); WaitForQuitEvent();}ListenerThread{ ConnectNamedPipe(); if (success) { CreateListenerThread(); if(PeekNamedPipe() detects a message) { ReadFile(); ProcessReceivedMessage(); // if a -quit signal is detected, trigger quit event } FileFlushBuffers(); DisconnectNamedPipe(); CloseHandle(); } else { // manage/report error }}
- N’oubliez pas d’enregistrer les modifications.
4. Activer l’héritage
- Accédez à vos fichiers de code.
- Incorporer la ligne suivante :
BOOL res = SetHandleInformation(hPipe, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
- Sauvegardez ces mises à jour.
Ce réglage activera l’héritage du handle, résolvant potentiellement le problème.
Laisser un commentaire