首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

createfile连续打开多个文件后,readfile总返回0?解决思路

2012-02-27 
createfile连续打开多个文件后,readfile总返回0?????我用createfile连续打开多个文件(句柄为关闭),这样应

createfile连续打开多个文件后,readfile总返回0?????
我用createfile连续打开多个文件(句柄为关闭),这样应该可以吧?
可我在读一个文件时,返回实际读取值,总是0,而且一会儿后,有时183错误(“当文件已存在时,无法创建该文件”),
也就是文件创建都失败了,这是怎么回事哦?

[code=char *dyBuffer2 = new char[6*512];
HANDLE hin= CreateFile(".\\rein.exe",GENERIC_READ,
    FILE_SHARE_READ|FILE_SHARE_WRITE,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if (hin != INVALID_HANDLE_VALUE)
{

  ReadFile(hin,dyBuffer2,GetFileSize(hin,NULL),&dwRet,0);//先读入到缓冲区
  printf("%d\n",GetLastError());
  printf("读取rein%d\n",dwRet);
  CloseHandle(hin);

SetFilePointer(hDev,40*512,0,FILE_BEGIN);
WriteFile(hDev,dyBuffer2,6*512,&dwRet,0);//写入到另一个文件
printf("保存rein%d\n",dwRet);

}
else{
printf("rein.exe error\n");
}
C/C++][/code]

[解决办法]
你到底是读文件失败还是打开文件失败??

GetFileSize返回的啥?直接指定个长度,比如100,看看能不能读出100字节。
[解决办法]
打开自己?这当然有问题啊
[解决办法]
把FILE_SHARE_WRITE 去了,试试?
[解决办法]
BOOL ReadFile(
  HANDLE hFile, //文件的句柄
  LPVOID lpBuffer, //用于保存读入数据的一个缓冲区
  DWORD nNumberOfBytesToRead, //要读入的字符数
  LPDWORD lpNumberOfBytesRead, //指向实际读取字节数的指针
  LPOVERLAPPED lpOverlapped //如文件打开时指定了FILE_FLAG_OVERLAPPED,那么必须,用这个参数引用一个特殊的结构。该结构定义了一次异步读取操作。否则,应将这个参数设为NULL
  );

lz把GetFileSize的返回值打印一下试试

热点排行