WriteFile()问题,请求各位高手帮帮忙啊!急求!!!

0泡_泡0 2012-04-21 09:22:09

HANDLE hPipeInputRead, hPipeInputWrite, hPipeOutputRead, hPipeOutputWrite;

//创建两个管道
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
//数据输入管道
CreatePipe(&hPipeInputRead, &hPipeInputWrite, &sa, 0);
//数据输出管道
CreatePipe(&hPipeOutputRead, &hPipeOutputWrite, &sa, 0);

//从文件中读取数据,写入管道ReadFile中.
const int BUFSIZE = 4096;
CHAR chBuf[BUFSIZE] = {0};
DWORD dwRead, dwWritten;
BOOL fSuccess;
HANDLE hInputFile = CreateFile("infile.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0/*FILE_ATTRIBUTE_READONLY*/, NULL);
while (true)
{

//从文件中读取数据
fSuccess = ReadFile(hInputFile, chBuf, BUFSIZE, &dwRead, NULL);
if (!fSuccess || dwRead == 0)
break;
//将数据写入管道
fSuccess = WriteFile(hPipeInputWrite, chBuf, dwRead, &dwWritten, NULL);
memset(chBuf,0,BUFSIZE); //数据清空
if (!fSuccess)
break;
}

//关闭输入数据管道
CloseHandle(hInputFile);
hInputFile = NULL;
CloseHandle(hPipeInputWrite);
hPipeInputWrite = NULL;



WriteFile(),我用它来读取一个TXT文件中的数据,如果数据比较小,一次可以读完的话,程序基本上没有问题。但是如果一次没有读完,第二次再进去读取数据,然后再利用WriteFile()给通道中写数据时,程序就会停止,利用断点也是,一旦第二次走的这个地方,就会死掉,各位大神这个到底是什么问题啊!我在网上查了一些资料,有人说这是同步和异步处理的问题,但是自己是新手,对这个问题不是很懂,请各位高手帮帮忙啊~!
...全文
110 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
0泡_泡0 2012-04-21
  • 打赏
  • 举报
回复
你说的是chBuf[]里面的内容??
jixingzhong 2012-04-21
  • 打赏
  • 举报
回复
buffer的内容正确不?

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