home *** CD-ROM | disk | FTP | other *** search
/ Shareware Supreme Volume 6 #1 / swsii.zip / swsii / 165 / ASPIPAT.ZIP / ASPI.H < prev    next >
C/C++ Source or Header  |  1992-01-26  |  5KB  |  233 lines

  1. #ident "$Id: aspi.h,v 1.3 1991/05/11 13:07:36 chris Exp $"
  2.  
  3. /*
  4.  $Log: aspi.h,v $
  5.  * Revision 1.3  1991/05/11  13:07:36  chris
  6.  * Add the _srbgeneric structure
  7.  *
  8.  * Revision 1.2  1991/05/02  21:21:16  chris
  9.  * bug fix in the "rdwr" CCB
  10.  *
  11.  * Revision 1.1  1991/03/04  01:21:34  chris
  12.  * Initial revision
  13.  *
  14.  */
  15.  
  16. static char *aspi_h_id = "$Id: aspi.h,v 1.3 1991/05/11 13:07:36 chris Exp $";
  17.  
  18. /*
  19.  * structures and typedefs for aspi.c
  20.  */
  21.  
  22. #pragma pack(1)
  23.  
  24. struct _srbhead {
  25.   unsigned char cmd;
  26.   unsigned char status;
  27.   unsigned char adapter;
  28.   unsigned char flags;
  29.   DWORD reserved;
  30. } ;
  31.  
  32. struct _srbinquiry {
  33.   struct _srbhead h;
  34.   unsigned char adapters;
  35.   unsigned char target_id;
  36.   char manager_id[16];
  37.   char adapter_id[16];
  38.   unsigned char parameters[16];
  39. } ;
  40.  
  41. struct _srbgettyp {
  42.   struct _srbhead h;
  43.   unsigned char target_id;
  44.   unsigned char lun;
  45.   unsigned typ;
  46. } ;
  47.  
  48. struct _srbreset {
  49.   struct _srbhead h;
  50.   unsigned char target_id;
  51.   unsigned char lun;
  52.   unsigned char reserved[14];
  53.   unsigned char adapter_status;
  54.   unsigned char target_status;
  55.   unsigned int post_off;
  56.   unsigned int post_seg;
  57.   unsigned char workspace[34];
  58. } ;
  59.  
  60. struct _ccb6  {                 /* common ccb for 6 byte commands */
  61.   unsigned cmd : 8;
  62.   unsigned flag0 : 1;
  63.   unsigned flag1 : 1;
  64.   unsigned flag2 : 1;
  65.   unsigned flag3 : 1;
  66.   unsigned flag4 : 1;
  67.   unsigned lun : 3;
  68.   unsigned adr_1 : 8;
  69.   unsigned adr_0 : 8;
  70.   unsigned len : 8;
  71.   unsigned control : 8;
  72.   unsigned char sense[14];
  73. } ;
  74.  
  75. struct _ccb10 {                 /* common ccb for 10 byte commands */
  76.   unsigned cmd : 8;
  77.   unsigned flag0 : 1;
  78.   unsigned flag1 : 1;
  79.   unsigned flag2 : 1;
  80.   unsigned flag3 : 1;
  81.   unsigned flag4 : 1;
  82.   unsigned lun : 3;
  83.   unsigned adr_3 : 8;
  84.   unsigned adr_2 : 8;
  85.   unsigned adr_1 : 8;
  86.   unsigned adr_0 : 8;
  87.   unsigned _reserved1 : 8;
  88.   unsigned len_1 : 8;
  89.   unsigned len_0 : 8;
  90.   unsigned control : 8;
  91.   unsigned char sense[14];
  92. } ;
  93.  
  94. struct _fmt  {                  /* used for the format unit command */
  95.   unsigned cmd : 8;
  96.   unsigned list_fmt : 3;
  97.   unsigned cmplist : 1;
  98.   unsigned fmtdata : 1;
  99.   unsigned lun : 3;
  100.   unsigned vendor : 8;
  101.   unsigned i1 : 8;
  102.   unsigned i0 : 8;
  103.   unsigned control : 8;
  104.   unsigned char sense[14];
  105. } ;
  106.  
  107. struct _inq  {                  /* used for the scsi inquiry command */
  108.   unsigned cmd : 8;
  109.   unsigned _reserved1 : 5;
  110.   unsigned lun : 3;
  111.   unsigned _reserved2 : 7;
  112.   unsigned evpd : 1;
  113.   unsigned vpd : 8;
  114.   unsigned len : 8;
  115.   unsigned control : 8;
  116.   unsigned char sense[14];
  117. } ;
  118.  
  119. struct _stp  {                 /* used for the start/stop unit command */
  120.   unsigned cmd : 8;
  121.   unsigned immed : 1;
  122.   unsigned _reserved1 : 4;
  123.   unsigned lun : 3;
  124.   unsigned _reserved2 : 8;
  125.   unsigned _reserved3 : 8;
  126.   unsigned start : 1;
  127.   unsigned eject : 1;
  128.   unsigned _reserved4 : 6;
  129.   unsigned control : 8;
  130.   unsigned char sense[14];
  131. } ;
  132.  
  133. struct _rem  {                 /* used for the allow medium removal command */
  134.   unsigned cmd : 8;
  135.   unsigned _reserved1 : 5;
  136.   unsigned lun : 3;
  137.   unsigned _reserved2 : 8;
  138.   unsigned _reserved3 : 8;
  139.   unsigned prevent : 1;
  140.   unsigned _reserved4 : 7;
  141.   unsigned control : 8;
  142.   unsigned char sense[14];
  143. } ;
  144.  
  145. struct _ld  {                /* used for the load/unload command */
  146.   unsigned cmd : 8;
  147.   unsigned immediate : 1;
  148.   unsigned _reserved1 : 4;
  149.   unsigned lun : 3;
  150.   unsigned _reserved2 : 8;
  151.   unsigned _reserved3 : 8;
  152.   unsigned load : 1;
  153.   unsigned retention : 1;
  154.   unsigned eot : 1;
  155.   unsigned _reserved4 : 5;
  156.   unsigned control : 8;
  157.   unsigned char sense[14];
  158. } ;
  159.  
  160. struct _rdwr  {              /* used for sequencial read/write command */
  161.   unsigned cmd : 8;
  162.   unsigned fixed : 1;
  163.   unsigned sili : 1;
  164.   unsigned _reserved1 : 3;
  165.   unsigned lun : 3;
  166.   unsigned len_2 : 8;
  167.   unsigned len_1 : 8;
  168.   unsigned len_0 : 8;
  169.   unsigned control : 8;
  170.   unsigned char sense[14];
  171. } ;
  172.  
  173. struct _spc  {               /* used for the space command */
  174.   unsigned cmd : 8;
  175.   unsigned code : 3;
  176.   unsigned _reserved1 : 2;
  177.   unsigned lun : 3;
  178.   unsigned cnt2 : 8;
  179.   unsigned cnt1 : 8;
  180.   unsigned cnt0 : 8;
  181.   unsigned control : 8;
  182.   unsigned sense[14];
  183. } ;
  184.  
  185. union _ccb  {
  186.   struct _ccb6 c6;
  187.   struct _ccb10 c1;
  188.   struct _fmt fmt;
  189.   struct _inq inq;
  190.   struct _stp stp;
  191.   struct _rem rem;
  192.   struct _ld ld;
  193.   struct _rdwr rdwr;
  194.   struct _spc spc;
  195. } ;
  196.  
  197. struct _srbio  {
  198.   struct _srbhead h;
  199.   unsigned char target_id;
  200.   unsigned char lun;
  201.   DWORD alloc_len;
  202.   unsigned char sense_len;
  203.   unsigned int  buf_off;
  204.   unsigned int  buf_seg;
  205.   unsigned int  link_off;
  206.   unsigned int  link_seg;
  207.   unsigned char cdb_len;
  208.   unsigned char adapter_status;
  209.   unsigned char target_status;
  210.   unsigned int  post_off;
  211.   unsigned int  post_seg;
  212.   unsigned char workspace[34];
  213.   union _ccb ccb;
  214. } ;
  215.  
  216. struct _srbgeneric {
  217.   struct _srbhead h;
  218.   unsigned char target_id;
  219.   unsigned char lun;
  220.   DWORD alloc_len;
  221.   unsigned char sense_len;
  222.   unsigned int  buf_off;
  223.   unsigned int  buf_seg;
  224.   unsigned int  link_off;
  225.   unsigned int  link_seg;
  226.   unsigned char cdb_len;
  227.   unsigned char adapter_status;
  228.   unsigned char target_status;
  229.   unsigned int  post_off;
  230.   unsigned int  post_seg;
  231.   unsigned char workspace[34];
  232. } ;
  233.