⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 part.h

📁 独立 WIN98下磁盘分区程序(C语言+汇编) 界面功能类似FDISK 但独立编译
💻 H
字号:
#ifndef _PART_H
#define _PART_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>

#include "conio.h"
#include "diskio.h"


#define SECT_SIZE  512     /* Must not be changed */

#define EMP_SIZE 43

struct part_rec
    {
     unsigned char boot_flag;
     unsigned char start_head;
     unsigned      start_sect:6;
     unsigned      start_cylH:2;
     unsigned char start_cylL;
     unsigned char os_id;
     unsigned char end_head;
     unsigned      end_sect:6;
     unsigned      end_cylH:2;
     unsigned char end_cylL;
     unsigned long rel_sect;	/* Number os sectors before partition */
     unsigned long num_sect;	/* Number of sectors in the partition */
    };

struct part_long
    {
     int level;
     int empty;
     int valid;
     int active;
     int os_num;
     int mbr_err;
     int range_err;
     int overlap_err;
     int inconsist_err;
     int boot_record_err;
     unsigned short os_id;
     unsigned long start_cyl;
     unsigned long start_head;
     unsigned long start_sect;
     unsigned long end_cyl;
     unsigned long end_head;
     unsigned long end_sect;
     unsigned long rel_sect;
     unsigned long num_sect;
     int changed;
     int orig_row;
     int inh_changed;
     int inh_invalid;
     struct part_long *container;
     unsigned long container_base;
    };


#define ADV_MBR_MAGIC  0x334D4241L /* "ABM3" */

#define ADV_DATA_SIGNATURE   "AdvBootManager\0"
#define ADV_DATA_VERSION	     3

struct mbr
    {
     union
        {
         struct x_std
             {
/*            unsigned char  code[0x1BE]; */
              unsigned char  code[0x100];
             }std;
         struct x_ipl
             {
              unsigned char  code[0x1B6];
              unsigned short dot_len;
              unsigned char  vir_chk;
              unsigned char  def_part;
              unsigned char  fd_params[4];
             }ipl;
         struct x_adv_old
             {
              unsigned char  code[0x1A0];
              unsigned char  signature[15];    /* AdvBootManager\0 */
              unsigned char  version;          /* Data structure version */
              unsigned long  rel_sect;
              unsigned char  act_menu;
              unsigned char  reserved[9];
             }adv_old;
         struct x_adv				/*  0123456789ABCD  */
             {					/*  rrrr____aoABM3  */
             					/*  rrrrffffatABM3  */
              unsigned char  code[0x1B0];
              unsigned long  rel_sect;
              unsigned long  reserved;
              unsigned char  act_menu;
              unsigned char  boptions;
              unsigned long  adv_mbr_magic;
             }adv;
        struct x_adv_new
             {
              unsigned char code[0x1AE];
              unsigned long bm_chs;
              unsigned long fd_chs;
              unsigned long bm_rel_sect;
              unsigned char timeout;
              unsigned char Default;
              unsigned short bm_sign; /* 'BM' = 0x4D42 */
             }new;
        }x;
     struct part_rec part_rec[4];
     unsigned short magic_num;	/* Magic number (must be 0xAA55) */
    };

#define MBR_MAGIC_NUM   (0xAA55)

#define BM_238_SIGN     (0x4D42)

#define MENU_BOOT_EMPTY   0
#define MENU_BOOT_PART    1
#define MENU_BOOT_NEXT_HD 2
#define MENU_BOOT_FLOPPY  3

#define SHOW_NONE  0
#define SHOW_LAST  1
#define SHOW_NEXT  2
#define SHOW_PREV  3
#define SHOW_LAST3 4

#define MENU_OPT_PASSW   1

struct adv_menu_rec		/* 80 bytes */
   {
    unsigned char boot_type;	/* if 0 - empty */
    unsigned char options;
    unsigned char name[30];
    union 
       {
        struct x_part
            {
             unsigned char  tag;
             unsigned char  show;
             unsigned char  reserved[14];
             unsigned short num_keys;
             unsigned short keys[15];
            }part;
       }x;
   };

struct adv_part_rec		/* 16 bytes */
    {
     unsigned short os_id;
     unsigned char tag;
     unsigned char orig_row;
     unsigned char reserved[4];
     unsigned long rel_sect;
     unsigned long num_sect;
    };


#define MAX_MENU_ROWS  16
#define MAX_PART_ROWS  32

#define	ADV_CODE_SIZE	8192
#define ADV_DATA_SIZE	2048

#define	ADV_CODE_SECT	(ADV_CODE_SIZE/SECT_SIZE)
#define ADV_DATA_SECT	(ADV_DATA_SIZE/SECT_SIZE)

#define ADV_NUM_SECTS   (ADV_CODE_SECT+ADV_DATA_SECT)

#define ADV_OPT_VIR_CHECK  1
#define ADV_OPT_CLEAR_SCR  2
#define ADV_OPT_DEF_MENU   4
#define ADV_OPT_IGN_UNUSED 8

struct adv					/* 80+1280+512+176=2048 */
    {
     unsigned char signature[15];		/* AdvBootManager\0 */
     unsigned char version;			/* Data structure version */
     unsigned char def_menu;
     unsigned char timeout;
     unsigned char options;
     unsigned char options2;
     unsigned int  password;			/* code to validate password */
     unsigned char reserved2[26];
     unsigned char adv_title[32];
     struct adv_menu_rec menu[MAX_MENU_ROWS];	/* 1280 */
     struct adv_part_rec part[MAX_PART_ROWS];	/*  512 */
     unsigned char reserved[176];
    };


struct os_desc
    {
     unsigned short os_id;
     char *name;
     unsigned short flags;
     int (*setup)(struct part_long *);
     int (*format)(struct part_long *, char **argv );
     int (*print)(struct part_long *);
    };

#define OS_EXT       0x0500
#define OS_HIDDEN    0xFF80
#define OS_ADV       0xFF81
#define OS_UNKN      0xFFFF

#define MODE_CHS   0
#define MODE_LBA   1

#define VIEW_MBR   0
#define VIEW_ADV   1
#define VIEW_EMBR  2

#define OK         0
#define FAILED    -1
#define CANCEL    -2

#define BORDER_COLOR  (Yellow +BakBlue)
#define HEADER_COLOR  (BrCyan +BakBlue)
#define TITLE_COLOR   (BrWhite+BakBlue)
#define TABLE_COLOR   (BrWhite+BakBlue)
#define INVAL_COLOR   (BrRed  +BakBlue)
#define ACTIVE_COLOR  (BrWhite+BakBlack)
#define MENU_COLOR    (BrCyan +BakBlue)
#define HINT_COLOR    (Yellow +BakBlue)
#define MESG_COLOR    (BrGreen+BakBlue)
#define WARN_COLOR    (BrRed  +BakBlue)

#define  MAIN_BORDER  "赏缓 喝图"
#define  VERT_BORDER  "

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -