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

📄 format.h

📁 format命令的源代码
💻 H
字号:
/*
// Program:  Format
// Written By:  Brian E. Reifsnyder
// Version:  0.90
// Copyright:  2002 under the terms of the GNU GPL, Version 2.
// Module Name:  FORMAT.H
// Module Description:  Main header file for format.
*/

/*
/////////////////////////////////////////////////////////////////////////////
//  SPECIAL
/////////////////////////////////////////////////////////////////////////////
*/

#define NAME "Format"
#define VERSION "0.90"


#ifdef MAIN
#define EXTERN /**/
int debug_prog=0;            /* set to 1 for debug mode */
#else
#define EXTERN extern
extern int debug_prog;
#endif



#include <dos.h>


/*
/////////////////////////////////////////////////////////////////////////////
//  DEFINES
/////////////////////////////////////////////////////////////////////////////
*/


#define MEG 1048576

#define PRIMARY 1
#define EXTENDED 2
#define LOGICAL 3
#define SPECIAL 4

#define LAST 99

#define TRUE  1
#define FALSE 0

#define HARD   0
#define FLOPPY 1

#define FAT12 1
#define FAT16 2
#define FAT32 3

#define MAX_BAD_SECTORS 1024


#define UNUSED     99

#define READ       25
#define WRITE      26

#define UNKNOWN 99

#define BIOS 1
#define DOS  2

/*
/////////////////////////////////////////////////////////////////////////////
//  GLOBAL VARIABLES
/////////////////////////////////////////////////////////////////////////////
*/

EXTERN char ascii_cd_number[15];
EXTERN char partition_label[16];

/* Buffers */
EXTERN unsigned long bad_sector_map[(MAX_BAD_SECTORS+1)];
EXTERN unsigned int bad_sector_map_pointer;

EXTERN unsigned char fat12_fat[6145];

EXTERN unsigned char mirror_map[8192];

/* Ending Mapping Variables */
EXTERN long computed_ending_cylinder;
EXTERN unsigned long computed_partition_size;

/* Integers converted from long numbers */
EXTERN int integer3;
EXTERN int integer4;

EXTERN union  REGS  regs;
EXTERN struct SREGS sregs;

/*
/////////////////////////////////////////////////////////////////////////////
//  GLOBAL STRUCTURES
/////////////////////////////////////////////////////////////////////////////
*/

typedef struct Access_Flags
  {
  unsigned char special_function;      /* Set to 0.                        */
  unsigned char disk_access;           /* Set to non-zero to allow access. */
  } AF;

typedef struct Drive_Statistics
  {
  unsigned long bytes_total_disk_space;
  unsigned long bytes_in_bad_sectors;
  unsigned long bytes_available_on_disk;

  unsigned long bytes_in_each_allocation_unit;
  unsigned long allocation_units_available_on_disk;

  unsigned int serial_number_low;
  unsigned int serial_number_high;
  } DS;

typedef struct Formatting_Parameters
  {
  char drive_letter[2];
  char volume_label[12];

  char existing_format;           /* TRUE or FALSE */

  int drive_type;                 /* FLOPPY or HARD */
  int drive_number;
  int physical_drive_number;
  int partition_number;
  int fat_type;
  int media_type;                 /* FD#### or HD */

  int force_yes;
  int verify;

  unsigned long first_data_sector;

  int v;
  int q;
  int u;
  int f;
  int b;
  int s;
  int t;
  int n;
  int one;
  int four;
  int eight;

  unsigned long size;
  unsigned long cylinders;
  unsigned long sectors;

  } FP;

typedef struct DDPT_Structure
{
  unsigned step_rate : 4 ;
  unsigned head_unload_time : 4;
  unsigned head_load_time : 7;
  unsigned dma_flag : 1;
  unsigned post_rt_of_disk_motor : 8;
  unsigned sector_size : 8;
  unsigned sectors_per_cylinder : 8;
  unsigned gap3_length_rw : 8;
  unsigned dtl : 8;
  unsigned gap3_length_xmat : 8;
  unsigned fill_char_xmat : 8;
  unsigned head_settle_time : 8;
  unsigned run_up_time : 8;
} DDPT;

