主题:[原创]刚做的磁盘读取程序, 感谢精华帖, 版本0.4
w1212q
[专家分:660] 发布于 2009-05-03 19:07:00
现在已经是0.4了
[code]
Select Case GetSize
Case 512
ReDim MyN((GetSize * 2) - 1) As Byte
Case 1024
ReDim MyN(GetSize - 1) As Byte
Case 2048
ReDim MyN((GetSize \ 2) - 1) As Byte
Case 4096
ReDim MyN((GetSize \ 4) - 1) As Byte
End Select
[/code]
还是这个问题, 如果大家使用本程序有问题, 请回帖
最后更新于:2009-05-06 11:49:00
回复列表 (共10个回复)
沙发
guoyong_cy [专家分:3050] 发布于 2009-05-03 21:16:00
不好意思,以前的帖子上有个不妥的地方:
因为磁盘最小读取单位必须是扇区的倍数,而最大的扇区是4096byte,所以在没有读取磁盘信息的情况下,读取单位取4096才能确保对所有磁盘有效!
板凳
xjh22700 [专家分:320] 发布于 2009-05-04 02:13:00
我也感谢guoyong_cy,看过他的贴,真的很强!受益非浅!
用他的方法基本可以读取硬盘的绝大部分地方,只是MBR和EBR这两个地方目前我还没有能力读取,guoyong_cy路过的话请指点啊!
3 楼
一江秋水 [专家分:9680] 发布于 2009-05-04 08:49:00
试了一下,如果我一开始就直接点击cmdGet按纽,下面这一句发生75号错误:
Open GetPath For Binary As #inf
4 楼
一江秋水 [专家分:9680] 发布于 2009-05-04 08:58:00
另外建议在Form_Load过程中检测磁盘有几个分区,然后重新声明sel数组
5 楼
w1212q [专家分:660] 发布于 2009-05-04 12:08:00
4楼: '检测磁盘有几个分区' 这个我还不会, 也没有资料查找, 如果你有的话, 请告诉我吧
6 楼
guoyong_cy [专家分:3050] 发布于 2009-05-04 17:50:00
hDisk = CreateFile("\\.\PHYSICALDRIVE0", GENERIC_READ Or GENERIC_WRITE, _
FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0&, 0&)
用CreateFile配合Readfile、WriteFile就可以读写MBR和EBR,有点危险的哈!
PHYSICALDRIVE0就是物理硬盘的名字,后面的数字就是序号
7 楼
一江秋水 [专家分:9680] 发布于 2009-05-05 10:07:00
Dim FSO, Drv, Drvs, Num As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drvs = FSO.Drives
For Each Drv In Drvs
If Drv.IsReady And Drv.DriveType = 2 Then Num = Num + 1 '如果是硬盘并且可用
Next
Set FSO = Nothing
MsgBox "共有 " & Num & " 个分区"
8 楼
w1212q [专家分:660] 发布于 2009-05-06 11:51:00
请高手告诉我有关硬盘读写方面的资料, 谢了
9 楼
guoyong_cy [专家分:3050] 发布于 2009-05-06 22:25:00
读取倒是可以了,就是不好看
你最好把数据显示成 :(地址 十进制 str 十六进制 )的。
例如:
0000 104 116 116 112 58 47 47 112 http://p 68 74 74 70 3A 2F 2F 70
0001 .........
以下类似
10 楼
w1212q [专家分:660] 发布于 2009-05-07 10:31:00
9楼: 我准备读取出来的bin文件由另外一个程序查看, 所以没搞那些东西
我来回复