После того, как сервер создал именованный канал, он должен дождаться соединения клиента с этим каналом. Для этого сервер вызывает функцию
BOOL ConnectNamedPipe (
HANDLE hNamedPipe, // дескриптор канала
LPOVERLAPPED lpOverlapped // асинхронная связь
);
которая возвращает значение TRUE в случае успеха или значение FALSE в случае неудачи. Сервер может использовать эту функцию для связи с клиентом по каждому новому экземпляру именованного канала.
После окончания обмена данными с клиентом, сервер может вызвать функцию
BOOL DisconnectNamedPipe (
HANDLE hNamedPipe // дескриптор канала
);
которая возвращает значение TRUE в случае успеха или значение FALSE в случае неудачи. Эта функция разрывает связь сервера с клиентом. После этого клиент не может обмениваться данными с сервером по данному именованному каналу и поэтому любая операция доступа к именованному каналу со стороны клиента вызовет ошибку. После разрыва связи с одним клиентом, сервер снова может вызвать функцию ConnectNamedPipe, чтобы установить связь по этому же именованному каналу с другим клиентом.