• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

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();
...全文
146 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-17 11:20
社区公告

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