首页
社区
课程
招聘
[旧帖] win7 下 WriteFile 直接写扇区问题 0.00雪花
发表于: 2014-7-11 01:34 9406

[旧帖] win7 下 WriteFile 直接写扇区问题 0.00雪花

2014-7-11 01:34
9406
最近写个程序,需要调用WriteFile 对磁盘扇区进行直接写操作,在xp下顺利的写进去,可在win7下测试时(管理员权限),返回error code :5 ,没有权限,网上查了写资料,说win7下写磁盘 需要先锁定或者卸载磁盘 (使用FSCTL_LOCK_VOLUME  或者FSCTL_DISMOUNT_VOLUME 参数调用DeviceIoControl  )我在测试的时候 使用参数FSCTL_LOCK_VOLUME 时,返回错误号 :5 没有权限, 调用FSCTL_DISMOUNT_VOLUME时,程序直接崩溃,不知道什么原因,求大牛指导,要是有win7下写扇区的代码就更好了

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 220
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好像是要上驱动搞?
2014-7-11 05:56
0
雪    币: 8
活跃值: (233)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
3
你肯定是先CreateFile打开物理磁盘啊,然后再WriteFile啊。XP系统可以正常打开,Win7系统要管理员权限才能打开呢,你以管理员权限运行试试
2014-7-11 07:01
0
雪    币: 53
活跃值: (734)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
win7的话应该只允许前16扇区的写入。 你可以用同样的代码往2-15垃圾扇区写一下数据看看是否正常。
另外需要记住一点写扇区必须要512对齐 写入数量是512的倍数
2014-7-11 08:35
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
从文件指针指向的位置开始将数据写入到一个文件中, 且支持同步和异步操作,
如果文件打开方式没有指明FILE_FLAG_OVERLAPPED的话,当程序调用成功时,它将实际写入文件的字节数保存到lpNumberOfBytesWriten指明的地址空间中
如果文件要交互使用的话,当函数调用完毕时要记得调整文件指针
参数说明
HANDLE hFile, 需要写入数据的文件指针,这个指针指向的文件必须是GENERIC_WRITE access 访问属性的文件
LPOVERLAPPED lpOverlapped OVERLAPPED结构体指针,如果文件是以FILE_FLAG_OVERLAPPED方式打开的话,那么这个指针就不能为NULL
vc返回值
调用成功,返回非0
调用不成功,返回为0
用例:
DWORDdev_write(LPCVOIDbuf,DWORDNumBytes)//写数据 { DWORDwriteaddr=0; if(handle!=INVALID_HANDLE_VALUE) { WriteFile(handle,buf,NumBytes,&writeaddr,NULL); } returnwriteaddr;}
www.sytm.net/jiejuefangan
2014-7-11 11:36
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
6
4楼正解,5楼不知所云~
2014-7-11 12:28
0
雪    币: 110
活跃值: (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我试了有关版本的winhex就可以直接写,不是驱动,不知道他怎么做的
2014-7-11 18:42
0
雪    币: 110
活跃值: (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
xp上写扇区没有问题,问题在win7上,正如问题所述,已经是管理员权限了
2014-7-11 18:43
0
雪    币: 110
活跃值: (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
我试了winhex 可以对扇区进行写操作(win7下也可以),应该是没用驱动

引个链接:http://bbs.csdn.net/topics/360142228
2014-7-11 18:50
0
雪    币: 110
活跃值: (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
我试了winhex 可以对扇区进行写操作(win7下也可以),应该是没用驱动

引个链接:http://bbs.csdn.net/topics/360142228
2014-7-11 18:52
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
win7系统下,使用winhex也不是可以对任何扇区进行写操作的,LZ使用winhex测试的时候估计写的扇区比较靠前,LZ可以使用winhex多尝试几个不同的扇区试试,我测试过最新版的winhex是不行的,我以前跟LZ的想法一样认为winhex没有驱动就能完成,其实winhex是不行的。有关这个问题的讨论,很早就有大牛解释过了
http://hi.baidu.com/mj0011/item/508c92f188ede30fc6dc45cc
http://www.kafan.cn/thread-1073036-1-1.html

目前我自己选择的式通过驱动完成的,网上有很多例子代码.
2014-7-11 19:23
0
雪    币: 110
活跃值: (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
我已经用 winhex测试了,写的也不是靠前的扇区,我在磁盘随便找个文件进行覆盖的,
附上winhex 大概是15.8版本的http://pan.baidu.com/s/1dD7sUDr ,lz有兴趣可以测试下(所附绝不是恶意程序)。不太想用驱动,用驱动就不太符合程序的基本要求了,谢谢朋友
2014-7-11 19:50
0
雪    币: 110
活跃值: (298)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我貌似是在移动硬盘上覆盖的扇区
2014-7-11 20:29
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
4楼正确啊,嘿嘿
2014-7-12 00:31
0
游客
登录 | 注册 方可回帖
返回
//