一段windows程序,求帮助
不太清楚windows编程,看书时看到这里不懂,请大侠帮忙增加所需代码,并且增加可以让它执行的驱动程序。
使用时调用了CreatNamePipe,没有检查是否返回了INVALID_HANDLE_VALUE;也没有调用GetLastError检查是否返回了ERROR_ACDESS_DENIED。
使用时调用了CreateMutex,没有检查是否返回了NULLbn没有调用应添加检查返回值的代码,并处理异常情况。
void foo(){
BOOL fConnected;
LPTSTR lpszPipename=TEXT("\\\\.\\pipe\\mynamedpipe");
HANDLE hPipe;
hPipe=CreateNamedPipe(
lpszPipename,
FILE_FLAG_MESSAGE |
PIPE_READMODE_MESSAGE |
PIPE_WAIT,
PIPE_UNLIMITED_INSTANCES,
BUFSIZE,
BUFSIZE,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
fConnected=ConnectNamedPipe(hPipe,NULL)?
TRUE:(GetLastError()==ERROR_PIPE_CONNECTED);
/*.....*/
return 0;
}
[解决办法]
使用时调用了CreatNamePipe,没有检查是否返回了INVALID_HANDLE_VALUE;也没有调用GetLastError检查是否返回了ERROR_ACDESS_DENIED。
使用时调用了CreateMutex,没有检查是否返回了NULLbn没有调用应添加检查返回值的代码,并处理异常情况。
-----------
不是已经说的很清楚了吗?
[解决办法]
建议看Visual C++网络编程经典案例详解,对于进程通信(管道)有详细实例。创建管道应该会是成功的。可能出错在connect。 并且这个用写入和读出两个程序。