home *** CD-ROM | disk | FTP | other *** search
/ Shareware Supreme Volume 6 #1 / swsii.zip / swsii / 165 / DSKPARM.ZIP / STRUCTS.H < prev   
C/C++ Source or Header  |  1986-10-06  |  3KB  |  120 lines

  1. /* ==============================================
  2. ** structs.h -- These are various data structures
  3. **        for use with Microsoft MS-DOS
  4. **        function calls.
  5. ** ==============================================
  6. */
  7. /* ms_date -- packed date format used in directory */
  8. struct ms_date {
  9.     unsigned d : 5;
  10.     unsigned m : 4;
  11.     unsigned y : 7;
  12. };
  13. /* ms_time -- packed time format used in directory */
  14. struct ms_time {
  15.     unsigned xx : 5;
  16.     unsigned mm : 6;
  17.     unsigned hh : 5;
  18. };
  19. /* extended_header -- header used in constructing an
  20. **        extended file control block.
  21. */
  22. struct extended_header {
  23.     char header;
  24.     char zeros[5];
  25.     char attrib;
  26. };
  27. /* ext_fcb -- extended file control block. */
  28. struct ext_fcb {
  29.     struct extended_header fcb_hdr;
  30.     char drive_id;
  31.     char file_name[8];
  32.     char file_extension[3];
  33.     unsigned curblok;
  34.     unsigned recsize;
  35.     long file_size;
  36.     struct ms_date date;
  37.     struct ms_time time;
  38.     char reserved[8];
  39.     char rec_in_blok;
  40.     long rel_record;
  41. };
  42. /* Macros & values used in interpreting FAT entries */
  43. #define AVAILABLE  0x0000
  44. #define MAX_12BIT  0x0FF6
  45. #define LOCKED_OUT(IS12)  (IS12 ? 0x0FF7 : 0xFFF7)
  46. #define LAST_CLUSTER(IS12) (IS12 ? 0xFFF : 0xFFFF)
  47.  
  48. /* Bits used in attribute field of directory entry */
  49. #define READ_ONLY 0x01
  50. #define HIDDEN 0x02
  51. #define SYSTEM 0x04
  52. #define VOL_ENTRY 0x08
  53. #define DIRECTORY 0x10
  54. #define ARCHIVE 0x20
  55.  
  56. /* entry -- directory entry structure */
  57. struct entry {
  58.     char drive_no;
  59.     char filname[11];
  60.     char attributes;
  61.     char unused[10];
  62.     struct ms_time create_time;
  63.     struct ms_date create_date;
  64.     unsigned first_cluster;
  65.     long filsize;
  66. };
  67. /* extended_entry -- directory structure for use with
  68. **         extended file search
  69. */
  70. struct extended_entry {
  71.     struct extended_header dir_hdr;
  72.     struct entry body;
  73. };
  74. /* boot -- layout of beginning of DOS boot record */
  75. struct boot {
  76.     unsigned char jmp[3];
  77.     unsigned char oem_name[8];      /* OEM */
  78.     unsigned bytes_per_sector;      /* BPS */
  79.     unsigned char sectors_per_au;   /* SPS */
  80.     unsigned reserved_sectors;      /* RS */
  81.     unsigned char number_of_fats;   /* CF */
  82.     unsigned number_of_entries;     /* D */
  83.     unsigned number_of_sectors;     /* TS */
  84.     unsigned char media_descriptor; /* MD */
  85.     unsigned fat_size;        /* SPF */
  86.     unsigned sectors_per_track;     /* SPT */
  87.     unsigned number_of_heads;       /* NH */
  88.     unsigned hidden_sectors;    /* HS */
  89. };
  90. /* dd_header -- layout of DOS device driver header */
  91. struct dd_header {
  92.     struct dd_header far *link;     /* chain to next header */
  93.     int attributes;            /* device attributes */
  94.     int strategy;            /* strategy routine addr */
  95.     int interrupt;            /* interrupt routine addr */
  96.     char name[8];            /* device name field */
  97. };
  98.  
  99. /* disk_table -- layout of table returned by fn 32 */
  100. struct disk_table {
  101.      char designator;        /* PD */
  102.      char alt_designator;        /* As above; 0 if ramdisk */
  103.      unsigned sector_size;        /* BPS */
  104.      char cluster_size;        /* SPC - 1 */
  105.      char heads;            /* NH - 1 */
  106.      unsigned fat_start;        /* RS */
  107.      char fat_copies;        /* CF */
  108.      unsigned max_entries;        /* D */
  109.      unsigned first_sector;        /* FUS */
  110.      unsigned last_cluster;        /* TCC + 1 */
  111.      unsigned char fat_size;        /* SPF */
  112.      unsigned dir_start;        /* FDS */
  113.      struct dd_header far *ddh;      /* DDA */
  114.      unsigned media_type;        /* MD */
  115.      struct disk_table far *nxt;     /* chain to next disk_table */
  116.      unsigned subdir_cluster;    /* CWD cluster (DOS 2 only */
  117.      char subdirectory[64];        /* CWD         (DOS 2 only */
  118. };
  119.  
  120.