| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1432 人关注过本帖
标题:求教Createfile函数在MFC中的使用?
只看楼主 加入收藏
tk1223108078
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2013-7-18
结帖率:77.78%
收藏
已结贴  问题点数:20 回复次数:8 
求教Createfile函数在MFC中的使用?
这个是我再控件上添加的响应函数
UpdateData(TRUE);
    int j;
    unsigned char buf[512];
    OVERLAPPED overlap;
    HANDLE hFile = CreateFile(_T("\\\\.\\PhysicalDrive0"),//打开磁盘
                         GENERIC_READ|GENERIC_WRITE,
                       FILE_SHARE_READ,
                       NULL,
                       OPEN_EXISTING,
                 0,//FILE_FLAG_OVERLAPPED,
                       NULL);
    DWORD RSize=0;
    overlap.OffsetHigh = (DWORD)( 63*512ull / 0x100000000ull );//读取磁盘的偏移
    overlap.Offset     = (DWORD)( 63*512ull % 0x100000000ull );
    ReadFile(hFile, buf, 512, &RSize, &overlap);//读取磁盘
    CloseHandle(hFile);
    for(j=0;j<512;j++)
    {   
        CString buf1[1000]={0};
        if(buf[j]/16%16==0)
        {
            buf1[j].Format(_T("0%X "),buf[j]);
            if((j+1)%16==0&&(j+1))
            {
                buf1[j].Format(_T("0%X"),buf[j]);
            }
        }   
        else
        {
            buf1[j].Format(_T("%2X "),buf[j]);
            if((j+1)%16==0&&(j+1))
            {
                buf1[j].Format(_T("%2X"),buf[j]);
            }
        }
        m_sector+=buf1[j];//将数据赋值给控件上添加的局部变量
    }   
    UpdateData(FALSE);
但是在调试的过程中发现打开磁盘读取时buf数组赋值完全不正确全部都是CC,想请问一下是哪里出了问题?
调试的截图如下:
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册
2013-11-27 16:51
tk1223108078
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2013-7-18
收藏
得分:0 
感觉上是createfile函数使用上有点问题
2013-11-27 16:52
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
1 你没有判断一下你是否打开
2 你没有判断一下你是否读取数据成功

两部操作是都要判断

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-11-27 19:05
tk1223108078
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2013-7-18
收藏
得分:0 
回复 3楼 yuccn
打开成功如何判断了?是看Buf里有没有数据吗?buf里的数据全是204,不知道这算不算是读成功了。
2013-11-27 22:00
tk1223108078
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2013-7-18
收藏
得分:0 
回复 3楼 yuccn
我试过将读取位置的偏移取消掉时,可以正确的读取文件,这个可以证明你所说已经运行了,只是偏移上出了问题?但是我不知道如何修改偏移?能看一下我的问题在哪里吗?
2013-11-28 12:39
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
哥哥,细细看看api接口的说明文档

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-11-28 13:54
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
多多查查msdn

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-11-28 13:54
tk1223108078
Rank: 1
等 级:新手上路
帖 子:45
专家分:0
注 册:2013-7-18
收藏
得分:0 
回复 7楼 yuccn
已经查了MSDN里的readfile函数,觉得格式已经对上了,真心不知道偏移哪里出了错误
2013-11-29 20:40
xyt2012
Rank: 2
等 级:论坛游民
帖 子:11
专家分:47
注 册:2013-11-1
收藏
得分:10 
多多查查msdn
2013-11-30 23:43
快速回复:求教Createfile函数在MFC中的使用?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022206 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved