The docs indicate you can only CreateFile
once in a single client, after that you have to duplicate the returned handle:
If CreateFile opens the client end of a named pipe, the function uses any instance of the named pipe that is in the listening state. The opening process can duplicate the handle as many times as required, but after it is opened, the named pipe instance cannot be opened by another client.
Pipes are a point-to-point transport. If you want other apps to connect to your server, they will need their own pipe instance, which means another CreateNamedPipe call on the server.