总大小 / 512 = 总扇区号 整个磁盘
500107862016 / 512 = 976773168 总扇区号
已知两个条件 分区大小(分区数据[4]) 分区扇区起始位置[7]
E: 149327183360 / 512 = 291654655 + 2048 = 291656703
分区大小 / 512 = 扇区结束位置 + 起始扇区 = 下一个分区扇区的起始位置
291656703 - 307406848 = 15750145 *512 = 8064074240
当前扇区起始位置 - 下一个起始位置 = 总扇区数 * 512 = 总大小
F: 215811620864 /512 = 421507072 + 553166848 = 974673920 //起始扇区位置
磁盘总扇区 - 最后一个扇区起始位置 = 未分区当前总扇区 *512 = 分区总大小
最后一步 976773168 - 974673920 = 2099248 * 512 = 1074814976
if(下一个分区扇区的起始位置 == 数据里面的扇区起始位置)
{
return 没有未分配的;
}
else
{
1.307406848 下一个扇区的起诉位置
2.125829120000 分区大小 D
3.下一个分区扇区的起始位置
4.未分区扇区起始位置 295752703
本身分区大小 / 512 = 扇区结束位置 + 本身起始扇区 = 下一个分区扇区的起始位置 295752703
分区大小 / 512 = 245760000 D分区总扇区 没有作用
//需要下一个分区扇区位置 - 未分区的起始扇区
307406848 - 295752703 = 11654145 未分区的总扇区
11654145 * 512 = 5966922240 未分区的总大小
}
//测试添加一个未分配的数组进去
function AddUnallocatedArray2(DataArr)
{
var i,j ,k;
var Initial = 0;
var AllSizeB = 0;
var Integration = [];
stdout.println("-----"+PushArrData);
stdout.println("-----"+ArrayIndex);
for( i =0;i<DataArr.length;i++)
{
var Two = DataArr[i][5];
var DiskAllSize = FileSizeToLongLong(DataArr[i][4]) / 512; //总大小除以512得到总扇区的整数
Integration = [];
stdout.println("Two Two = "+Two.length);
for( j=0;j<Two.length;j++)
{
Two[j][4]; //分区大小
Two[j][7]; //扇区起始位置
Initial = (FileSizeToLongLong(Two[j][4]) / 512) + FileSizeToLongLong(Two[j][7]);
stdout.println("Initial 下一个扇区起始位置 = "+Initial);
if(Initial != 0)
{
Integration.push(Two[j]);
stdout.println("第一步 先计算出来的扇区起始位置 Initial= "+Initial);
if(Initial == FileSizeToLongLong(Two[j][7]))
{
stdout.println("第二步判断如果扇区位置一样 不需要操作"+Two[j]);
Initial = 0;
continue;
}
var GetNextSize = 0;
if(j == 0)
{
GetNextSize = FileSizeToLongLong(Two[j+1][7]);
stdout.println("-----第一次拿下一个起始扇区 1 J+1= "+GetNextSize);
}
if(j < (Two.length-1))
{
GetNextSize = FileSizeToLongLong(Two[j+1][7]);
stdout.println("-----第二次拿下一个起始扇区 1 J+1= "+GetNextSize);
}
if(j == Two.length-1)
{
GetNextSize = FileSizeToLongLong(DataArr[i][4]) / 512;
}
stdout.println("----- 2 GetNextSize= "+GetNextSize);
AllSizeB = (GetNextSize - Initial) * 512;
stdout.println("第三步--------扇区位置不一样 属于未分配,拿到大小 AllSizeB= "+AllSizeB
+",拿到起始扇区 Initial= "+Initial);
//stdout.println("-------扇区位置不一样"+Two[j]);
//再当前这个数组的前面插进去数据条
var vValue=["*:\\",0,0,0,Math.abs(AllSizeB),Math.abs(AllSizeB),0,Initial,0,0,0,0,0];
/*vValue[0] = "*:\\" ;
vValue[1] = 0;
vValue[2] = 0;
vValue[3] = 0;
vValue[4] = Math.abs(AllSizeB) ;
vValue[5] = Math.abs(AllSizeB);
vValue[6] = 0;
vValue[7] = Initial;
vValue[8] = 0;
vValue[9] = 0;
vValue[10] = 0;
vValue[11] = 0;
vValue[12] = 0;*/
Integration.push(vValue);
Initial = 0;
}
}
stdout.println("计算好的未分区位置 Integration= "+Integration);
if(Integration.length < 0)
{
continue;
}
DataArr[i][5] = [];
for(k=0;k<Integration.length;k++)
{
// stdout.println("Integration[k] = "+Integration[k].length);
DataArr[i][5].push(Integration[k]);
}
}
stdout.println("-------组合完成 = "+DataArr);
return DataArr;
}