myaspi32.h
上传用户:xmgzy123
上传日期:2007-01-07
资源大小:373k
文件大小:13k
源码类别:

SCSI/ASPI

开发平台:

WINDOWS

  1. /*
  2.  * myaspi32.h - Copyright (C) 1999 Jay A. Key
  3.  *
  4.  * API for WNASPI32.DLL
  5.  *
  6.  **********************************************************************
  7.  *
  8.  * This program is free software; you can redistribute it and/or modify
  9.  * it under the terms of the GNU General Public License as published by
  10.  * the Free Software Foundation; either version 2 of the License, or
  11.  * (at your option) any later version.
  12.  *
  13.  * This program is distributed in the hope that it will be useful,
  14.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16.  * GNU General Public License for more details.
  17.  *
  18.  * You should have received a copy of the GNU General Public License
  19.  * along with this program; if not, write to the Free Software
  20.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  21.  *
  22.  **********************************************************************
  23.  *
  24.  * $Id: myaspi32.h,v 1.2 2000/02/25 10:47:37 akey Exp $
  25.  * $Date: 2000/02/25 10:47:37 $
  26.  * $Locker:  $
  27.  * $Log: myaspi32.h,v $
  28.  * Revision 1.2  2000/02/25 10:47:37  akey
  29.  * sync'ed with akrip32.dll v0.94
  30.  *
  31.  * Revision 1.3  2000/02/14 09:38:19  akey
  32.  * added padding to SRB structs
  33.  *
  34.  * Revision 1.2  2000/01/03 12:29:43  akey
  35.  * v0.91 release -- added CDDB and bug fixes
  36.  *
  37.  *
  38.  */
  39. /***************************************************************************
  40.  ** Module Name:    myaspi32.h
  41.  **
  42.  ** Description:    Header file replacement for wnaspi32.h
  43.  **
  44.  ***************************************************************************/
  45. #ifndef __MYASPI32_H_
  46. #define __MYASPI32_H_
  47. #ifndef __GNUC__
  48. #define PACKED
  49. #endif
  50. /***************************************************************************
  51.  ** SCSI MISCELLANEOUS EQUATES
  52.  ***************************************************************************/
  53. #define SENSE_LEN                 14     /* Default sense buffer length    */
  54. #define SRB_DIR_SCSI              0x00   /* Direction determined by SCSI   */
  55. #define SRB_POSTING               0x01   /* Enable ASPI posting            */
  56. #define SRB_ENABLE_RESIDUAL_COUNT 0x04   /* Enable residual byte count     */
  57.                                          /* reporting                      */
  58. #define SRB_DIR_IN                0x08   /* Transfer from SCSI target to   */
  59.                                          /* host                           */
  60. #define SRB_DIR_OUT               0x10   /* Transfer from host to SCSI     */
  61.                                          /* target                         */
  62. #define SRB_EVENT_NOTIFY          0x40   /* Enable ASPI event notification */
  63. #define RESIDUAL_COUNT_SUPPORTED  0x02   /* Extended buffer flag           */
  64. #define MAX_SRB_TIMEOUT       1080001u   /* 30 hour maximum timeout in sec */
  65. #define DEFAULT_SRB_TIMEOUT   1080001u   /* use max.timeout by default     */
  66. /***************************************************************************
  67.  ** ASPI command definitions
  68.  ***************************************************************************/
  69. #define SC_HA_INQUIRY             0x00   /* Host adapter inquiry           */
  70. #define SC_GET_DEV_TYPE           0x01   /* Get device type                */
  71. #define SC_EXEC_SCSI_CMD          0x02   /* Execute SCSI command           */
  72. #define SC_ABORT_SRB              0x03   /* Abort an SRB                   */
  73. #define SC_RESET_DEV              0x04   /* SCSI bus device reset          */
  74. #define SC_SET_HA_PARMS           0x05   /* Set HA parameters              */
  75. #define SC_GET_DISK_INFO          0x06   /* Get Disk                       */
  76. #define SC_RESCAN_SCSI_BUS        0x07   /* Rebuild SCSI device map        */
  77. #define SC_GETSET_TIMEOUTS        0x08   /* Get/Set target timeouts        */
  78. /***************************************************************************
  79.  ** SRB Status
  80.  ***************************************************************************/
  81. #define SS_PENDING                0x00   /* SRB being processed            */
  82. #define SS_COMP                   0x01   /* SRB completed without error    */
  83. #define SS_ABORTED                0x02   /* SRB aborted                    */
  84. #define SS_ABORT_FAIL             0x03   /* Unable to abort SRB            */
  85. #define SS_ERR                    0x04   /* SRB completed with error       */
  86. #define SS_INVALID_CMD            0x80   /* Invalid ASPI command           */
  87. #define SS_INVALID_HA             0x81   /* Invalid host adapter number    */
  88. #define SS_NO_DEVICE              0x82   /* SCSI device not installed      */
  89. #define SS_INVALID_SRB            0xE0   /* Invalid parameter set in SRB   */
  90. #define SS_OLD_MANAGER            0xE1   /* ASPI manager doesn't support   */
  91.                                          /* windows                        */
  92. #define SS_BUFFER_ALIGN           0xE1   /* Buffer not aligned (replaces   */
  93.                                          /* SS_OLD_MANAGER in Win32)       */
  94. #define SS_ILLEGAL_MODE           0xE2   /* Unsupported Windows mode       */
  95. #define SS_NO_ASPI                0xE3   /* No ASPI managers               */
  96. #define SS_FAILED_INIT            0xE4   /* ASPI for windows failed init   */
  97. #define SS_ASPI_IS_BUSY           0xE5   /* No resources available to      */
  98.                                          /* execute command                */
  99. #define SS_BUFFER_TO_BIG          0xE6   /* Buffer size too big to handle  */
  100. #define SS_BUFFER_TOO_BIG         0xE6   /* Correct spelling of 'too'      */
  101. #define SS_MISMATCHED_COMPONENTS  0xE7   /* The DLLs/EXEs of ASPI don't    */
  102.                                          /* version check                  */
  103. #define SS_NO_ADAPTERS            0xE8   /* No host adapters to manager    */
  104. #define SS_INSUFFICIENT_RESOURCES 0xE9   /* Couldn't allocate resources    */
  105.                                          /* needed to init                 */
  106. #define SS_ASPI_IS_SHUTDOWN       0xEA   /* Call came to ASPI after        */
  107.                                          /* PROCESS_DETACH                 */
  108. #define SS_BAD_INSTALL            0xEB   /* The DLL or other components    */
  109.                                          /* are installed wrong            */
  110. /***************************************************************************
  111.  ** Host Adapter Status
  112.  ***************************************************************************/
  113. #define HASTAT_OK                 0x00   /* No error detected by HA        */
  114. #define HASTAT_SEL_TO             0x11   /* Selection Timeout              */
  115. #define HASTAT_DO_DU              0x12   /* Data overrun/data underrun     */
  116. #define HASTAT_BUS_FREE           0x13   /* Unexpected bus free            */
  117. #define HASTAT_PHASE_ERR          0x14   /* Target bus phase sequence      */
  118. #define HASTAT_TIMEOUT            0x09   /* Timed out while SRB was        */
  119.                                          /* waiting to be processed        */
  120. #define HASTAT_COMMAND_TIMEOUT    0x0B   /* Adapter timed out while        */
  121.                                          /* processing SRB                 */
  122. #define HASTAT_MESSAGE_REJECT     0x0D   /* While processing the SRB, the  */
  123.                                          /* adapter received a MESSAGE     */
  124. #define HASTAT_BUS_RESET          0x0E   /* A bus reset was detected       */
  125. #define HASTAT_PARITY_ERROR       0x0F   /* A parity error was detected    */
  126. #define HASTAT_REQUEST_SENSE_FAILED 0x10 /* The adapter failed in issuing  */
  127. #ifndef __GNUC__
  128. #pragma pack(1)
  129. #endif
  130. /***************************************************************************
  131.  ** SRB - HOST ADAPTER INQUIRIY - SC_HA_INQUIRY (0)
  132.  ***************************************************************************/
  133. typedef struct {
  134.   BYTE     SRB_Cmd;           /* 00/000 ASPI command code == SC_HA_INQUIRY */
  135.   BYTE     SRB_Status;        /* 01/001 ASPI command status byte           */
  136.   BYTE     SRB_HaID;          /* 02/002 ASPI host adapter number           */
  137.   BYTE     SRB_Flags;         /* 03/003 ASPI request flags                 */
  138.   DWORD    SRB_Hdr_Rsvd;      /* 04/004 Reserved, must = 0                 */
  139.   BYTE     HA_Count;          /* 08/008 Number of host adapters present    */
  140.   BYTE     HA_SCSI_ID;        /* 09/009 SCSI ID of host adapter            */
  141.   BYTE     HA_ManagerId[16];  /* 0a/010 String describing the manager      */
  142.   BYTE     HA_Identifier[16]; /* 1a/026 String describing the host adapter */
  143.   BYTE     HA_Unique[16];     /* 2a/042 Host Adapter Unique parameters     */
  144.   WORD     HA_Rsvd1;          /* 3a/058 Reserved, must = 0                 */
  145.   BYTE     pad[20];
  146. } PACKED SRB_HAInquiry, *PSRB_HAInquiry, FAR *LPSRB_HAInquiry;
  147. /***************************************************************************
  148.  ** SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE (1)
  149.  ***************************************************************************/
  150. typedef struct
  151. {
  152.   BYTE     SRB_Cmd;           /* 00/000 ASPI cmd code == SC_GET_DEV_TYPE   */
  153.   BYTE     SRB_Status;        /* 01/001 ASPI command status byte           */
  154.   BYTE     SRB_HaID;          /* 02/002 ASPI host adapter number           */
  155.   BYTE     SRB_Flags;         /* 03/003 Reserved, must = 0                 */
  156.   DWORD    SRB_Hdr_Rsvd;      /* 04/004 Reserved, must = 0                 */
  157.   BYTE     SRB_Target;        /* 08/008 Target's SCSI ID                   */
  158.   BYTE     SRB_Lun;           /* 09/009 Target's LUN number                */
  159.   BYTE     SRB_DeviceType;    /* 0a/010 Target's peripheral device type    */
  160.   BYTE     SRB_Rsvd1;         /* 0b/011 Reserved, must = 0                 */
  161.   BYTE     pad[68];
  162. } PACKED SRB_GDEVBlock, *PSRB_GDEVBlock, FAR *LPSRB_GDEVBlock;
  163. /***************************************************************************
  164.  ** SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD (2)
  165.  ***************************************************************************/
  166. typedef struct
  167. {
  168.   BYTE     SRB_Cmd;           /* 00/000 ASPI cmd code == SC_EXEC_SCSI_CMD  */
  169.   BYTE     SRB_Status;        /* 01/001 ASPI command status byte           */
  170.   BYTE     SRB_HaID;          /* 02/002 ASPI host adapter number           */
  171.   BYTE     SRB_Flags;         /* 03/003 Reserved, must = 0                 */
  172.   DWORD    SRB_Hdr_Rsvd;      /* 04/004 Reserved, must = 0                 */
  173.   BYTE     SRB_Target;        /* 08/008 Target's SCSI ID                   */
  174.   BYTE     SRB_Lun;           /* 09/009 Target's LUN                       */
  175.   WORD     SRB_Rsvd1;         /* 0a/010 Reserved for alignment             */
  176.   DWORD    SRB_BufLen;        /* 0c/012 Data Allocation Length             */
  177.   BYTE FAR *SRB_BufPointer;   /* 10/016 Data Buffer Pointer                */
  178.   BYTE     SRB_SenseLen;      /* 14/020 Sense Allocation Length            */
  179.   BYTE     SRB_CDBLen;        /* 15/021 CDB Length                         */
  180.   BYTE     SRB_HaStat;        /* 16/022 Host Adapter Status                */
  181.   BYTE     SRB_TargStat;      /* 17/023 Target Status                      */
  182.   VOID FAR *SRB_PostProc;     /* 18/024 Post routine                       */
  183.   BYTE     SRB_Rsvd2[20];     /* 1c/028 Reserved, must = 0                 */
  184.   BYTE     CDBByte[16];       /* 30/048 SCSI CDB                           */
  185.   BYTE SenseArea[SENSE_LEN+2]; /* 40/064 Request Sense buffer              */
  186. } PACKED SRB_ExecSCSICmd, *PSRB_ExecSCSICmd, FAR *LPSRB_ExecSCSICmd;
  187. /***************************************************************************
  188.  ** SRB - BUS DEVICE RESET - SC_RESET_DEV (4)
  189.  ***************************************************************************/
  190. typedef struct
  191. {
  192.   BYTE     SRB_Cmd;           /* 00/000 ASPI cmd code == SC_RESET_DEV      */
  193.   BYTE     SRB_Status;        /* 01/001 ASPI command status byte           */
  194.   BYTE     SRB_HaId;          /* 02/002 ASPI host adapter number           */
  195.   BYTE     SRB_Flags;         /* 03/003 Reserved, must = 0                 */
  196.   DWORD    SRB_Hdr_Rsvd;      /* 04/004 Reserved                           */
  197.   BYTE     SRB_Target;        /* 08/008 Target's SCSI ID                   */
  198.   BYTE     SRB_Lun;           /* 09/009 Target's LUN number                */
  199.   BYTE     SRB_Rsvd1[12];     /* 0A/010 Reserved for alignment             */
  200.   BYTE     SRB_HaStat;        /* 16/022 Host Adapter Status                */
  201.   BYTE     SRB_TargStat;      /* 17/023 Target Status                      */
  202.   VOID FAR *SRB_PostProc;     /* 18/024 Post routine                       */
  203.   BYTE     SRB_Rsvd2[36];     /* 1C/028 Reserved, must = 0                 */
  204.   BYTE     pad[16];
  205. } SRB_BusDeviceReset, *PSRB_BusDeviceReset, FAR *LPSRB_BusDeviceReset;
  206. typedef struct tag_ASPI32BUFF
  207. {
  208.   PBYTE     AB_BufPointer;
  209.   DWORD     AB_BufLen;
  210.   DWORD     AB_ZeroFill;
  211.   DWORD     AB_Reserved;
  212. } PACKED ASPI32BUFF, *PASPI32BUFF, FAR *LPASPI32BUFF;
  213. typedef struct 
  214. {
  215.   BYTE      SRB_Cmd;
  216.   BYTE      SRB_Status;
  217.   BYTE      SRB_HaId;
  218.   BYTE      SRB_Flags;
  219.   DWORD     SRB_Hdr_Rsvd;
  220. } PACKED SRB, *PSRB, FAR *LPSRB;
  221. #ifndef __GNUC__
  222. #pragma pack()
  223. #endif
  224. #endif