Доброго всем дня. После вызова 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 */
}
У всех системных вызовов смотрится возвращаемое значение, там ничего необычного.
Как вы считаете, что здесь может быть не так?