skyfree 发表于 2013-2-19 15:28:21

怎么判断分区表是MBR还是GPT?

本帖最后由 skyfree 于 2013-2-19 15:30 编辑

怎么判断分区表类型是MBR还是GPT?如果可判定的话,怎么判定GPT分区有没有MSR保留分区?

另外,MBR分区表下获取分区与扇区的对应关系还是比较简单的,GPT分区表下怎么获取分区与扇区的对应关系?例如C:为1:1,D为1:2。GPT分区表下,如果MSR分区存在,获取到的分区扇区关系与GHOST中的差1。例如如果有MSR分区则C:被判定为1:2,而不是Ghost认为的1:1。

楼下附我目前在使用的一段函数代码。

skyfree 发表于 2013-2-19 15:30:10

#include <Array.au3>
#Include <WinAPIEx.au3>

_GetPartSecInfo()

Func _GetPartSecInfo()
        Local Const $N=3
        Local $a_PartSecInfo[$N],$p=1
       
        Local $i,$Drive,$a_DriveInfo
        For $i=65 To 90
                $Drive=''
                $Drive=Chr($i) & ':'
                If DriveStatus($Drive)='READY' And _
                                (DriveGetType($Drive)='Fixed' Or _
                                DriveGetType($Drive)='Removable' Or _
                                DriveGetType($Drive)='Network') Then
                        $a_DriveInfo=''
                        $a_DriveInfo=_WinAPI_GetDriveNumber($Drive)
                        If IsArray($a_DriveInfo) Then
                                ReDim $a_PartSecInfo[$p+1][$N]
                                $a_PartSecInfo[$p]=$Drive
                                $a_PartSecInfo[$p]=($a_DriveInfo+1) & ':' & $a_DriveInfo
                                $p+=1
                        EndIf
                EndIf
        Next
       
        _ArrayDisplay($a_PartSecInfo,'$a_PartSecInfo')
        Return $a_PartSecInfo
EndFunc

虫子樱桃 发表于 2013-2-19 16:43:34

以关键字‘ site:autoitscript.com mbr autoit’ 使用谷歌搜索下看看

lxwlxwayy 发表于 2013-2-19 21:28:28

硬盘上的东东很难哦顶起来

lindafu 发表于 2013-2-20 09:15:11

本帖最后由 lindafu 于 2013-2-20 09:26 编辑

回复 2# skyfree

你的这种方法只支持基本磁盘GPT,动态的GPT就无能为力了,要获得的GPT分区号减1有个简单的方法就是读磁盘MBR,得到“EE”就是GPT磁盘,如当MBR的$PartTable = "EE"分区号全部减一
页: [1]
查看完整版本: 怎么判断分区表是MBR还是GPT?