培訓環境中防止學員誤刪數據,利用硬盤支持 4 個主分區表項,建立多個 Primary DOS 分區,使用時僅激活一個,其餘隱藏,實現數據隔離保護。
55AA。激活標志(1) | 起始CHS(3) | 類型(1) | 結束CHS(3) | 起始LBA(4) | 扇區數(4)。01=12bit FAT, 04=16bit FAT, 06=大分區, 05=擴展分區。05→06,激活標志 00→80,同時將原主分區激活標志 80→00。0DBH-1BDH 228 字節)備份 4 個表項。80。#include <dos.h> #include <bios.h> #include <stdio.h> ...
struct PartitionTable { char Flag; struct HSC begin; char Type; struct HSC end; long id, size; };
struct note { char boot1[366]; PartitionTable PT[1], PT1[4], PT2[4]; char f[2]; } dosboot;
void create_pri_dos() { // 擴展→主分區
biosdisk(2,0x80,0,0,1,1,&dosboot); // 讀主引導扇區
for(i=0;i<4;i++) {
if (dosboot.PT2[i].Type && dosboot.PT2[i].Type!=5) dosboot.PT2[i].Flag=0;
if (dosboot.PT2[i].Type==5) { dosboot.PT2[i].Type=6; dosboot.PT2[i].Flag=0x80; }
}
biosdisk(3,0x80,0,0,1,1,&dosboot); // 寫回
}
// set_hidde_dos() 備份、recall_dos() 恢復、change_dos(n) 切換保留第 n 項
main(int argc,char *argv[]) { ... switch(argv[1][0]) { case 'c':... case '1'..'4': change_dos(n); } }
PDOS S 備份 → PDOS C 轉換擴展為主分區 → 重啟格式化(原 C→D)。PDOS S → PDOS C → 重啟格式化。關鍵:PDOS.EXE 必須拷貝到每個主分區,操作需極謹慎防數據損壞。