注册 登录
编程论坛 VC++/MFC

求教Createfile函数在MFC中的使用?

tk1223108078 发布于 2013-11-27 16:51, 1432 次点击
这个是我再控件上添加的响应函数
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,想请问一下是哪里出了问题?
调试的截图如下:
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
8 回复
#2
tk12231080782013-11-27 16:52
感觉上是createfile函数使用上有点问题
#3
yuccn2013-11-27 19:05
1 你没有判断一下你是否打开
2 你没有判断一下你是否读取数据成功

两部操作是都要判断
#4
tk12231080782013-11-27 22:00
回复 3楼 yuccn
打开成功如何判断了?是看Buf里有没有数据吗?buf里的数据全是204,不知道这算不算是读成功了。
#5
tk12231080782013-11-28 12:39
回复 3楼 yuccn
我试过将读取位置的偏移取消掉时,可以正确的读取文件,这个可以证明你所说已经运行了,只是偏移上出了问题?但是我不知道如何修改偏移?能看一下我的问题在哪里吗?
#6
yuccn2013-11-28 13:54
哥哥,细细看看api接口的说明文档
#7
yuccn2013-11-28 13:54
多多查查msdn
#8
tk12231080782013-11-29 20:40
回复 7楼 yuccn
已经查了MSDN里的readfile函数,觉得格式已经对上了,真心不知道偏移哪里出了错误
#9
xyt20122013-11-30 23:43
多多查查msdn
1