CreateFile和CFile的困惑(100分),大侠救命

wutaihua 2008-04-17 11:20:44
我用CreateFile打开一个文件,在没有关闭的情况下,我去打开同分区的另外一个文件,如下:
HANDLE hDev;
hDev = CreatFile("g:\\001.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0 , NULL);
if(hDev == NULL ¦ ¦ hDev == INVALID_HANDLE_VALUE)
{
return FALSE;
}
cFile file;
CFileException pError;
BOOL bFlg = file.Open("g:\\002.txt", CFile::modeRead,&pError); //这步的时候出错了,打不开文件啊。超级郁闷。错误号是5,拒绝访问,各位大侠救命

if(!bFlg ¦ ¦ pError != 0)
{
return FALSE;
}
file.Read(...);
file.Close();
...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-04-17
  • 打赏
  • 举报
回复
只有Open返回FALSE时,才需要pError。
clever101 2008-04-17
  • 打赏
  • 举报
回复
我的测试结果,没有错误发生,测试代码如下:

void CTestDlg::OnOK()
{
// TODO: Add extra validation here
HANDLE hDev;
hDev = ::CreateFile("E:\\Program\\001.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0 , NULL);
if(hDev == NULL||hDev == INVALID_HANDLE_VALUE)
{
return ;
}
CFile file;
CFileException pError;
BOOL bFlg = file.Open("E:\\Program\\002.txt", CFile::modeRead,&pError);


if((bFlg==FALSE))
{
return ;
// pError.ReportError();
}
file.Close();

}

楼主的
if(!bFlg ¦ ¦ pError != 0) 中的pError != 0是多余的
zoulie 2008-04-17
  • 打赏
  • 举报
回复
搂主自己写代码仔细点,譬如楼上说的,我测试过代码,没有说打不开,都能打开的
clever101 2008-04-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 wutaihua 的帖子:]
我用CreateFile打开一个文件,在没有关闭的情况下,我去打开同分区的另外一个文件,如下:
HANDLE hDev;
hDev = CreatFile("g:\\001.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0 , NULL);
if(hDev == NULL ¦ ¦ hDev == INVALID_HANDLE_VALUE)
{
return FALSE;
}
cFile file;
CFileException pError;
BOOL bFlg = file.Open("g:\\002.txt", CFile::modeRead,&pError); //这步的时候出错了,打不开文…
[/Quote]


楼主的代码写得乱七八糟的,严重怀疑楼主能否编译通过。CreatFile应是CreateFile,还有cFile应是CFile(C++代码是区分大小写的),还有pError != 0这一句,能这样比较吗?估计是&pError != 0吧。
yusheng9966 2008-04-17
  • 打赏
  • 举报
回复
是不是中毒了?
  • 打赏
  • 举报
回复
CFile也得共享读吧
jameshooo 2008-04-17
  • 打赏
  • 举报
回复
奇特,问题少见,帮顶。
难道是文件权限的问题?
wutaihua 2008-04-17
  • 打赏
  • 举报
回复
我是楼主,提示下,第一个文件是可以打开成功的,但是运行了第一个CreateFile后,我试着去双击硬盘,就已经打不开了,以后就不用说了。相反,如果你先用CFile,再用CreateFile,就可以,然后如果再用CFile,就挂了,不知道是怎么回事!有谁可以解决啊
wutaihua 2008-04-17
  • 打赏
  • 举报
回复
谢谢楼上各位的指点,问题找到了,不是我代码的问题,是上层传递进来的数据有问题,循环传递进来的都是同一个文件夹,导致占用失败了!
PS:那段代码是我匆匆写上去的,拼写错误是我的失误。在此谢谢大家的批评。不过我写的工程代码是可以编译通过完成功能的!
chenyu2202863 2008-04-17
  • 打赏
  • 举报
回复
CreateFile失败只会返回INVALID_HANDLE_VALUE

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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