Prototype: DWORD SendASPI32Command(LPSRB)
Declaration: LPSRB lpSRB;
The SendASPI32Command function with command code SC_ABORT_SRB is used to request that a pending SRB be aborted. It should be issued on any I/O request that has not completed if the application wishes to time-out on that request. Success of the abort command is never assured.
Parameter | Description |
---|---|
lpSRB | Points to the following SCSI request block |
typedef struct {
BYTE SRB_Cmd; // ASPI command code = SC_ABORT_SRB
BYTE SRB_Status; // ASPI command status byte
BYTE SRB_HaId; // ASPI host adapter number
BYTE SRB_Flags; // Reserved
DWORD SRB_Hdr_Rsvd; // Reserved
void *SRB_ToAbort; // Pointer to SRB to abort
} SRB_Abort, *PSRB_Abort;
Table 4-8. Abort SCSI I/O Command
Member | Description |
---|---|
SRB_Cmd | [IN] This field must contain SC_ABORT_SRB. |
SRB_Status | [OUT] On return, this field will be the same as the return status defined below. |
SRB_HaId | [IN] This field specifies which installed host adapter the request is intended for. Host adapter numbers are always assigned by the ASPI manager layer beginning with zero. |
SRB_Flags | [IN] Reserved = 0 |
SRB_Hdr_Rsvd | Reserved = 0 |
SRB_ToAbort | [IN] This fields contains a pointer to the SRB which is to be aborted. The actual failure or success of the abort operation is indicated by the status eventually returned in this SRB. |
Table 4-9. Return Values from Abort SCSI I/O Command
Value | Meaning |
---|---|
SS_COMP | SCSI/ASPI request has completed without error. |
SS_INVALID_HA | Invalid host adapter number. |
SS_INVALID_SRB | One or more parameters in the SCSI Request Block (SRB) are set incorrectly. |
Example
This example shows how to abort a "stuck" SCSI I/O.
SRB_ExecSCSICmd StuckSRB;
SRB_Abort AbortSRB;
DWORD ASPIStatus;
.
.
AbortSRB.SRB_Cmd = SC_ABORT_SRB;
AbortSRB.SRB_HaId = 0;
AbortSRB.SRB_Flags = 0;
AbortSRB.SRB_Hdr_Rsvd = 0;
AbortSRB.SRB_ToAbort = (LPSRB) &StuckSRB;
ASPIStatus = SendASPI32Command ( (LPSRB) &AbortSRB );
.
.