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

0泡_泡0 0泡_泡0 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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()给通道中写数据时,程序就会停止,利用断点也是,一旦第二次走的这个地方,就会死掉,各位大神这个到底是什么问题啊!我在网上查了一些资料,有人说这是同步和异步处理的问题,但是自己是新手,对这个问题不是很懂,请各位高手帮帮忙啊~!
...全文
评论 2
收藏 已收藏
分享
返回顶部
0泡_泡0
C++ 语言 65,214 成员 250,514 内容