Important: The information in this document is obsolete and should not be used for new development.
SCSIReleaseQ
You use theSCSIReleaseQfunction to release a frozen queue for a LUN.
OSErr SCSIAction(SCSI_PB *scsiPB);
scsiPB- A pointer to a SCSI Manager parameter block.
--> scsiPBLength UInt16 The size of the parameter block. --> scsiFunctionCode UInt8 The SCSIReleaseQfunction selector code (0x04).<-- scsiResult OSErr The returned result code. --> scsiDevice DeviceIdent The device identification record. --> scsiCompletion CallbackProc Unused. Must be set to nil.DESCRIPTION
TheSCSIReleaseQfunction releases a frozen I/O queue for the logical unit number specified in thescsiDevicefield. If an I/O request returns with thescsiSIMQFrozenflag set in thescsiResultFlagsfield, you must call this function to restore normal operation.Queue freezing provides the opportunity to insert error-handling requests at the beginning of the queue using the
scsiSIMQHeadflag. You then release the queue using this function. Subsequent errors will continue to freeze the queue, allowing you to step through the queue one request at a time without aborting any other pending requests.Because this function is always executed synchronously, the
scsiCompletionfield must be set tonil. Unlike other synchronous functions, however, you can callSCSIReleaseQfrom a completion routine.RESULT CODES
noErr 0 No error scsiIDInvalid -7866 The initiator ID is invalid scsiLUNInvalid -7867 The logical unit number is invalid scsiTIDInvalid -7868 The target ID is invalid scsiBusInvalid -7869 The bus ID is invalid scsiRequestInvalid -7870 The parameter block request is invalid scsiPBLengthError -7872 The parameter block is too small for this SIM scsiQLinkInvalid -7881 The qLinkfield was not 0SEE ALSO
See "Error Recovery Techniques" on page 4-10 for more information about queue freezing.