回 帖 发 新 帖 刷新版面

主题:[原创]刚做的磁盘读取程序, 感谢精华帖, 版本0.4

现在已经是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]
还是这个问题, 如果大家使用本程序有问题, 请回帖

回复列表 (共10个回复)

沙发

不好意思,以前的帖子上有个不妥的地方:
因为磁盘最小读取单位必须是扇区的倍数,而最大的扇区是4096byte,所以在没有读取磁盘信息的情况下,读取单位取4096才能确保对所有磁盘有效!

板凳

我也感谢guoyong_cy,看过他的贴,真的很强!受益非浅!
用他的方法基本可以读取硬盘的绝大部分地方,只是MBR和EBR这两个地方目前我还没有能力读取,guoyong_cy路过的话请指点啊!

3 楼

试了一下,如果我一开始就直接点击cmdGet按纽,下面这一句发生75号错误:
Open GetPath For Binary As #inf

4 楼

另外建议在Form_Load过程中检测磁盘有几个分区,然后重新声明sel数组

5 楼

4楼: '检测磁盘有几个分区' 这个我还不会, 也没有资料查找, 如果你有的话, 请告诉我吧

6 楼

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 楼

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 楼

请高手告诉我有关硬盘读写方面的资料, 谢了

9 楼

读取倒是可以了,就是不好看
你最好把数据显示成 :(地址  十进制 str  十六进制 )的。
例如:
0000 104 116 116 112 58 47 47 112   http://p   68 74 74 70 3A 2F 2F 70 
0001 .........
以下类似

10 楼

9楼: 我准备读取出来的bin文件由另外一个程序查看, 所以没搞那些东西

我来回复

您尚未登录,请登录后再回复。点此登录或注册