2 * This file should be source compatible with the Adaptec winaspi.h
3 * All DOS ASPI structures are the same as WINASPI
5 * Copyright (C) 2000 Alexandre Julliard
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
25 /* Include base aspi defs */
30 #endif /* #ifdef __cplusplus */
40 typedef struct tagSRB16_HaInquiry {
45 WORD SRB_55AASignature;
46 WORD SRB_ExtBufferSize;
49 BYTE HA_ManagerId[16];
50 BYTE HA_Identifier[16];
53 } SRB_HaInquiry16, *PSRB_HaInquiry16, *LPSRB_HaInquiry16;
55 typedef struct tagSRB16_GDEVBlock {
56 BYTE SRB_Cmd; /* ASPI command code = SC_GET_DEV_TYPE */
57 BYTE SRB_Status; /* ASPI command status byte */
58 BYTE SRB_HaId; /* ASPI host adapter number */
59 BYTE SRB_Flags; /* ASPI request flags */
60 DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
61 BYTE SRB_Target; /* Target's SCSI ID */
62 BYTE SRB_Lun; /* Target's LUN number */
63 BYTE SRB_DeviceType; /* Target's peripheral device type */
64 } SRB_GDEVBlock16, *PSRB_GDEVBlock16, *LPSRB_GDEVBlock16;
67 typedef struct tagSRB16_ExecSCSICmd {
68 BYTE SRB_Cmd; /* ASPI command code (W) */
69 BYTE SRB_Status; /* ASPI command status byte (R) */
70 BYTE SRB_HaId; /* ASPI host adapter number (W) */
71 BYTE SRB_Flags; /* ASPI request flags (W) */
72 DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 (-) */
73 BYTE SRB_Target; /* Target's SCSI ID (W) */
74 BYTE SRB_Lun; /* Target's LUN number (W) */
75 DWORD SRB_BufLen; /* Data Allocation LengthPG (W/R)*/
76 BYTE SRB_SenseLen; /* Sense Allocation Length (W) */
77 SEGPTR SRB_BufPointer; /* Data Buffer Pointer (W) */
78 DWORD SRB_Rsvd1; /* Reserved, MUST = 0 (-/W)*/
79 BYTE SRB_CDBLen; /* CDB Length = 6 (W) */
80 BYTE SRB_HaStat; /* Host Adapter Status (R) */
81 BYTE SRB_TargStat; /* Target Status (R) */
82 FARPROC16 SRB_PostProc; /* Post routine (W) */
83 BYTE SRB_Rsvd2[34]; /* Reserved, MUST = 0 */
84 BYTE CDBByte[1]; /* SCSI CBD - variable length (W) */
85 /* variable example for 6 byte cbd
86 * BYTE CDBByte[6]; * SCSI CDB (W) *
87 * BYTE SenseArea6[SENSE_LEN]; * Request Sense buffer (R) *
89 } SRB_ExecSCSICmd16, *PSRB_ExecSCSICmd16, *LPSRB_ExecSCSICmd16;
91 typedef struct tagSRB16_Abort {
92 BYTE SRB_Cmd; /* ASPI command code = SC_ABORT_SRB */
93 BYTE SRB_Status; /* ASPI command status byte */
94 BYTE SRB_HaId; /* ASPI host adapter number */
95 BYTE SRB_Flags; /* ASPI request flags */
96 DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
97 SEGPTR SRB_ToAbort; /* Pointer to SRB to abort */
98 } SRB_Abort16, *PSRB_Abort16, *LPSRB_Abort16;
101 typedef struct tagSRB16_BusDeviceReset {
102 BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */
103 BYTE SRB_Status; /* ASPI command status byte */
104 BYTE SRB_HaId; /* ASPI host adapter number */
105 BYTE SRB_Flags; /* ASPI request flags */
106 DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
107 BYTE SRB_Target; /* Target's SCSI ID */
108 BYTE SRB_Lun; /* Target's LUN number */
109 BYTE SRB_ResetRsvd1[14]; /* Reserved, MUST = 0 */
110 BYTE SRB_HaStat; /* Host Adapter Status */
111 BYTE SRB_TargStat; /* Target Status */
112 FARPROC16 SRB_PostProc; /* Post routine */
113 BYTE SRB_ResetRsvd2[34]; /* Reserved, MUST = 0 */
114 } SRB_BusDeviceReset16, *PSRB_BusDeviceReset16, *LPSRB_BusDeviceReset16;
117 typedef struct tagSRB16_Common {
118 BYTE SRB_Cmd; /* ASPI command code = SC_ABORT_SRB */
119 BYTE SRB_Status; /* ASPI command status byte */
120 BYTE SRB_HaId; /* ASPI host adapter number */
121 BYTE SRB_Flags; /* ASPI request flags */
122 DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
123 } SRB_Common16, *PSRB_Common16, *LPSRB_Common16;
125 typedef union tagSRB16 {
127 SRB_HaInquiry16 inquiry;
128 SRB_ExecSCSICmd16 cmd;
130 SRB_BusDeviceReset16 reset;
131 SRB_GDEVBlock16 devtype;
136 extern WORD WINAPI SendASPICommand16(SEGPTR);
137 extern WORD WINAPI GetASPISupportInfo16(void);
141 #endif /* #ifdef __cplusplus */
143 #endif /* __WINE_WINASPI_H */