typedef struct DPB_Structure {
  /* Standard DPB */
  unsigned char drive_number;
  unsigned char device_driver_unit_number;
  unsigned int  bytes_per_sector;
  unsigned char sectors_per_cluster_minus_one;
  unsigned char sectors_per_cluster_power_two;
  unsigned int  beginning_fat_sector;
  unsigned char number_fat_copies;
  unsigned int  number_root_directory_entries;
  unsigned int  first_data_cluster;
  unsigned int  number_clusters_plus_one;
  unsigned int  sectors_per_fat;
  unsigned int  first_root_directory_sector;
  unsigned long device_driver_address;
  unsigned char media_descriptor;
  unsigned char dpb_access_flag;
  unsigned long next_dpb_pointer;
  unsigned int  last_cluster_allocated;
  unsigned int  number_free_clusters;
  /* FAT32 DPB */
  unsigned int  number_free_clusters_high;
  unsigned      do_not_mirror_fat   : 1;
  unsigned      reserved            : 3;
  unsigned      active_fat_number   : 4;
  unsigned int  info_sector_number;
  unsigned int  backup_boot_sector_number;
  unsigned long first_sector_number_first_clust;
  unsigned long max_clust_number;
  unsigned long number_sectors_per_fat;
  unsigned long root_dir_start_cluster;
  unsigned long free_space_start_cluster;
  }DPB;

typedef struct Track_Address_Field_Structure
{
  unsigned cylinder : 8;
  unsigned head : 8;
  unsigned sector : 8;
  unsigned size_code : 8;
} TAF;

typedef struct Low_Level_Format_Values_Structure
{
  int interleave_factor;
  int interleave_index;
  int interleave_map[64];
} LLFVS;

typedef struct Parameter_Block_Structure
{
  unsigned use_current_bpb           :  1;
  unsigned use_track_layout_fields   :  1;
  unsigned all_sectors_same_size     :  1;
  unsigned reserved                  :  5;

  unsigned device_type               :  8;
  unsigned device_attributes         : 16;
  unsigned number_of_cylinders       : 16;
  unsigned media_type                :  8;
  /* BPB Follows */
  unsigned bytes_per_sector          : 16;
  unsigned sectors_per_cluster       :  8;
  unsigned reserved_sectors          : 16;
  unsigned number_of_fats            :  8;
  unsigned root_directory_entries    : 16;
  unsigned total_sectors             : 16;
  unsigned media_descriptor          :  8;
  unsigned sectors_per_fat           : 16;
  unsigned sectors_per_cylinder      : 16;
  unsigned number_of_heads           : 16;
  unsigned hidden_sectors_low        : 16;
  unsigned hidden_sectors_high       : 16;
  unsigned large_sector_count_low    : 16;
  unsigned large_sector_count_high   : 16;

  /* FAT32 BPB Follows */
  unsigned sectors_per_fat_low       : 16;
  unsigned sectors_per_fat_high      : 16;
  unsigned ext_flag_fat_mirror       :  1;
  unsigned ext_flag_reserved         :  3;
  unsigned ext_flag_active_fat_num   :  4;
  unsigned file_sys_ver_minor        :  8;
  unsigned file_sys_ver_major        :  8;
  unsigned root_dir_start_clus_low   : 16;
  unsigned root_dir_start_clus_high  : 16;
  unsigned file_sys_info_sec         : 16;
  unsigned backup_boot_sec_num       : 16;
  unsigned char fat32_bpb_reserved   [12];

  /* Ending of parameter block */
  unsigned char reserved_2           [32];
  unsigned char reserved_3           [64];  // Slack...shouldn't be used.
}PB;


EXTERN AF far access_flags;
EXTERN DPB far *dpb;
EXTERN DS drive_statistics;
EXTERN FP param;
EXTERN PB parameter_block;
EXTERN DDPT far *ddpt;
EXTERN LLFVS low_level;

typedef struct Get_ExtDPB_Data_Buffer
{
  unsigned int buffer_length;
  DPB          ext_dpb;
}GE_DPD_DB;

EXTERN GE_DPD_DB ext_parameter_block;


⌨️ 快捷键说明

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