The following changes were recently made, and I'm posting them in case folks have thoughts or concerns.
It was observed that on Microsoft Windows sense data may be returned although the status given on the command that issues this DeviceIoControl may report a "normal" status which I guess means here just that the SCSI pass through command succeeded, not that the operation that was requested succeeded. This seems to be different than FreeBSD and GNU/Linux which seems to factor into the return status whether the operation performed succeeded or not. In response to the question of whether request sense information can be returned when there is no error, Thomas reports that there are some situations where warning information may be returned. For example, if error correction was successful on return. As a result of this, I've added a new enumeration to the driver_return_code_t - DRIVER_OP_MMC_SENSE_DATA. This is set when there is sense data and there isn't a more appropriate status code that was set. For example on Microsoft Windows, a sense reply for a bad parameter is turned into a DRIVER_OP_BAD_PARAMETER rather than leaving this as just DRIVER_OP_MMC_SENSE_DATA. On GNU/Linux some of the specific errno conditions also get turned into driver_return_code_t enumerations. Another recent addition is the declaration of the sense reply structure in mmc.h This allows one to refer to say the sense_key as a field value rather than a bit-masked offset into an array of sense bytes.
