¿Cómo hacer que una tubería con nombre no esté ocupada después de que el cliente se haya desconectado?

Utilizo una canalización con nombre y quiero reutilizar la misma tubería en el servidor para permitir la conexión de otro cliente una vez que el cliente original se haya desconectado. Lo que hago es:

servidor crea una tubería utilizandoCreateNamedPipeel servidor escribe datos usandoWriteFile, y vuelve a intentarlo siempre y cuando el errorERROR_PIPE_LISTENING es devuelto (que es antes de que cualquier cliente se conecte)clientes se conecta usandoCreateFileel cliente lee los datosusando la manija del tubo de cierreCloseHandleen este punto el servidor recibe un errorERROR_NO_DATA cuando intenta escribir mas datosservidor desconecta el tubo utilizandoDisconnectNamedPipe, que esperaba que fuera libre de nuevoservidor intenta escribir datos, obtiene errorERROR_PIPE_NOT_CONNECTED, vuelve a intentarlo hasta que no haya ningún errorsin embargo, cuando el nuevo cliente se conecta, e intentaCreateFile en la tubería, se poneERROR_PIPE_BUSY

Por lo tanto, mi pregunta es: ¿qué otros pasos debo seguir para desconectar al cliente de la tubería de manera adecuada para que un nuevo cliente pueda conectarse?

Respuestas a la pregunta(2)

Su respuesta a la pregunta