ghostknightsy 发表于 2010-6-16 23:25:03

如何读写硬盘的最后一些扇区

DWORD SetFilePointer(

HANDLE hFile,

LONG lDistanceToMove,

PLONG lpDistanceToMoveHigh,

DWORD dwMoveMethod

);
我尝试着用这个函数移动指针,然后用 writeFile() ,readFile()读写函数,可结果
始终是 只能读写 前2g的硬盘,我用了   PLONG lpDistanceToMoveHigh,
这个参数了哦

另外就是,deviceIoControl(),用 IOCTL_DISK_GET_DRIVE_GEOMETR_EX啊,获取的总字节数/512 才为实际的扇区数,
CHS计算出的结果始终要小些,谁知道原因哦??

ghostknightsy 发表于 2010-6-16 23:25:25

高手 指教哦??

VICTORYBOY1180 发表于 2010-6-17 10:01:16

(38:看不懂o

jim19 发表于 2010-6-17 11:02:32

LONG lDistanceToMove,

PLONG lpDistanceToMoveHigh,
需要这两个参数高低位进行配合才能读取大磁盘。

ghostknightsy 发表于 2010-6-17 11:08:10

需要这两个参数高低位进行配合才能读取大磁盘。
我已经两个参数都用上了,就是无法读取后面的硬盘
另外我 在想 可不可以用 file_end这个标志位哦,
也就是setFilePointer()从硬盘末向前移动

jim19 发表于 2010-6-17 11:20:02

回复 5# ghostknightsy


    那样开发起来就麻烦多了! 程序复杂程度也大大增加了。

ghostknightsy 发表于 2010-6-17 11:35:40

回复 6# jim19


    不会啊,代码还更加少些呢,不过这个原因是为什么就不知道了
还有就是,deviceIoControl()函数获取C,H,S计算出的总扇区数也小于
硬盘的实际扇区数(磁盘工具获取的哦)

ghostknightsy 发表于 2010-6-17 11:36:23

咋感觉这里面 很少有人 谈 编程实现 的东东
许多都是在讲 各种各样的磁盘工具哦

jim19 发表于 2010-6-17 11:42:49

回复 8# ghostknightsy


    这里主要讨论修盘和数据恢复的,有兴趣加qq聊聊, 5 9 8 8 2 0 9 1 9

001015 发表于 2010-6-17 16:37:12

方便把代码贴出来吗? 你仔细看看你高双字参数用错了没?如果没有 则用异步版本试试
页: [1] 2
查看完整版本: 如何读写硬盘的最后一些扇区