看孙鑫VC++17章视频关于命名管道的代码总是运行出错,求大神指导
mfc吧
全部回复
仅看楼主
level 1
哦迪l 楼主
VIEW类已经填加了成员对象HANDLE hPipe,构造函数赋值为NULL,析构函数中关闭句柄。
错误显示是"等待客户端连接失败",已经用GetlastError(),获得了错误代码1400,显示是WINDOWS句柄无效,不知道哪里错了?求助!我用的是VS2008,日文版的。
hPipe=CreateNamedPipe(_T("\\\\.\\pipe\\Mypipe"),PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED,0,1,1024,1024,0,NULL);
if(INVALID_HANDLE_VALUE==hPipe)
{
MessageBox(_T("创建命名管道失败"));
hPipe=NULL;
return ;
}
HANDLE hEvent;
hEvent=CreateEvent(NULL,true,false,NULL);
if (!hEvent)
{
MessageBox(_T("创建事件失败"));
CloseHandle(hPipe);
hPipe=NULL;
return;
}
OVERLAPPED ovlp;
ZeroMemory(&ovlp,sizeof(OVERLAPPED));
ovlp.hEvent=hEvent;
if(!ConnectNamedPipe(hPipe,&ovlp))//这条创建失败下面用MessagexBox,显示了错误代码
{
if(ERROR_PIPE_CONNECTED!=GetLastError())
{
MessageBox(_T("等待客户端连接失败"));
// CString str;
//str.Format(_T("%d"),GetLastError());这里获取错误代码1400,WINDOW句柄无效!
//MessageBox(str);
CloseHandle(hPipe);
CloseHandle(hEvent);
hPipe=NULL;
return;
}
}
if(WaitForSingleObject(hEvent,INFINITE)==WAIT_FAILED )
{ MessageBox(_T("等待对象失败"));
CloseHandle(hPipe);
CloseHandle(hEvent);
hPipe=NULL;return;
}
CloseHandle(hEvent);
2013年06月05日 07点06分 1
level 8
我也是,还在解决中!
2014年09月18日 13点09分 2
1