Вообщем есть следующий механизм:
Нужно осуществить связь процесса Сервера, который читает сообщения, и процессов клиентов которые это сообщения туда пишут...:
Так вот алгоритм мой таков:
1. В процессе сервере создается Именнованный пайп и начаниет циклиться читая сообщения:
hMainPipe = CreateNamedPipe(MainPipeName,PIPE_ACCESS_INBOUND,
PIPE_TYPE_MESSAGE,PIPE_UNLIMITED_INSTANCES,
0,0,NMPWAIT_USE_DEFAULT_WAIT,0);
while (TRUE)
{
fSuccess=ReadFile(hMainPipe,temp_name,22*sizeof(char),&temp_int,0);
if (fSuccess && (temp_int==22*sizeof(char)))
{
// Îáðàáîòêà ïîñòóïèâøåãî ñîîáùåíèÿ...
if (FLAG_EXIT) break;
}
}
... Соответственно Пайп создается почти нормально (см.предыдущее моё сообщение в этом форуме)...
2. В Процессе Клиенте происходит следующее:
HANDLE hPipe1 = CallNamedPipe(MainPipeName,temp_pipepath,22*sizeof(char),0,0,&temp_int,NMPWAIT_WAIT_FOREVER))
CloseHandle(hPipe1);
DWORD result = GetLastError();
А в результате:
при запуске одного экземпляра такого процесса все проходит нормально....сообщение проходит...
Однако при запуске второго и последующих экземпляров: hPipe1 = 0xffffffff;
а GetLastError выдает ошибку: 0xe7: т.е. Все копии канала заняты....
Если кто-нить понял в чём моя ошибка... подскажите плиз...
p.s. ( Если вместо CallNamedPipe использовать CreateFile и WriteFile то получается тот же результат...)