home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_02_05 / 2n05029a < prev    next >
Text File  |  1991-02-06  |  2KB  |  94 lines

  1. /*
  2.  *  Listing:    2
  3.  *  File:    Device.H
  4.  *  Purpose:    Contains definitions and declarations for
  5.  *        device drivers
  6.  */
  7.  
  8. #ifndef STANDARD
  9. #include    "standard.h"
  10. #endif
  11.  
  12. /**
  13.    standard part of all driver request headers
  14. **/
  15. typedef struct ReqHdr {
  16.     BYTE    length;        /* header length */
  17.     BYTE    unit;        /* unit number   */
  18.     BYTE    command;    /* command code  */
  19.     WORD    status;        /* return status */
  20.     BYTE    reserved[8];
  21. } RH;
  22.  
  23. /** 
  24.    INIT Request Header
  25. **/
  26. typedef struct ReqHdr_Init {
  27.     RH    rh;
  28.     BYTE    numUnits;    /* # of units    */
  29.     FPTR    brkAddress;    /* end of driver */
  30.     FPTR    bpb;
  31.     BYTE    devNumber;
  32. } RH_INIT;
  33.  
  34. /**
  35.    IOCTL Request Header
  36. **/
  37. typedef struct ReqHdr_IO {
  38.     RH    rh;
  39.     BYTE    media;        /* media type    */
  40.     FPTR    dta;        /* data buffer   */
  41.     WORD    count;        /* transfer count*/
  42.     WORD    start;        /* start location*/
  43.     FPTR    vol_id;        /* volume id     */
  44. } RH_IO;
  45.  
  46. /**
  47.    CDROM READ Request Header
  48. **/
  49. typedef struct ReqHdr_CDRead {
  50.     RH    rh;
  51.     BYTE    addrMode;    /* HSG/Red Book     */
  52.     FPTR    dta;        /* data buffer   */
  53.     WORD    count;        /* sector count     */
  54.     DWORD    start;        /* sector start  */
  55.     BYTE    readMode;      /* Raw/Cooked     */
  56.     BYTE    iSize;        /* interleave     */
  57.     BYTE    iSkip;        /* interleave     */
  58. } RH_CDREAD;
  59.  
  60. /**
  61.    CDROM SEEK Request Header
  62. **/
  63. typedef struct ReqHdr_CDSeek {
  64.     RH    rh;
  65.     BYTE    addrMode;    /* HSG/Red Book     */
  66.     FPTR    dta;        /* data buffer   */
  67.     WORD    count;        /* sector count     */
  68.     DWORD    start;        /* sector start  */
  69. } RH_CDSEEK;
  70.  
  71.  
  72. /**
  73.    Device Driver Return Statuses
  74. **/
  75.  
  76. #define    DEV_ERROR    0x8000    /* an error occurred    */
  77. #define    DEV_BUSY    0x0200    /* device is busy    */
  78. #define    DEV_DONE    0x0100    /* command completed    */
  79.  
  80. #define    DEV_EWPROTECT    0x0000    /* write protected    */
  81. #define    DEV_EUNIT    0x0001    /* unknown unit        */
  82. #define    DEV_EDRIVE    0x0002    /* drive not ready    */
  83. #define    DEV_ECMD    0x0003    /* unknown command    */
  84. #define    DEV_ECRC    0x0004    /* CRC error        */
  85. #define    DEV_ERH        0x0005    /* bad request header    */
  86. #define    DEV_ESEEK    0x0006    /* seek error        */
  87. #define    DEV_EMEDIA    0x0007    /* unknown media    */
  88. #define    DEV_ESECT    0x0008    /* sector not found    */
  89. #define    DEV_EPAPER    0x0009    /* out of paper        */
  90. #define    DEV_EWRITE    0x000a    /* write fault        */
  91. #define    DEV_EREAD    0x000b    /* read fault        */
  92. #define    DEV_EGEN    0x000c    /* general failure    */
  93. #define    DEV_ECHANGE    0x000f    /* disk change error    */
  94.