ConnectNamedPipe не реагирует на подключение
От: Northsoft  
Дата: 09.06.10 13:50
Оценка:
Доброго всем дня. После вызова CreateNamedPipe с указанием асинхронного режима создаю событие, записываю его в Overlapped-структуру, ответвляюсь в новый поток и там вызываю WaitForSingleObject для ожидания подключения клиента. Но WaitForSingleObject не реагирует на подключение клиента.
Сервер:
OVERLAPPED ovlGlobal;
HANDLE hPipeGlobal;

unsigned long int __stdcall ConnectNamedPipeThreadProc(void *parameter){
  ovlGlobal.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
  ConnectNamedPipe(hPipeGlobal,&ovlGlobal);
  WaitForSingleObject(ovlGlobal.hEvent,INFINITE);
  /* зедсь находится вызов ReadFileEx */
}

void CreateButtonClick(){
  wchar_t pipepath[600]=L"\\\\.\\pipe\\123123";

  hPipeGlobal = CreateNamedPipe(pipepath,
    PIPE_ACCESS_DUPLEX|FILE_FLAG_FIRST_PIPE_INSTANCE|FILE_FLAG_OVERLAPPED,
    PIPE_TYPE_MESSAGE|PIPE_NOWAIT,
    PIPE_UNLIMITED_INSTANCES,
    64*1024,
    64*1024,
    60*1000,
    NULL);
  CreateThread(NULL,0,ConnectNamedPipeThreadProc,NULL,0,NULL);
}



Клиент:
void ConnectButtonClick(){
  wchar_t pipename[600]=L"\\\\.\\pipe\\123123";

  hPipeGlobal = CreateFile(pipepath,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
  /* здесь находится вызов ReadFileEx */
}


У всех системных вызовов смотрится возвращаемое значение, там ничего необычного.
Как вы считаете, что здесь может быть не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.