Помогите разобраться с проблемой. У меня служба не хочет сотрудничать с процессами.
/// СЕРВЕРНАЯ ЧАСТЬ (в службе) ////////
событие взводится когда клиент прочитает содержимое
UserFekEvent = OpenEvent(SYNCHRONIZE,FALSE,USER_FEK_EVENT);
создаю канал
hPipe = CreateNamedPipe(FEK_PIPE_NAME,
PIPE_ACCESS_OUTBOUND,
PIPE_TYPE_MESSAGE | PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
sizeof(DWORD),
sizeof(DWORD),
100,
NULL);
ConnectNamedPipe( hPipe, NULL );
..
пишу в него
WriteFile(hPipe,&SendBuf,sizeof(DWORD),&w,NULL);
...
жду когда клиент прочитает ...
WaitForSingleObject(UserFekEvent,INFINITE);
и разрываю соединение....
DisconnectNamedPipe( hPipe, NULL );
////// КЛИЕНТСКАЯ ЧАСТЬ //////////
hEvent = CreateEvent(NULL,TRUE,FALSE,USER_FEK_EVENT);
hPipe = CreateFile(FEK_PIPE_NAME,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
.. читаю из канала
ReadFile(hPipe,&Buf,sizeof(DWORD),&w,NULL);
.. закрываю
CloseHandle(hPipe);
printf("\nFEK %u",Buf);
.. взвожу событие канал прочитан
SetEvent(hEvent);
Проблема в том, что при первом запуске все работает нормально, но при последующих (до перезагрузки службы) выдается ошибка при открытии канала на клиенте ERROR_PIPE_BUSY.
Здравствуйте, SBoyko, Вы писали:
SB>Помогите разобраться с проблемой. У меня служба не хочет сотрудничать с процессами.
SB>и разрываю соединение.... SB>DisconnectNamedPipe( hPipe, NULL );
Здравствуйте, Carface, Вы писали:
C>CloseHandle(hPipe) ; // Это делается ?
да делается
Re[3]: Именованные каналы
От:
Аноним
Дата:
19.03.03 09:55
Оценка:
Здравствуйте, SBoyko, Вы писали:
попробуй на клиенте подожать, пока pipe освободится (через WaitNamedPipe, пример есть в MSDN). возможно клиент пыиается законнектиться пока сервер еще не успел сделать Disconnect от предыдущего клиента.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, SBoyko, Вы писали:
А>попробуй на клиенте подожать, пока pipe освободится (через WaitNamedPipe, пример есть в MSDN). возможно клиент пыиается законнектиться пока сервер еще не успел сделать Disconnect от предыдущего клиента.
Все, спасибо всем участникам обсуждения, ЗАРАБОТАЛО