免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2845 | 回复: 6

[C++] windows下按块写文件 [复制链接]

论坛徽章:
0
发表于 2011-07-20 08:46 |显示全部楼层
BOOL WriteSectors(BYTE bDrive, DWORD dwStartSector, WORD wSectors, LPBYTE lpSectBuff)

// 对磁盘扇区数据的写入

{

        if (bDrive == 0) return 0;

        char devName[] = "\\\\.\\A:";

        devName[4] =bDrive;                        //把磁盘的盘符换成需要写入的盘符bDrive

        HANDLE hDev = CreateFile(devName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);

        if (hDev == INVALID_HANDLE_VALUE) return 0;

        SetFilePointer(hDev, 512 * dwStartSector, 0, FILE_BEGIN);

        DWORD dwCB;

        BOOL bRet;
        for(int j=0;j<wSectors;j++)        //wSectors需要写入的扇区数
        {
                bRet = WriteFile(hDev, lpSectBuff, 512, &dwCB, NULL);
                //write(hDev, lpSectBuff, sizeof(lpSectBuff));
                printf("\n写入一个扇区!\r\n");
        }


        CloseHandle(hDev);
       
        return bRet;

}


我想通过上面的代码实现按块写某个磁盘的指定扇区内容,程序没有问题,但是没有改变内容。
按块读取用相同的方法是可以成功的。

论坛徽章:
0
发表于 2011-07-20 08:47 |显示全部楼层
我调试发现,bRet = WriteFile(hDev, lpSectBuff, 512, &dwCB, NULL); 这句bRet 返回值为0,说明没有写成功,求指点

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2011-07-20 08:51 |显示全部楼层
WriteFile之后调用GetLastError,看错误号是多少

论坛徽章:
0
发表于 2011-07-20 08:53 |显示全部楼层
GetLastError()返回值是5

论坛徽章:
0
发表于 2011-07-20 08:55 |显示全部楼层
〖5〗-拒绝访问。 应该是没有权限把,怎么能提高权限对磁盘直接写数据呢

论坛徽章:
0
发表于 2011-07-20 10:46 |显示全部楼层

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2011-07-20 11:15 |显示全部楼层
看看这个API  AdjustTokenPrivileges 有没有帮助
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP