home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / qc25 / include / dos.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-25  |  5.4 KB  |  215 lines

  1. /***
  2. *dos.h - Definitionen für MS-DOS-Schnittstellenroutinen
  3. *
  4. *    Copyright (c) 1985-1990, Microsoft Corporation.  Alle Rechte vorbehalten.
  5. *
  6. * Zweck:
  7. *    Definiert die Strukturen und Unions, die für direkte MS-DOS-Schnitt-
  8. *    stellenroutinen verwendet werden; dazu gehören Makros zum Zugriff auf
  9. *    Segment- und Offsetwerte von far-Zeigern, damit sie innerhalb der
  10. *    Routinen verwendet werden können und schließlich Funktionsprototypen
  11. *    für direkte DOS-Schnittstellenfunktionen.
  12. *
  13. ***/
  14.  
  15.  
  16. #ifndef _REGS_DEFINED
  17.  
  18. /* Wortregister */
  19.  
  20. struct WORDREGS {
  21.     unsigned int ax;
  22.     unsigned int bx;
  23.     unsigned int cx;
  24.     unsigned int dx;
  25.     unsigned int si;
  26.     unsigned int di;
  27.     unsigned int cflag;
  28.     };
  29.  
  30.  
  31. /* Byteregister */
  32.  
  33. struct BYTEREGS {
  34.     unsigned char al, ah;
  35.     unsigned char bl, bh;
  36.     unsigned char cl, ch;
  37.     unsigned char dl, dh;
  38.     };
  39.  
  40.  
  41. /* Mehrzweck Registerverbund -
  42.  * überlagert die entsprechenden Wort- und Byteregister.
  43.  */
  44.  
  45. union REGS {
  46.     struct WORDREGS x;
  47.     struct BYTEREGS h;
  48.     };
  49.  
  50.  
  51. /* Segmentregister */
  52.  
  53. struct SREGS {
  54.     unsigned int es;
  55.     unsigned int cs;
  56.     unsigned int ss;
  57.     unsigned int ds;
  58.     };
  59.  
  60. #define _REGS_DEFINED
  61.  
  62. #endif
  63.  
  64.  
  65. /* dosexterror-Struktur */
  66.  
  67. #ifndef _DOSERROR_DEFINED
  68.  
  69. struct DOSERROR {
  70.     int exterror;
  71.     char class;
  72.     char action;
  73.     char locus;
  74.     };
  75.  
  76. #define _DOSERROR_DEFINED
  77.  
  78. #endif
  79.  
  80.  
  81. /* _dos_findfirst-Struktur */
  82.  
  83. #ifndef _FIND_T_DEFINED
  84.  
  85. struct find_t {
  86.     char reserved[21];
  87.     char attrib;
  88.     unsigned wr_time;
  89.     unsigned wr_date;
  90.     long size;
  91.     char name[13];
  92.     };
  93.  
  94. #define _FIND_T_DEFINED
  95.  
  96. #endif
  97.  
  98.  
  99. /* die Strukturen _dos_getdate/_dossetdate und _dos_gettime/_dos_settime */
  100.  
  101. #ifndef _DATETIME_T_DEFINED
  102.  
  103. struct dosdate_t {
  104.     unsigned char day;        /* 1-31 */
  105.     unsigned char month;        /* 1-12 */
  106.     unsigned int year;        /* 1980-2099 */
  107.     unsigned char dayofweek;    /* 0-6, 0=Sonntag */
  108.     };
  109.  
  110. struct dostime_t {
  111.     unsigned char hour;    /* 0-23 */
  112.     unsigned char minute;    /* 0-59 */
  113.     unsigned char second;    /* 0-59 */
  114.     unsigned char hsecond;    /* 0-99 */
  115.     };
  116.  
  117. #define _DATETIME_T_DEFINED
  118.  
  119. #endif
  120.  
  121.  
  122. /* die Struktur _dos_getdiskfree */
  123.  
  124. #ifndef _DISKFREE_T_DEFINED
  125.  
  126. struct diskfree_t {
  127.     unsigned total_clusters;
  128.     unsigned avail_clusters;
  129.     unsigned sectors_per_cluster;
  130.     unsigned bytes_per_sector;
  131.     };
  132.  
  133. #define _DISKFREE_T_DEFINED
  134.  
  135. #endif
  136.  
  137.  
  138. /* manifeste Konstanten für Ergebnisparameter _hardresume */
  139.  
  140. #define _HARDERR_IGNORE     0    /* Fehler ignorieren */
  141. #define _HARDERR_RETRY        1    /* Vorgang nochmals versuchen */
  142. #define _HARDERR_ABORT        2    /* Programm mit Ausgabe von */
  143.                     /* Unterbrechung 23h abbrechen */
  144. #define _HARDERR_FAIL        3    /* Systemaufruf fehlschlagen lassen */
  145.                     /* _HARDERR_FAIL ist mit DOS 2.x */
  146.                     /* nicht verwendbar */
  147.  
  148. /* Dateiattribut-Konstanten */
  149.  
  150. #define _A_NORMAL    0x00    /* Normale Datei - Ohne Lese- */
  151.                                 /* Schreibeinschränkungen */
  152. #define _A_RDONLY    0x01    /* Nur-Lese-Datei */
  153. #define _A_HIDDEN    0x02    /* Verborgene Datei */
  154. #define _A_SYSTEM    0x04    /* System-Datei */
  155. #define _A_VOLID    0x08    /* Datei für Datenträger-ID */
  156. #define _A_SUBDIR    0x10    /* Unterverzeichnis */
  157. #define _A_ARCH     0x20    /* Archiv-Datei */
  158.  
  159. /* Makros, um MS C "far"-Zeiger in ihre Segment- und
  160.  *          Offsetkomponenten zu zerlegen
  161.  */
  162.  
  163. #define FP_SEG(fp) (*((unsigned _far *)&(fp)+1))
  164. #define FP_OFF(fp) (*((unsigned _far *)&(fp)))
  165.  
  166.  
  167. /* Deklarationen für externe Variable */
  168.  
  169. extern unsigned int _near _cdecl _osversion;
  170.  
  171.  
  172. /* Funktionsprototypen */
  173.  
  174. #ifndef _MT
  175. int _cdecl bdos(int, unsigned int, unsigned int);
  176. void _cdecl _chain_intr(void (_cdecl _interrupt _far *)());
  177. void _cdecl _disable(void);
  178. unsigned _cdecl _dos_allocmem(unsigned, unsigned *);
  179. unsigned _cdecl _dos_close(int);
  180. unsigned _cdecl _dos_creat(const char *, unsigned, int *);
  181. unsigned _cdecl _dos_creatnew(const char *, unsigned, int *);
  182. unsigned _cdecl _dos_findfirst(const char *, unsigned, struct find_t *);
  183. unsigned _cdecl _dos_findnext(struct find_t *);
  184. unsigned _cdecl _dos_freemem(unsigned);
  185. void _cdecl _dos_getdate(struct dosdate_t *);
  186. void _cdecl _dos_getdrive(unsigned *);
  187. unsigned _cdecl _dos_getdiskfree(unsigned, struct diskfree_t *);
  188. unsigned _cdecl _dos_getfileattr(const char *, unsigned *);
  189. unsigned _cdecl _dos_getftime(int, unsigned *, unsigned *);
  190. void _cdecl _dos_gettime(struct dostime_t *);
  191. void (_cdecl _interrupt _far * _cdecl _dos_getvect(unsigned))();
  192. void _cdecl _dos_keep(unsigned, unsigned);
  193. unsigned _cdecl _dos_open(const char *, unsigned, int *);
  194. unsigned _cdecl _dos_read(int, void _far *, unsigned, unsigned *);
  195. unsigned _cdecl _dos_setblock(unsigned, unsigned, unsigned *);
  196. unsigned _cdecl _dos_setdate(struct dosdate_t *);
  197. void _cdecl _dos_setdrive(unsigned, unsigned *);
  198. unsigned _cdecl _dos_setfileattr(const char *, unsigned);
  199. unsigned _cdecl _dos_setftime(int, unsigned, unsigned);
  200. unsigned _cdecl _dos_settime(struct dostime_t *);
  201. void _cdecl _dos_setvect(unsigned, void (_cdecl _interrupt _far *)());
  202. unsigned _cdecl _dos_write(int, const void _far *, unsigned, unsigned *);
  203. int _cdecl dosexterr(struct DOSERROR *);
  204. void _cdecl _enable(void);
  205. void _cdecl _harderr(void (_far *)());
  206. void _cdecl _hardresume(int);
  207. void _cdecl _hardretn(int);
  208. int _cdecl intdos(union REGS *, union REGS *);
  209. int _cdecl intdosx(union REGS *, union REGS *, struct SREGS *);
  210. int _cdecl int86(int, union REGS *, union REGS *);
  211. int _cdecl int86x(int, union REGS *, union REGS *, struct SREGS *);
  212. #endif /* _MT */
  213.  
  214. void _cdecl segread(struct SREGS *);
  215.