Windows2003-3790/public/internal/sdktools/inc/sptlib.h
2020-09-30 16:53:55 +02:00

991 lines
59 KiB
C

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
spt.h
Abstract:
SCSI_PASS_THROUGH header for user-mode apps
Environment:
User mode only
Revision History:
4/10/2000 - created
--*/
#ifndef __SPTLIB_H__
#define __SPTLIB_H__
#ifdef __cplusplus
extern "C" {
#endif
#pragma warning(push)
#pragma warning(disable:4200) // array[0] is not a warning for this file
#include <windows.h> // sdk
#include <devioctl.h> // sdk
#include <ntddscsi.h> // sdk
#include <ntddstor.h> // sdk
#define _NTSRB_ // allow user-mode scsi.h
#include <scsi.h> // ddk
#undef _NTSRB_
#define SPT_DEFAULT_TIMEOUT 60 // one minute timeout is default
#define SPT_MODE_SENSE_TIMEOUT 10 // more than this is not likely
typedef enum _SPT_MODE_PAGE_TYPE {
SptModePageTypeCurrent = 0x00,
SptModePageTypeChangable = 0x40,
SptModePageTypeDefault = 0x80,
SptModePageTypeSaved = 0xc0
} SPT_MODE_PAGE_TYPE, *PSPT_MODE_PAGE_TYPE;
//
// this simplified and speeds processing of MODE_SENSE
// and MODE_SELECT commands
//
struct _SPT_MODE_PAGE_INFO;
typedef struct _SPT_MODE_PAGE_INFO
SPT_MODE_PAGE_INFO,
*PSPT_MODE_PAGE_INFO;
#define SPT_NOT_READY_RETRY_INTERVAL 100 // 10 seconds
#define MAXIMUM_DEFAULT_RETRIES 5 // 5 retries
/*++
Routine Description:
Validates the CDB length matches the opcode's command group.
Arguments:
Return Value:
TRUE if size is correct or cannot be verified.
FALSE if size is mismatched.
--*/
BOOL
SptUtilValidateCdbLength(
IN PCDB Cdb,
IN UCHAR CdbSize
);
/*++
Routine Description:
Simplistic way to send a command to a device.
Arguments:
DeviceHandle - handle to device to send command to
Cdb - command to send to the device
CdbSize - size of the cdb
Buffer - Buffer to send to/get from the device
BufferSize - Size of available buffer on input.
Size of returned data when routine completes
iff GetDataFromDevice is TRUE
GetDataFromDevice - TRUE if getting data from device
FALSE if sending data to the device
Return Value:
TRUE if the command completed successfully
--*/
BOOL
SptSendCdbToDevice(
IN HANDLE DeviceHandle,
IN PCDB Cdb,
IN UCHAR CdbSize,
IN PUCHAR Buffer,
IN OUT PDWORD BufferSize,
IN BOOLEAN GetDataFromDevice
);
/*++
Routine Description:
Arguments:
DeviceHandle - handle to device to send command to
Cdb - command to send to the device
CdbSize - size of the cdb
Buffer - Buffer to send to/get from the device
BufferSize - Size of available buffer on input.
Size of returned data when routine completes
iff GetDataFromDevice is TRUE
SenseData - Optional buffer to store sense data on errors.
Must be NULL if SenseDataSize is zero.
Must be non-NULL if SenseDataSize is non-zero.
SenseDataSize - Size of sense data to return to host.
Must be zero if SenseData is NULL.
Must be non-zero if SenseData is non-NULL.
GetDataFromDevice - TRUE if getting data from device
FALSE if sending data to the device
TimeOut - Number of seconds before the command should timeout
Return Value:
TRUE if the command completed successfully.
FALSE if the command encountered an error
Data will also be transferred (check *BufferSize) if there is sense
data, but validity is not guaranteed.
SenseData may be valid, and may report ERROR_SUCCESS, meaning that
the resulting data is valid. (call SptUtilInterpretSenseInfo)
--*/
BOOL
SptSendCdbToDeviceEx(
IN HANDLE DeviceHandle,
IN PCDB Cdb,
IN UCHAR CdbSize,
IN OUT PUCHAR Buffer,
IN OUT PDWORD BufferSize,
OUT PSENSE_DATA SenseData, // if non-null, size must be non-zero
IN UCHAR SenseDataSize,
IN BOOLEAN GetDataFromDevice, // true = receive data
IN DWORD TimeOut // in seconds
);
/*++
Routine Description:
This is a user-mode translation of ClassInterpretSenseInfo()
from classpnp.sys. The ErrorValue is deduced based upon the
sense data, as well as whether the command should be retried or
not (and in approximately how long).
NOTE: we default to RETRY==TRUE except for known error classes
Arguments:
SenseData - pointer to the sense data
SenseDataSize - size of sense data
ErrorValue - pointer to location to store resulting error value.
NOTE: may return ERROR_SUCCESS
SuggestedRetry - pointer to location to store if the command should
be retried. it is the responsibility of the caller to limit the
number of retries.
SuggestedRetryDelay - pointer to location to store how long the caller
should delay (in 1/10 second increments) before retrying the command
if SuggestedRetry ends up being set to TRUE.
Return Value:
None
--*/
VOID
SptUtilInterpretSenseInfo(
IN PSENSE_DATA SenseData,
IN UCHAR SenseDataSize,
OUT PDWORD ErrorValue, // from WinError.h
OUT PBOOLEAN SuggestRetry OPTIONAL,
OUT PDWORD SuggestRetryDelay OPTIONAL
);
/*++
Routine Description:
Locks the device for exclusive access. Uses the same method format and
chkdsk use to gain exclusive access to the volume. This is a safe method
to use, as the FS is automatically remounted when the handle to the device
is closed.
Arguments:
VolumeHandle - Handle to the volume. Typically created using CreateFile()
to a device of the format \\.\D:
ForceDismount - If TRUE, will try to force dismount the disk even if
there are open handles. Else this call fails if the volume
is already opened by some other application. The UI to
make the decision to force a dismount is left to the
calling application.
Return Value:
TRUE if the volume was locked for exclusive access
FALSE if the volume could not be locked.
--*/
BOOL
SptUtilLockVolumeByHandle(
IN HANDLE VolumeHandle,
IN BOOLEAN ForceDismount
);
#if 0
/*++
Routine Description:
Acquires a volume handle for the provided drive letter.
Arguments:
VolumeHandle - Handle to the volume. Typically created using CreateFile()
to a device of the format \\.\D:
ForceDismount - If TRUE, will try to force dismount the disk without
prompting the user.
Quiet - If TRUE, will not prompt the user. Can be used to fail
if the volume is already opened without providing the
user an opportunity to force the volume to dismount
Return Value:
TRUE if the volume was locked for exclusive access
FALSE if the volume could not be locked.
--*/
BOOL
SptGetVolumeHandleByDriveLetter(
OUT HANDLE * VolumeHandle,
IN UCHAR DriveLetter
);
BOOL
SptGetDeviceHandleByScsiAddress(
OUT HANDLE * VolumeHandle,
IN SCSI_ADDRESS ScsiAddress
);
BOOL
SptGetDeviceInfo(
IN HANDLE VolumeHandle,
IN PSTORAGE_DEVICE_DESCRIPTOR DeviceDescriptorBuffer,
IN ULONG BufferSize
);
BOOL
SptGetAdapterInfo(
IN HANDLE VolumeHandle,
IN PSTORAGE_ADAPTER_DESCRIPTOR AdapterDescriptorBuffer,
IN ULONG BufferSize
);
BOOL
SptAllocAlignedBuffer(
OUT PVOID * Buffer, // must be free'd with SptFreeAlignedBuffer()
IN ULONG BufferSize,
IN ULONG AlignmentMask // from STORAGE_ADAPTER_DESCRIPTOR
);
BOOL
SptFreeAlignedBuffer(
IN PVOID Buffer // must have been allocated by SptAllocAlignedBuffer()
);
#endif // 0
#if 0
typedef struct _SCSI_ASC_ASCQ_RETURN_VALUES_TEXT {
ULONG Number;
PCHAR Name;
} SCSI_ASC_ASCQ_RETURN_VALUES_TEXT, *PSCSI_ASC_ASCQ_RETURN_VALUES_TEXT;
#define MAKE_IT(name, number) \
{ (number), #name }
SCSI_ASC_ASCQ_RETURN_VALUES_TEXT data[] = {
MAKE_IT(NO_ADDITIONAL_SENSE_INFORMATION , 0x0000),
MAKE_IT(FILEMARK_DETECTED , 0x0001),
MAKE_IT(END_OF_PARTITION_OR_MEDIUM_DETECTED , 0x0002),
MAKE_IT(SETMARK_DETECTED , 0x0003),
MAKE_IT(BEGINNING_OF_PARTITION_OR_MEDIUM_DETECTED , 0x0004),
MAKE_IT(END_OF_DATA_DETECTED , 0x0005),
MAKE_IT(PLAY_OPERATION_ABORTED , 0x0006),
MAKE_IT(AUDIO_PLAY_OPERATION_IN_PROGRESS , 0x0011),
MAKE_IT(AUDIO_PLAY_OPERATION_PAUSED , 0x0012),
MAKE_IT(AUDIO_PLAY_OPERATION_SUCCESSFULLY_COMPLETED , 0x0013),
MAKE_IT(AUDIO_PLAY_OPERATION_STOPPED_DUE_TO_ERROR , 0x0014),
MAKE_IT(NO_CURRENT_AUDIO_STATUS_TO_RETURN , 0x0015),
MAKE_IT(OPERATION_IN_PROGRESS , 0x0016),
MAKE_IT(CLEANING_REQUESTED , 0x0017),
MAKE_IT(NO_INDEX_OR_SECTOR_SIGNAL , 0x0100),
MAKE_IT(NO_SEEK_COMPLETE , 0x0200),
MAKE_IT(PERIPHERAL_DEVICE_WRITE_FAULT , 0x0300),
MAKE_IT(NO_WRITE_CURRENT , 0x0301),
MAKE_IT(EXCESSIVE_WRITE_ERRORS , 0x0302),
MAKE_IT(LU_NOT_READY_CAUSE_NOT_REPORTABLE , 0x0400),
MAKE_IT(LU_NOT_READY_BECOMING_READY , 0x0401),
MAKE_IT(LU_NOT_READY_INIT_COMMAND_REQUIRED , 0x0402),
MAKE_IT(LU_NOT_READY_MANUAL_INTERVENTION_REQUIRED , 0x0403),
MAKE_IT(LU_NOT_READY_FORMAT_IN_PROGRESS , 0x0404),
MAKE_IT(LU_NOT_READY_REBUILD_IN_PROGRESS , 0x0405),
MAKE_IT(LU_NOT_READY_RECALCULATION_IN_PROGRESS , 0x0406),
MAKE_IT(LU_NOT_READY_OPERATION_IN_PROGRESS , 0x0407),
MAKE_IT(LU_NOT_READY_LONG_WRITE_IN_PROGRESS , 0x0408),
MAKE_IT(LU_DOES_NOT_RESPOND_TO_SELECTION , 0x0500),
MAKE_IT(NO_REFERENCE_POSITION_FOUND__MEDIUM_MAY_BE_UPSIDE_DOWN , 0x0600),
MAKE_IT(MULTIPLE_PERIPHERAL_DEVICES_SELECTED , 0x0700),
MAKE_IT(LU_COMMUNICATION_FAILURE , 0x0800),
MAKE_IT(LU_COMMUNICATION_TIMEOUT , 0x0801),
MAKE_IT(LU_COMMUNICATION_PARITY_ERROR , 0x0802),
MAKE_IT(LU_COMMUNICATION_CRC_ERROR_UDMA32 , 0x0803),
MAKE_IT(TRACK_FOLLOWING_ERROR , 0x0900),
MAKE_IT(TRACKING_SERVO_FAILURE , 0x0901),
MAKE_IT(FOCUS_SERVO_FAILURE , 0x0902),
MAKE_IT(SPINDLE_SERVO_FAILURE , 0x0903),
MAKE_IT(HEAD_SELECT_FAULT , 0x0904),
MAKE_IT(ERROR_LOG_OVERFLOW , 0x0A00),
MAKE_IT(WARNING , 0x0B00),
MAKE_IT(WARNING_SPECIFIED_TEMPERATURE_EXCEEDED , 0x0B01),
MAKE_IT(WARNING_ENCLOSURE_DEGRADED , 0x0B02),
MAKE_IT(WRITE_ERROR , 0x0C00),
MAKE_IT(WRITE_ERROR__RECOVERED_WITH_AUTO_REALLOCATION , 0x0C01),
MAKE_IT(WRITE_ERROR__AUTO_REALLOCATION_FAILED , 0x0C02),
MAKE_IT(WRITE_ERROR__RECOMMEND_REASSIGNMENT , 0x0C03),
MAKE_IT(COMPRESSION_CHECK_MISCOMPARE_ERROR , 0x0C04),
MAKE_IT(DATA_EXPANSION_OCCURRED_DURING_COMPRESSION , 0x0C05),
MAKE_IT(BLOCK_NOT_COMPRESSABLE , 0x0C06),
MAKE_IT(WRITE_ERROR__RECOVERY_NEEDED , 0x0C07),
MAKE_IT(WRITE_ERROR__RECOVERY_FAILED , 0x0C08),
MAKE_IT(WRITE_ERROR__LOSS_OF_STREAMING , 0x0C09),
MAKE_IT(WRITE_ERROR__PADDING_BLOCKS_ADDED , 0x0C0A),
MAKE_IT(ID_CRC_OR_ECC_ERROR , 0x1000),
MAKE_IT(UNRECOVERED_READ_ERROR , 0x1100),
MAKE_IT(READ_RETRIES_EXHAUSTED , 0x1101),
MAKE_IT(ERROR_TOO_LONG_TO_CORRECT , 0x1102),
MAKE_IT(MULTIPLE_READ_ERRORS , 0x1103),
MAKE_IT(UNRECOVERED_READ_ERROR__AUTO_REALLOCATE_FAILED , 0x1104),
MAKE_IT(LEC_UNCORRECTABLE_ERROR , 0x1105),
MAKE_IT(CIRC_UNCORRECTABLE_ERROR , 0x1106),
MAKE_IT(RESYNCHRONIZATION_ERROR , 0x1107),
MAKE_IT(INCOMPLETE_BLOCK_READ , 0x1108),
MAKE_IT(NO_GAP_FOUND , 0x1109),
MAKE_IT(MISCORRECTED_ERROR , 0x110A),
MAKE_IT(UNRECOVERED_READ_ERROR__RECOMMEND_REASSIGNMENT , 0x110B),
MAKE_IT(UNRECOVERED_READ_ERROR__RECOMMEND_REWRITE_DATA , 0x110C),
MAKE_IT(DECOMPRESSION_CRC_ERROR , 0x110D),
MAKE_IT(CANNOT_DECOMPRESS_USING_DECLARED_ALGORITHM , 0x110E),
MAKE_IT(ERROR_READING_UPC_OR_EAN_NUMBER , 0x110F),
MAKE_IT(ERROR_READING_ISRC_NUMBER , 0x1110),
MAKE_IT(READ_ERROR__LOSS_OF_STREAMING , 0x1111),
MAKE_IT(ADDRESS_MARK_NOT_FOUND_FOR_ID_FIELD , 0x1200),
MAKE_IT(ADDRESS_MARK_NOT_FOUND_FOR_DATA_FIELD , 0x1300),
MAKE_IT(RECORDED_ENTITY_NOT_FOUND , 0x1400),
MAKE_IT(RECORD_NOT_FOUND , 0x1401),
MAKE_IT(FILEMARK_OR_SETMARK_NOT_FOUND , 0x1402),
MAKE_IT(END_OF_DATA_NOT_FOUND , 0x1403),
MAKE_IT(BLOCK_SEQUENCE_ERROR , 0x1404),
MAKE_IT(RECORD_NOT_FOUND__RECOMMEND_REASSIGNMENT , 0x1405),
MAKE_IT(RECORD_NOT_FOUND__DATA_AUTO_REALLOCATED , 0x1406),
MAKE_IT(RANDOM_POSITIONING_ERROR , 0x1500),
MAKE_IT(MECHANICAL_POSITIONING_ERROR , 0x1501),
MAKE_IT(POSITIONING_ERROR_DETECTED_BY_READ_OF_MEDIUM , 0x1502),
MAKE_IT(DATA_SYNCHRONIZATION_MARK_ERROR , 0x1600),
MAKE_IT(DATA_SYNC_ERROR__DATA_REWRITTEN , 0x1601),
MAKE_IT(DATA_SYNC_ERROR__RECOMMEND_REWRITE , 0x1602),
MAKE_IT(DATA_SYNC_ERROR__DATA_AUTO_REALLOCATED , 0x1603),
MAKE_IT(DATA_SYNC_ERROR__RECOMMEND_REASSIGNMENT , 0x1604),
MAKE_IT(RECOVERED_DATA_WITH_NO_ERROR_CORRECTION_APPLIED , 0x1700),
MAKE_IT(RECOVERED_DATA_WITH_RETRIES , 0x1701),
MAKE_IT(RECOVERED_DATA_WITH_POSITIVE_HEAD_OFFSET , 0x1702),
MAKE_IT(RECOVERED_DATA_WITH_NEGATIVE_HEAD_OFFSET , 0x1703),
MAKE_IT(RECOVERED_DATA_WITH_RETRIES_AND_OR_CIRC_APPLIED , 0x1704),
MAKE_IT(RECOVERED_DATA_USING_PREVIOUS_SECTOR_ID , 0x1705),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__DATA_AUTO_REALLOCATED , 0x1706),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__RECOMMEND_REASSIGNMENT , 0x1707),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__RECOMMEND_REWRITE , 0x1708),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__DATA_REWRITTEN , 0x1709),
MAKE_IT(RECOVERED_DATA_WITH_ECC_APPLIED , 0x1800),
MAKE_IT(RECOVERED_DATA_WITH_ECC_AND_RETRIES_APPLIED , 0x1801),
MAKE_IT(RECOVERED_DATA__DATA_AUTO_REALLOCATED , 0x1802),
MAKE_IT(RECOVERED_DATA_WITH_CIRC , 0x1803),
MAKE_IT(RECOVERED_DATA_WITH_LEC , 0x1804),
MAKE_IT(RECOVERED_DATA__RECOMMEND_REASSIGNMENT , 0x1805),
MAKE_IT(RECOVERED_DATA__RECOMMEND_REWRITE , 0x1806),
MAKE_IT(RECOVERED_DATA_WITH_ECC__DATA_REWRITTEN , 0x1807),
MAKE_IT(RECOVERED_DATA_WITH_LINKING , 0x1808),
MAKE_IT(DEFECT_LIST_ERROR , 0x1900),
MAKE_IT(DEFECT_LIST_NOT_AVAILABLE , 0x1901),
MAKE_IT(DEFECT_LIST_ERROR_IN_PRIMARY_LIST , 0x1902),
MAKE_IT(DEFECT_LIST_ERROR_IN_GROWN_LIST , 0x1903),
MAKE_IT(PARAMETER_LIST_LENGTH_ERROR , 0x1A00),
MAKE_IT(SYNCHRONOUS_DATA_TRANSFER_ERROR , 0x1B00),
MAKE_IT(DEFECT_LIST_NOT_FOUND , 0x1C00),
MAKE_IT(PRIMARY_DEFECT_LIST_NOT_FOUND , 0x1C01),
MAKE_IT(GROWN_DEFECT_LIST_NOT_FOUND , 0x1C02),
MAKE_IT(MISCOMPARE_DURING_VERIFY_OPERATION , 0x1D00),
MAKE_IT(RECOVERED_ID_WITH_ECC_CORRECTION , 0x1E00),
MAKE_IT(PARTIAL_DEFECT_LIST_TRANSFER , 0x1F00),
MAKE_IT(INVALID_COMMAND_OPERATION_CODE , 0x2000),
MAKE_IT(LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE , 0x2100),
MAKE_IT(INVALID_ELEMENT_ADDRESS , 0x2101),
MAKE_IT(INVALID_ADDRESS_FOR_WRITE , 0x2102),
MAKE_IT(_OBSOLETE__ILLEGAL_FUNCTION , 0x2200),
MAKE_IT(INVALID_FIELD_IN_CDB , 0x2400),
MAKE_IT(LOGICAL_UNIT_NOT_SUPPORTED , 0x2500),
MAKE_IT(INVALID_FIELD_IN_PARAMETER_LIST , 0x2600),
MAKE_IT(PARAMETER_NOT_SUPPORTED , 0x2601),
MAKE_IT(PARAMETER_VALUE_NOT_SUPPORTED , 0x2602),
MAKE_IT(THRESHOLD_PARAMETERS_NOT_SUPPORTED , 0x2603),
MAKE_IT(INVALID_RELEASE_OF_ACTIVE_PERSISTENT_RESERVATION , 0x2604),
MAKE_IT(WRITE_PROTECTED , 0x2700),
MAKE_IT(HARDWARE_WRITE_PROTECTED , 0x2701),
MAKE_IT(LU_SOFTWARE_WRITE_PROTECTED , 0x2702),
MAKE_IT(ASSOCIATED_WRITE_PROTECT , 0x2703),
MAKE_IT(PERSISTENT_WRITE_PROTECT , 0x2704),
MAKE_IT(PERMANENT_WRITE_PROTECT , 0x2705),
MAKE_IT(CONDITIONAL_WRITE_PROTECT , 0x2706),
MAKE_IT(NOT_READY_TO_READY__MEDIUM_MAY_HAVE_CHANGED , 0x2800),
MAKE_IT(IMPORT_OR_EXPORT_ELEMENT_ACCESSED , 0x2801),
MAKE_IT(POWER_ON_RESET_OR_BUS_DEVICE_RESET_OCCURRED , 0x2900),
MAKE_IT(POWER_ON_OCCURRED , 0x2901),
MAKE_IT(SCSI_BUS_RESET_OCCURRED , 0x2902),
MAKE_IT(BUS_DEVICE_RESET_FUNCTION_OCCURRED , 0x2903),
MAKE_IT(DEVICE_INTERNAL_RESET , 0x2904),
MAKE_IT(PARAMETERS_CHANGED , 0x2A00),
MAKE_IT(MODE_PARAMETERS_CHANGED , 0x2A01),
MAKE_IT(LOG_PARAMETERS_CHANGED , 0x2A02),
MAKE_IT(RESERVATIONS_PREEMPTED , 0x2A03),
MAKE_IT(COPY_CANNOT_EXECUTE_SINCE_HOST_CANNOT_DISCONNECT , 0x2B00),
MAKE_IT(COMMAND_SEQUENCE_ERROR , 0x2C00),
MAKE_IT(TOO_MANY_WINDOWS_SPECIFIED , 0x2C01),
MAKE_IT(INVALID_COMBINATION_OF_WINDOWS_SPECIFIED , 0x2C02),
MAKE_IT(CURRENT_PROGRAM_AREA_IS_NOT_EMPTY , 0x2C03),
MAKE_IT(CURRENT_PROGRAM_AREA_IS_EMPTY , 0x2C04),
MAKE_IT(PERSISTENT_PREVENT_CONFLICT , 0x2C05),
MAKE_IT(OVERWRITE_ERROR_ON_UPDATE_IN_PLACE , 0x2D00),
MAKE_IT(INSUFFICIENT_TIME_FOR_OPERATION , 0x2E00),
MAKE_IT(COMMANDS_CLEARED_BY_ANOTHER_INITIATOR , 0x2F00),
MAKE_IT(INCOMPATIBLE_MEDIUM_INSTALLED , 0x3000),
MAKE_IT(CANNOT_READ_MEDIUM__UNKNOWN_FORMAT , 0x3001),
MAKE_IT(CANNOT_READ_MEDIUM__INCOMPATIBLE_FORMAT , 0x3002),
MAKE_IT(CANNOT_READ_MEDIUM__CLEANING_CARTRIDGE_INSTALLED , 0x3003),
MAKE_IT(CANNOT_WRITE_MEDIUM__UNKNOWN_FORMAT , 0x3004),
MAKE_IT(CANNOT_WRITE_MEDIUM__INCOMPATIBLE_FORMAT , 0x3005),
MAKE_IT(CANNOT_FORMAT_MEDIUM__INCOMPATIBLE_MEDIUM , 0x3006),
MAKE_IT(CLEANING_FAILURE , 0x3007),
MAKE_IT(CANNOT_WRITE__APPLICATION_CODE_MISMATCH , 0x3008),
MAKE_IT(CURRENT_SESSION_NOT_FIXATED_FOR_APPEND , 0x3009),
MAKE_IT(MEDIUM_FORMAT_CORRUPTED , 0x3100),
MAKE_IT(FORMAT_COMMAND_FAILED , 0x3101),
MAKE_IT(ZONED_FORMATTING_FAILED_DUE_TO_SPARE_LINKING , 0x3102),
MAKE_IT(NO_DEFECT_SPARE_LOCATION_AVAILABLE , 0x3200),
MAKE_IT(DEFECT_LIST_UPDATE_FAILURE , 0x3201),
MAKE_IT(TAPE_LENGTH_ERROR , 0x3300),
MAKE_IT(ENCLOSURE_FAILURE , 0x3400),
MAKE_IT(ENCLOSURE_SERVICES_FAILURE , 0x3500),
MAKE_IT(UNSUPPORTED_ENCLOSURE_FUNCTION , 0x3501),
MAKE_IT(ENCLOSURE_SERVICES_UNAVAILABLE , 0x3502),
MAKE_IT(ENCLOSURE_SERVICES_TRANSFER_FAILURE , 0x3503),
MAKE_IT(ENCLOSURE_SERVICES_TRANSFER_REFUSED , 0x3504),
MAKE_IT(RIBBON_INK_OR_TONER_FAILURE , 0x3600),
MAKE_IT(ROUNDED_PARAMETER , 0x3700),
MAKE_IT(SAVING_PARAMETERS_NOT_SUPPORTED , 0x3900),
MAKE_IT(MEDIUM_NOT_PRESENT , 0x3A00),
MAKE_IT(MEDIUM_NOT_PRESENT__TRAY_CLOSED , 0x3A01),
MAKE_IT(MEDIUM_NOT_PRESENT__TRAY_OPEN , 0x3A02),
MAKE_IT(SEQUENTIAL_POSITIONING_ERROR , 0x3B00),
MAKE_IT(TAPE_POSITION_ERROR_AT_BEGINNING_OF_MEDIUM , 0x3B01),
MAKE_IT(TAPE_POSITION_ERROR_AT_END_OF_MEDIUM , 0x3B02),
MAKE_IT(TAPE_OR_ELECTRONIC_VERTICAL_FORMS_UNIT_NOT_READY , 0x3B03),
MAKE_IT(SLEW_FAILURE , 0x3B04),
MAKE_IT(PAPER_JAM , 0x3B05),
MAKE_IT(FAILED_TO_SENSE_TOP_OF_FORM , 0x3B06),
MAKE_IT(FAILED_TO_SENSE_BOTTOM_OF_FORM , 0x3B07),
MAKE_IT(REPOSITION_ERROR , 0x3B08),
MAKE_IT(READ_PAST_END_OF_MEDIUM , 0x3B09),
MAKE_IT(READ_PAST_BEGINNING_OF_MEDIUM , 0x3B0A),
MAKE_IT(POSITION_PAST_END_OF_MEDIUM , 0x3B0B),
MAKE_IT(POSITION_PAST_BEGINNING_OF_MEDIUM , 0x3B0C),
MAKE_IT(MEDIUM_DESTINATION_ELEMENT_FULL , 0x3B0D),
MAKE_IT(MEDIUM_SOURCE_ELEMENT_FULL , 0x3B0E),
MAKE_IT(END_OF_MEDIUM_REACHED , 0x3B0F),
MAKE_IT(MEDIUM_MAGAZINE_NOT_ACCESSIBLE , 0x3B11),
MAKE_IT(MEDIUM_MAGAZINE_REMOVED , 0x3B12),
MAKE_IT(MEDIUM_MAGAZINE_INSERTED , 0x3B13),
MAKE_IT(MEDIUM_MAGAZINE_LOCKED , 0x3B14),
MAKE_IT(MEDIUM_MAGAZINE_UNLOCKED , 0x3B15),
MAKE_IT(MECHANICAL_POSITIONING_OR_CHANGER_ERROR , 0x3B16),
MAKE_IT(INVALID_BITS_IN_IDENTIFY_MESSAGE , 0x3D00),
MAKE_IT(LU_HAS_NOT_SELF_CONFIGURED_YET , 0x3E00),
MAKE_IT(LU_FAILURE , 0x3E01),
MAKE_IT(TIMEOUT_ON_LU , 0x3E02),
MAKE_IT(TARGET_OPERATING_CONDITIONS_HAVE_CHANGED , 0x3F00),
MAKE_IT(MICROCODE_HAS_BEEN_CHANGED , 0x3F01),
MAKE_IT(CHANGED_OPERATING_DEFINITION , 0x3F02),
MAKE_IT(INQUIRY_DATA_HAS_CHANGED , 0x3F03),
MAKE_IT(_OBSOLETE__RAM_FAILURE , 0x4000),
// ALL 40/nn ARE VENDOR-UNIQUE NOTIFICATIONS OF FAILURE ON COMPONENT nn
MAKE_IT(_OBSOLETE__DATA_PATH_FAILURE , 0x4100),
MAKE_IT(_OSBOLETE__POWER_ON_OR_SELF_TEST_FAILURE , 0x4200),
MAKE_IT(MESSAGE_ERROR , 0x4300),
MAKE_IT(INTERNAL_TARGET_FAILURE , 0x4400),
MAKE_IT(SELECT_OR_RESELECT_FAILURE , 0x4500),
MAKE_IT(UNSUCCESSFUL_SOFT_RESET , 0x4600),
MAKE_IT(SCSI_PARITY_ERROR , 0x4700),
MAKE_IT(INITIATOR_DETECTED_ERROR_MESSAGE_RECEIVED , 0x4800),
MAKE_IT(INVALID_MESSAGE_ERROR , 0x4900),
MAKE_IT(COMMAND_PHASE_ERROR , 0x4A00),
MAKE_IT(DATA_PHASE_ERROR , 0x4B00),
MAKE_IT(LOGICAL_UNIT_FAILED_SELF_CONFIGURATION , 0x4C00),
// TAGGED_OVERLAPPED_COMMANDS
MAKE_IT(OVERLAPPED_COMMANDS_ATTEMPTED , 0x4E00),
MAKE_IT(WRITE_APPEND_ERROR , 0x5000),
MAKE_IT(WRITE_APPEND_POSITION_ERROR , 0x5001),
MAKE_IT(POSITION_ERROR_RELATED_TO_TIMING , 0x5002),
MAKE_IT(ERASE_FAILURE , 0x5100),
MAKE_IT(ERASE_FAILURE__INCOMPLETE_ERASE_DETECTED , 0x5101),
MAKE_IT(CARTRIDGE_FAULT , 0x5200),
MAKE_IT(MEDIA_LOAD_OR_EJECT_FAILURE , 0x5300),
MAKE_IT(UNLOAD_TAPE_FAILURE , 0x5301),
MAKE_IT(MEDIUM_REMOVAL_PREVENTED , 0x5302),
MAKE_IT(SCSI_TO_HOST_SYSTEM_INTERFACE_FAILURE , 0x5400),
MAKE_IT(SYSTEM_RESOURCE_FAILURE , 0x5500),
MAKE_IT(SYSTEM_BUFFER_FULL , 0x5501),
MAKE_IT(UNABLE_TO_RECOVER_TABLE_OF_CONTENTS , 0x5700),
MAKE_IT(GENERATION_DOES_NOT_EXIST , 0x5800),
MAKE_IT(UPDATED_BLOCK_READ , 0x5900),
MAKE_IT(OPERATOR_REQUEST_OR_STATE_CHANGE_INPUT , 0x5A00),
MAKE_IT(OPERATOR_MEDIUM_REMOVAL_REQUEST , 0x5A01),
MAKE_IT(OPERATOR_SELECTED_WRITE_PROTECT , 0x5A02),
MAKE_IT(OPERATOR_SELECTED_WRITE_PERMIT , 0x5A03),
MAKE_IT(LOG_EXCEPTION , 0x5B00),
MAKE_IT(THRESHOLD_CONDITION_MET , 0x5B01),
MAKE_IT(LOG_COUNTER_AT_MAXIMUM , 0x5B02),
MAKE_IT(LOG_LIST_CODES_EXHAUSTED , 0x5B03),
MAKE_IT(RPL_STATUS_CHANGE , 0x5C00),
MAKE_IT(SPINDLES_SYNCHRONIZED , 0x5C01),
MAKE_IT(SPINDLES_NOT_SYNCHRONIZED , 0x5C02),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__LU_FAILURE , 0x5D00),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__MEDIA_FAILURE , 0x5D01),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__SPARE_AREA_EXHAUSTION , 0x5D03),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__TEST_VALUE , 0x5DFF),
MAKE_IT(LOW_POWER_CONDITION_ON , 0x5E00),
MAKE_IT(IDLE_CONDITION_ACTIVATED_BY_TIMER , 0x5E01),
MAKE_IT(STANDBY_CONDITION_ACTIVATED_BY_TIMER , 0x5E02),
MAKE_IT(IDLE_CONDITION_ACTIVATED_BY_COMMAND , 0x5E03),
MAKE_IT(STANDBY_CONDITION_ACTIVATED_BY_COMMAND , 0x5E04),
MAKE_IT(LAMP_FAILURE , 0x6000),
MAKE_IT(VIDEO_ACQUISITION_ERROR , 0x6100),
MAKE_IT(UNABLE_TO_ACQUIRE_VIDEO , 0x6101),
MAKE_IT(OUT_OF_FOCUS , 0x6102),
MAKE_IT(SCAN_HEAD_POSITIONING_ERROR , 0x6200),
MAKE_IT(END_OF_USER_AREA_ENCOUNTERED_ON_THIS_TRACK , 0x6300),
MAKE_IT(PACKET_DOES_NOT_FIT_IN_AVAILABLE_SPACE , 0x6301),
MAKE_IT(ILLEGAL_MODE_FOR_THIS_TRACK , 0x6400),
MAKE_IT(INVALID_PACKET_SIZE , 0x6401),
MAKE_IT(VOLTAGE_FAULT , 0x6500),
MAKE_IT(AUTOMATIC_DOCUMENT_FEEDER_COVER_UP , 0x6600),
MAKE_IT(AUTOMATIC_DOCUMENT_FEEDER_LIFT_UP , 0x6601),
MAKE_IT(DOCUMENT_JAM_IN_AUTOMATIC_DOCUMENT_FEEDER , 0x6602),
MAKE_IT(DOCUMENT_MISS_FEED_AUTOMATIC_IN_DOCUMENT_FEEDER , 0x6603),
MAKE_IT(CONFIGURATION_FAILURE , 0x6700),
MAKE_IT(CONFIGURATION_OF_INCAPABLE_LOGICAL_UNITS_FAILED , 0x6701),
MAKE_IT(ADD_LOGICAL_UNIT_FAILED , 0x6702),
MAKE_IT(MODIFICATION_OF_LOGICAL_UNIT_FAILED , 0x6703),
MAKE_IT(EXCHANGE_OF_LOGICAL_UNIT_FAILED , 0x6704),
MAKE_IT(REMOVE_OF_LOGICAL_UNIT_FAILED , 0x6705),
MAKE_IT(ATTACHMENT_OF_LOGICAL_UNIT_FAILED , 0x6706),
MAKE_IT(CREATION_OF_LOGICAL_UNIT_FAILED , 0x6707),
MAKE_IT(LOGICAL_UNIT_NOT_CONFIGURED , 0x6800),
MAKE_IT(DATA_LOSS_ON_LOGICAL_UNIT , 0x6900),
MAKE_IT(MULTIPLE_LOGICAL_UNIT_FAILURES , 0x6901),
MAKE_IT(A_PARITY__DATA_MISMATCH , 0x6902),
MAKE_IT(INFORMATIONAL__REFER_TO_LOG , 0x6A00),
MAKE_IT(STATE_CHANGE_HAS_OCCURRED , 0x6B00),
MAKE_IT(REDUNDANCY_LEVEL_GOT_BETTER , 0x6B01),
MAKE_IT(REDUNDANCY_LEVEL_GOT_WORSE , 0x6B02),
MAKE_IT(REBUILD_FAILURE_OCCURRED , 0x6C00),
MAKE_IT(RECALCULATE_FAILURE_OCCURRED , 0x6D00),
MAKE_IT(COMMAND_TO_LOGICAL_UNIT_FAILED , 0x6E00),
MAKE_IT(COPY_PROTECTION_KEY_EXCHANGE_FAILURE__AUTHENTICATION_FAILURE , 0x6F00),
MAKE_IT(COPY_PROTECTION_KEY_EXCHANGE_FAILURE__KEY_NOT_PRESENT , 0x6F01),
MAKE_IT(COPY_PROTECTION_KEY_EXCHANGE_FAILURE__KEY_NOT_ESTABLISHED , 0x6F02),
MAKE_IT(READ_OF_SCRAMBLED_SECTOR_WITHOUT_AUTHENTICATION , 0x6F03),
MAKE_IT(MEDIA_REGION_CODE_IS_MISMATCHED_TO_LOGICAL_UNIT_REGION , 0x6F04),
MAKE_IT(DRIVE_REGION_MUST_BE_PERMANENT_REGION_RESET_COUNT_ERROR , 0x6F05),
// DECOMPRESSION EXCEPTION SHORT ALGORITHM ID OF NN = 0x70NN,
MAKE_IT(DECOMPRESSION_EXCEPTION_LONG_ALGORITHM_ID , 0x7100),
MAKE_IT(SESSION_FIXATION_ERROR , 0x7200),
MAKE_IT(SESSION_FIXATION_ERROR_WRITING_LEAD_IN , 0x7201),
MAKE_IT(SESSION_FIXATION_ERROR_WRITING_LEAD_OUT , 0x7202),
MAKE_IT(SESSION_FIXATION_ERROR__INCOMPLETE_TRACK_IN_SESSION , 0x7203),
MAKE_IT(EMPTY_OR_PARTIALLY_WRITTEN_RESERVED_TRACK , 0x7204),
MAKE_IT(NO_MORE_RZONE_RESERVATIONS_ARE_ALLOWED , 0x7205),
MAKE_IT(CD_CONTROL_ERROR , 0x7300),
MAKE_IT(POWER_CALIBRATION_AREA_ALMOST_FULL , 0x7301),
MAKE_IT(POWER_CALIBRATION_AREA_IS_FULL , 0x7302),
MAKE_IT(POWER_CALIBRATION_AREA_ERROR , 0x7303),
MAKE_IT(PROGRAM_MEMORY_AREA_RMA_UPDATE_FAILURE , 0x7304),
MAKE_IT(PROGRAM_MEMORY_AREA_RMA_IS_FULL , 0x7305),
MAKE_IT(PROGRAM_MEMORY_AREA_RMA_IS_ALMOST_FULL , 0x7306),
};
#undef MAKE_IT
#define MAKE_IT(name, number) \
SPTLIB_##name = number
typedef enum _SCSI_ASC_ASCQ_RETURN_VALUES {
MAKE_IT(NO_ADDITIONAL_SENSE_INFORMATION , 0x0000),
MAKE_IT(FILEMARK_DETECTED , 0x0001),
MAKE_IT(END_OF_PARTITION_OR_MEDIUM_DETECTED , 0x0002),
MAKE_IT(SETMARK_DETECTED , 0x0003),
MAKE_IT(BEGINNING_OF_PARTITION_OR_MEDIUM_DETECTED , 0x0004),
MAKE_IT(END_OF_DATA_DETECTED , 0x0005),
MAKE_IT(PLAY_OPERATION_ABORTED , 0x0006),
MAKE_IT(AUDIO_PLAY_OPERATION_IN_PROGRESS , 0x0011),
MAKE_IT(AUDIO_PLAY_OPERATION_PAUSED , 0x0012),
MAKE_IT(AUDIO_PLAY_OPERATION_SUCCESSFULLY_COMPLETED , 0x0013),
MAKE_IT(AUDIO_PLAY_OPERATION_STOPPED_DUE_TO_ERROR , 0x0014),
MAKE_IT(NO_CURRENT_AUDIO_STATUS_TO_RETURN , 0x0015),
MAKE_IT(OPERATION_IN_PROGRESS , 0x0016),
MAKE_IT(CLEANING_REQUESTED , 0x0017),
MAKE_IT(NO_INDEX_OR_SECTOR_SIGNAL , 0x0100),
MAKE_IT(NO_SEEK_COMPLETE , 0x0200),
MAKE_IT(PERIPHERAL_DEVICE_WRITE_FAULT , 0x0300),
MAKE_IT(NO_WRITE_CURRENT , 0x0301),
MAKE_IT(EXCESSIVE_WRITE_ERRORS , 0x0302),
MAKE_IT(LU_NOT_READY_CAUSE_NOT_REPORTABLE , 0x0400),
MAKE_IT(LU_NOT_READY_BECOMING_READY , 0x0401),
MAKE_IT(LU_NOT_READY_INIT_COMMAND_REQUIRED , 0x0402),
MAKE_IT(LU_NOT_READY_MANUAL_INTERVENTION_REQUIRED , 0x0403),
MAKE_IT(LU_NOT_READY_FORMAT_IN_PROGRESS , 0x0404),
MAKE_IT(LU_NOT_READY_REBUILD_IN_PROGRESS , 0x0405),
MAKE_IT(LU_NOT_READY_RECALCULATION_IN_PROGRESS , 0x0406),
MAKE_IT(LU_NOT_READY_OPERATION_IN_PROGRESS , 0x0407),
MAKE_IT(LU_NOT_READY_LONG_WRITE_IN_PROGRESS , 0x0408),
MAKE_IT(LU_DOES_NOT_RESPOND_TO_SELECTION , 0x0500),
MAKE_IT(NO_REFERENCE_POSITION_FOUND__MEDIUM_MAY_BE_UPSIDE_DOWN , 0x0600),
MAKE_IT(MULTIPLE_PERIPHERAL_DEVICES_SELECTED , 0x0700),
MAKE_IT(LU_COMMUNICATION_FAILURE , 0x0800),
MAKE_IT(LU_COMMUNICATION_TIMEOUT , 0x0801),
MAKE_IT(LU_COMMUNICATION_PARITY_ERROR , 0x0802),
MAKE_IT(LU_COMMUNICATION_CRC_ERROR_UDMA32 , 0x0803),
MAKE_IT(TRACK_FOLLOWING_ERROR , 0x0900),
MAKE_IT(TRACKING_SERVO_FAILURE , 0x0901),
MAKE_IT(FOCUS_SERVO_FAILURE , 0x0902),
MAKE_IT(SPINDLE_SERVO_FAILURE , 0x0903),
MAKE_IT(HEAD_SELECT_FAULT , 0x0904),
MAKE_IT(ERROR_LOG_OVERFLOW , 0x0A00),
MAKE_IT(WARNING , 0x0B00),
MAKE_IT(WARNING_SPECIFIED_TEMPERATURE_EXCEEDED , 0x0B01),
MAKE_IT(WARNING_ENCLOSURE_DEGRADED , 0x0B02),
MAKE_IT(WRITE_ERROR , 0x0C00),
MAKE_IT(WRITE_ERROR__RECOVERED_WITH_AUTO_REALLOCATION , 0x0C01),
MAKE_IT(WRITE_ERROR__AUTO_REALLOCATION_FAILED , 0x0C02),
MAKE_IT(WRITE_ERROR__RECOMMEND_REASSIGNMENT , 0x0C03),
MAKE_IT(COMPRESSION_CHECK_MISCOMPARE_ERROR , 0x0C04),
MAKE_IT(DATA_EXPANSION_OCCURRED_DURING_COMPRESSION , 0x0C05),
MAKE_IT(BLOCK_NOT_COMPRESSABLE , 0x0C06),
MAKE_IT(WRITE_ERROR__RECOVERY_NEEDED , 0x0C07),
MAKE_IT(WRITE_ERROR__RECOVERY_FAILED , 0x0C08),
MAKE_IT(WRITE_ERROR__LOSS_OF_STREAMING , 0x0C09),
MAKE_IT(WRITE_ERROR__PADDING_BLOCKS_ADDED , 0x0C0A),
MAKE_IT(ID_CRC_OR_ECC_ERROR , 0x1000),
MAKE_IT(UNRECOVERED_READ_ERROR , 0x1100),
MAKE_IT(READ_RETRIES_EXHAUSTED , 0x1101),
MAKE_IT(ERROR_TOO_LONG_TO_CORRECT , 0x1102),
MAKE_IT(MULTIPLE_READ_ERRORS , 0x1103),
MAKE_IT(UNRECOVERED_READ_ERROR__AUTO_REALLOCATE_FAILED , 0x1104),
MAKE_IT(LEC_UNCORRECTABLE_ERROR , 0x1105),
MAKE_IT(CIRC_UNCORRECTABLE_ERROR , 0x1106),
MAKE_IT(RESYNCHRONIZATION_ERROR , 0x1107),
MAKE_IT(INCOMPLETE_BLOCK_READ , 0x1108),
MAKE_IT(NO_GAP_FOUND , 0x1109),
MAKE_IT(MISCORRECTED_ERROR , 0x110A),
MAKE_IT(UNRECOVERED_READ_ERROR__RECOMMEND_REASSIGNMENT , 0x110B),
MAKE_IT(UNRECOVERED_READ_ERROR__RECOMMEND_REWRITE_DATA , 0x110C),
MAKE_IT(DECOMPRESSION_CRC_ERROR , 0x110D),
MAKE_IT(CANNOT_DECOMPRESS_USING_DECLARED_ALGORITHM , 0x110E),
MAKE_IT(ERROR_READING_UPC_OR_EAN_NUMBER , 0x110F),
MAKE_IT(ERROR_READING_ISRC_NUMBER , 0x1110),
MAKE_IT(READ_ERROR__LOSS_OF_STREAMING , 0x1111),
MAKE_IT(ADDRESS_MARK_NOT_FOUND_FOR_ID_FIELD , 0x1200),
MAKE_IT(ADDRESS_MARK_NOT_FOUND_FOR_DATA_FIELD , 0x1300),
MAKE_IT(RECORDED_ENTITY_NOT_FOUND , 0x1400),
MAKE_IT(RECORD_NOT_FOUND , 0x1401),
MAKE_IT(FILEMARK_OR_SETMARK_NOT_FOUND , 0x1402),
MAKE_IT(END_OF_DATA_NOT_FOUND , 0x1403),
MAKE_IT(BLOCK_SEQUENCE_ERROR , 0x1404),
MAKE_IT(RECORD_NOT_FOUND__RECOMMEND_REASSIGNMENT , 0x1405),
MAKE_IT(RECORD_NOT_FOUND__DATA_AUTO_REALLOCATED , 0x1406),
MAKE_IT(RANDOM_POSITIONING_ERROR , 0x1500),
MAKE_IT(MECHANICAL_POSITIONING_ERROR , 0x1501),
MAKE_IT(POSITIONING_ERROR_DETECTED_BY_READ_OF_MEDIUM , 0x1502),
MAKE_IT(DATA_SYNCHRONIZATION_MARK_ERROR , 0x1600),
MAKE_IT(DATA_SYNC_ERROR__DATA_REWRITTEN , 0x1601),
MAKE_IT(DATA_SYNC_ERROR__RECOMMEND_REWRITE , 0x1602),
MAKE_IT(DATA_SYNC_ERROR__DATA_AUTO_REALLOCATED , 0x1603),
MAKE_IT(DATA_SYNC_ERROR__RECOMMEND_REASSIGNMENT , 0x1604),
MAKE_IT(RECOVERED_DATA_WITH_NO_ERROR_CORRECTION_APPLIED , 0x1700),
MAKE_IT(RECOVERED_DATA_WITH_RETRIES , 0x1701),
MAKE_IT(RECOVERED_DATA_WITH_POSITIVE_HEAD_OFFSET , 0x1702),
MAKE_IT(RECOVERED_DATA_WITH_NEGATIVE_HEAD_OFFSET , 0x1703),
MAKE_IT(RECOVERED_DATA_WITH_RETRIES_AND_OR_CIRC_APPLIED , 0x1704),
MAKE_IT(RECOVERED_DATA_USING_PREVIOUS_SECTOR_ID , 0x1705),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__DATA_AUTO_REALLOCATED , 0x1706),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__RECOMMEND_REASSIGNMENT , 0x1707),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__RECOMMEND_REWRITE , 0x1708),
MAKE_IT(RECOVERED_DATA_WITHOUT_ECC__DATA_REWRITTEN , 0x1709),
MAKE_IT(RECOVERED_DATA_WITH_ECC_APPLIED , 0x1800),
MAKE_IT(RECOVERED_DATA_WITH_ECC_AND_RETRIES_APPLIED , 0x1801),
MAKE_IT(RECOVERED_DATA__DATA_AUTO_REALLOCATED , 0x1802),
MAKE_IT(RECOVERED_DATA_WITH_CIRC , 0x1803),
MAKE_IT(RECOVERED_DATA_WITH_LEC , 0x1804),
MAKE_IT(RECOVERED_DATA__RECOMMEND_REASSIGNMENT , 0x1805),
MAKE_IT(RECOVERED_DATA__RECOMMEND_REWRITE , 0x1806),
MAKE_IT(RECOVERED_DATA_WITH_ECC__DATA_REWRITTEN , 0x1807),
MAKE_IT(RECOVERED_DATA_WITH_LINKING , 0x1808),
MAKE_IT(DEFECT_LIST_ERROR , 0x1900),
MAKE_IT(DEFECT_LIST_NOT_AVAILABLE , 0x1901),
MAKE_IT(DEFECT_LIST_ERROR_IN_PRIMARY_LIST , 0x1902),
MAKE_IT(DEFECT_LIST_ERROR_IN_GROWN_LIST , 0x1903),
MAKE_IT(PARAMETER_LIST_LENGTH_ERROR , 0x1A00),
MAKE_IT(SYNCHRONOUS_DATA_TRANSFER_ERROR , 0x1B00),
MAKE_IT(DEFECT_LIST_NOT_FOUND , 0x1C00),
MAKE_IT(PRIMARY_DEFECT_LIST_NOT_FOUND , 0x1C01),
MAKE_IT(GROWN_DEFECT_LIST_NOT_FOUND , 0x1C02),
MAKE_IT(MISCOMPARE_DURING_VERIFY_OPERATION , 0x1D00),
MAKE_IT(RECOVERED_ID_WITH_ECC_CORRECTION , 0x1E00),
MAKE_IT(PARTIAL_DEFECT_LIST_TRANSFER , 0x1F00),
MAKE_IT(INVALID_COMMAND_OPERATION_CODE , 0x2000),
MAKE_IT(LOGICAL_BLOCK_ADDRESS_OUT_OF_RANGE , 0x2100),
MAKE_IT(INVALID_ELEMENT_ADDRESS , 0x2101),
MAKE_IT(INVALID_ADDRESS_FOR_WRITE , 0x2102),
MAKE_IT(_OBSOLETE__ILLEGAL_FUNCTION , 0x2200),
MAKE_IT(INVALID_FIELD_IN_CDB , 0x2400),
MAKE_IT(LOGICAL_UNIT_NOT_SUPPORTED , 0x2500),
MAKE_IT(INVALID_FIELD_IN_PARAMETER_LIST , 0x2600),
MAKE_IT(PARAMETER_NOT_SUPPORTED , 0x2601),
MAKE_IT(PARAMETER_VALUE_NOT_SUPPORTED , 0x2602),
MAKE_IT(THRESHOLD_PARAMETERS_NOT_SUPPORTED , 0x2603),
MAKE_IT(INVALID_RELEASE_OF_ACTIVE_PERSISTENT_RESERVATION , 0x2604),
MAKE_IT(WRITE_PROTECTED , 0x2700),
MAKE_IT(HARDWARE_WRITE_PROTECTED , 0x2701),
MAKE_IT(LU_SOFTWARE_WRITE_PROTECTED , 0x2702),
MAKE_IT(ASSOCIATED_WRITE_PROTECT , 0x2703),
MAKE_IT(PERSISTENT_WRITE_PROTECT , 0x2704),
MAKE_IT(PERMANENT_WRITE_PROTECT , 0x2705),
MAKE_IT(CONDITIONAL_WRITE_PROTECT , 0x2706),
MAKE_IT(NOT_READY_TO_READY__MEDIUM_MAY_HAVE_CHANGED , 0x2800),
MAKE_IT(IMPORT_OR_EXPORT_ELEMENT_ACCESSED , 0x2801),
MAKE_IT(POWER_ON_RESET_OR_BUS_DEVICE_RESET_OCCURRED , 0x2900),
MAKE_IT(POWER_ON_OCCURRED , 0x2901),
MAKE_IT(SCSI_BUS_RESET_OCCURRED , 0x2902),
MAKE_IT(BUS_DEVICE_RESET_FUNCTION_OCCURRED , 0x2903),
MAKE_IT(DEVICE_INTERNAL_RESET , 0x2904),
MAKE_IT(PARAMETERS_CHANGED , 0x2A00),
MAKE_IT(MODE_PARAMETERS_CHANGED , 0x2A01),
MAKE_IT(LOG_PARAMETERS_CHANGED , 0x2A02),
MAKE_IT(RESERVATIONS_PREEMPTED , 0x2A03),
MAKE_IT(COPY_CANNOT_EXECUTE_SINCE_HOST_CANNOT_DISCONNECT , 0x2B00),
MAKE_IT(COMMAND_SEQUENCE_ERROR , 0x2C00),
MAKE_IT(TOO_MANY_WINDOWS_SPECIFIED , 0x2C01),
MAKE_IT(INVALID_COMBINATION_OF_WINDOWS_SPECIFIED , 0x2C02),
MAKE_IT(CURRENT_PROGRAM_AREA_IS_NOT_EMPTY , 0x2C03),
MAKE_IT(CURRENT_PROGRAM_AREA_IS_EMPTY , 0x2C04),
MAKE_IT(PERSISTENT_PREVENT_CONFLICT , 0x2C05),
MAKE_IT(OVERWRITE_ERROR_ON_UPDATE_IN_PLACE , 0x2D00),
MAKE_IT(INSUFFICIENT_TIME_FOR_OPERATION , 0x2E00),
MAKE_IT(COMMANDS_CLEARED_BY_ANOTHER_INITIATOR , 0x2F00),
MAKE_IT(INCOMPATIBLE_MEDIUM_INSTALLED , 0x3000),
MAKE_IT(CANNOT_READ_MEDIUM__UNKNOWN_FORMAT , 0x3001),
MAKE_IT(CANNOT_READ_MEDIUM__INCOMPATIBLE_FORMAT , 0x3002),
MAKE_IT(CANNOT_READ_MEDIUM__CLEANING_CARTRIDGE_INSTALLED , 0x3003),
MAKE_IT(CANNOT_WRITE_MEDIUM__UNKNOWN_FORMAT , 0x3004),
MAKE_IT(CANNOT_WRITE_MEDIUM__INCOMPATIBLE_FORMAT , 0x3005),
MAKE_IT(CANNOT_FORMAT_MEDIUM__INCOMPATIBLE_MEDIUM , 0x3006),
MAKE_IT(CLEANING_FAILURE , 0x3007),
MAKE_IT(CANNOT_WRITE__APPLICATION_CODE_MISMATCH , 0x3008),
MAKE_IT(CURRENT_SESSION_NOT_FIXATED_FOR_APPEND , 0x3009),
MAKE_IT(MEDIUM_FORMAT_CORRUPTED , 0x3100),
MAKE_IT(FORMAT_COMMAND_FAILED , 0x3101),
MAKE_IT(ZONED_FORMATTING_FAILED_DUE_TO_SPARE_LINKING , 0x3102),
MAKE_IT(NO_DEFECT_SPARE_LOCATION_AVAILABLE , 0x3200),
MAKE_IT(DEFECT_LIST_UPDATE_FAILURE , 0x3201),
MAKE_IT(TAPE_LENGTH_ERROR , 0x3300),
MAKE_IT(ENCLOSURE_FAILURE , 0x3400),
MAKE_IT(ENCLOSURE_SERVICES_FAILURE , 0x3500),
MAKE_IT(UNSUPPORTED_ENCLOSURE_FUNCTION , 0x3501),
MAKE_IT(ENCLOSURE_SERVICES_UNAVAILABLE , 0x3502),
MAKE_IT(ENCLOSURE_SERVICES_TRANSFER_FAILURE , 0x3503),
MAKE_IT(ENCLOSURE_SERVICES_TRANSFER_REFUSED , 0x3504),
MAKE_IT(RIBBON_INK_OR_TONER_FAILURE , 0x3600),
MAKE_IT(ROUNDED_PARAMETER , 0x3700),
MAKE_IT(SAVING_PARAMETERS_NOT_SUPPORTED , 0x3900),
MAKE_IT(MEDIUM_NOT_PRESENT , 0x3A00),
MAKE_IT(MEDIUM_NOT_PRESENT__TRAY_CLOSED , 0x3A01),
MAKE_IT(MEDIUM_NOT_PRESENT__TRAY_OPEN , 0x3A02),
MAKE_IT(SEQUENTIAL_POSITIONING_ERROR , 0x3B00),
MAKE_IT(TAPE_POSITION_ERROR_AT_BEGINNING_OF_MEDIUM , 0x3B01),
MAKE_IT(TAPE_POSITION_ERROR_AT_END_OF_MEDIUM , 0x3B02),
MAKE_IT(TAPE_OR_ELECTRONIC_VERTICAL_FORMS_UNIT_NOT_READY , 0x3B03),
MAKE_IT(SLEW_FAILURE , 0x3B04),
MAKE_IT(PAPER_JAM , 0x3B05),
MAKE_IT(FAILED_TO_SENSE_TOP_OF_FORM , 0x3B06),
MAKE_IT(FAILED_TO_SENSE_BOTTOM_OF_FORM , 0x3B07),
MAKE_IT(REPOSITION_ERROR , 0x3B08),
MAKE_IT(READ_PAST_END_OF_MEDIUM , 0x3B09),
MAKE_IT(READ_PAST_BEGINNING_OF_MEDIUM , 0x3B0A),
MAKE_IT(POSITION_PAST_END_OF_MEDIUM , 0x3B0B),
MAKE_IT(POSITION_PAST_BEGINNING_OF_MEDIUM , 0x3B0C),
MAKE_IT(MEDIUM_DESTINATION_ELEMENT_FULL , 0x3B0D),
MAKE_IT(MEDIUM_SOURCE_ELEMENT_FULL , 0x3B0E),
MAKE_IT(END_OF_MEDIUM_REACHED , 0x3B0F),
MAKE_IT(MEDIUM_MAGAZINE_NOT_ACCESSIBLE , 0x3B11),
MAKE_IT(MEDIUM_MAGAZINE_REMOVED , 0x3B12),
MAKE_IT(MEDIUM_MAGAZINE_INSERTED , 0x3B13),
MAKE_IT(MEDIUM_MAGAZINE_LOCKED , 0x3B14),
MAKE_IT(MEDIUM_MAGAZINE_UNLOCKED , 0x3B15),
MAKE_IT(MECHANICAL_POSITIONING_OR_CHANGER_ERROR , 0x3B16),
MAKE_IT(INVALID_BITS_IN_IDENTIFY_MESSAGE , 0x3D00),
MAKE_IT(LU_HAS_NOT_SELF_CONFIGURED_YET , 0x3E00),
MAKE_IT(LU_FAILURE , 0x3E01),
MAKE_IT(TIMEOUT_ON_LU , 0x3E02),
MAKE_IT(TARGET_OPERATING_CONDITIONS_HAVE_CHANGED , 0x3F00),
MAKE_IT(MICROCODE_HAS_BEEN_CHANGED , 0x3F01),
MAKE_IT(CHANGED_OPERATING_DEFINITION , 0x3F02),
MAKE_IT(INQUIRY_DATA_HAS_CHANGED , 0x3F03),
MAKE_IT(_OBSOLETE__RAM_FAILURE , 0x4000),
// ALL 40/nn ARE VENDOR-UNIQUE NOTIFICATIONS OF FAILURE ON COMPONENT nn
MAKE_IT(_OBSOLETE__DATA_PATH_FAILURE , 0x4100),
MAKE_IT(_OSBOLETE__POWER_ON_OR_SELF_TEST_FAILURE , 0x4200),
MAKE_IT(MESSAGE_ERROR , 0x4300),
MAKE_IT(INTERNAL_TARGET_FAILURE , 0x4400),
MAKE_IT(SELECT_OR_RESELECT_FAILURE , 0x4500),
MAKE_IT(UNSUCCESSFUL_SOFT_RESET , 0x4600),
MAKE_IT(SCSI_PARITY_ERROR , 0x4700),
MAKE_IT(INITIATOR_DETECTED_ERROR_MESSAGE_RECEIVED , 0x4800),
MAKE_IT(INVALID_MESSAGE_ERROR , 0x4900),
MAKE_IT(COMMAND_PHASE_ERROR , 0x4A00),
MAKE_IT(DATA_PHASE_ERROR , 0x4B00),
MAKE_IT(LOGICAL_UNIT_FAILED_SELF_CONFIGURATION , 0x4C00),
// TAGGED_OVERLAPPED_COMMANDS
MAKE_IT(OVERLAPPED_COMMANDS_ATTEMPTED , 0x4E00),
MAKE_IT(WRITE_APPEND_ERROR , 0x5000),
MAKE_IT(WRITE_APPEND_POSITION_ERROR , 0x5001),
MAKE_IT(POSITION_ERROR_RELATED_TO_TIMING , 0x5002),
MAKE_IT(ERASE_FAILURE , 0x5100),
MAKE_IT(ERASE_FAILURE__INCOMPLETE_ERASE_DETECTED , 0x5101),
MAKE_IT(CARTRIDGE_FAULT , 0x5200),
MAKE_IT(MEDIA_LOAD_OR_EJECT_FAILURE , 0x5300),
MAKE_IT(UNLOAD_TAPE_FAILURE , 0x5301),
MAKE_IT(MEDIUM_REMOVAL_PREVENTED , 0x5302),
MAKE_IT(SCSI_TO_HOST_SYSTEM_INTERFACE_FAILURE , 0x5400),
MAKE_IT(SYSTEM_RESOURCE_FAILURE , 0x5500),
MAKE_IT(SYSTEM_BUFFER_FULL , 0x5501),
MAKE_IT(UNABLE_TO_RECOVER_TABLE_OF_CONTENTS , 0x5700),
MAKE_IT(GENERATION_DOES_NOT_EXIST , 0x5800),
MAKE_IT(UPDATED_BLOCK_READ , 0x5900),
MAKE_IT(OPERATOR_REQUEST_OR_STATE_CHANGE_INPUT , 0x5A00),
MAKE_IT(OPERATOR_MEDIUM_REMOVAL_REQUEST , 0x5A01),
MAKE_IT(OPERATOR_SELECTED_WRITE_PROTECT , 0x5A02),
MAKE_IT(OPERATOR_SELECTED_WRITE_PERMIT , 0x5A03),
MAKE_IT(LOG_EXCEPTION , 0x5B00),
MAKE_IT(THRESHOLD_CONDITION_MET , 0x5B01),
MAKE_IT(LOG_COUNTER_AT_MAXIMUM , 0x5B02),
MAKE_IT(LOG_LIST_CODES_EXHAUSTED , 0x5B03),
MAKE_IT(RPL_STATUS_CHANGE , 0x5C00),
MAKE_IT(SPINDLES_SYNCHRONIZED , 0x5C01),
MAKE_IT(SPINDLES_NOT_SYNCHRONIZED , 0x5C02),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__LU_FAILURE , 0x5D00),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__MEDIA_FAILURE , 0x5D01),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__SPARE_AREA_EXHAUSTION , 0x5D03),
MAKE_IT(FAILURE_PREDICTION_THRESHOLD_EXCEEDED__TEST_VALUE , 0x5DFF),
MAKE_IT(LOW_POWER_CONDITION_ON , 0x5E00),
MAKE_IT(IDLE_CONDITION_ACTIVATED_BY_TIMER , 0x5E01),
MAKE_IT(STANDBY_CONDITION_ACTIVATED_BY_TIMER , 0x5E02),
MAKE_IT(IDLE_CONDITION_ACTIVATED_BY_COMMAND , 0x5E03),
MAKE_IT(STANDBY_CONDITION_ACTIVATED_BY_COMMAND , 0x5E04),
MAKE_IT(LAMP_FAILURE , 0x6000),
MAKE_IT(VIDEO_ACQUISITION_ERROR , 0x6100),
MAKE_IT(UNABLE_TO_ACQUIRE_VIDEO , 0x6101),
MAKE_IT(OUT_OF_FOCUS , 0x6102),
MAKE_IT(SCAN_HEAD_POSITIONING_ERROR , 0x6200),
MAKE_IT(END_OF_USER_AREA_ENCOUNTERED_ON_THIS_TRACK , 0x6300),
MAKE_IT(PACKET_DOES_NOT_FIT_IN_AVAILABLE_SPACE , 0x6301),
MAKE_IT(ILLEGAL_MODE_FOR_THIS_TRACK , 0x6400),
MAKE_IT(INVALID_PACKET_SIZE , 0x6401),
MAKE_IT(VOLTAGE_FAULT , 0x6500),
MAKE_IT(AUTOMATIC_DOCUMENT_FEEDER_COVER_UP , 0x6600),
MAKE_IT(AUTOMATIC_DOCUMENT_FEEDER_LIFT_UP , 0x6601),
MAKE_IT(DOCUMENT_JAM_IN_AUTOMATIC_DOCUMENT_FEEDER , 0x6602),
MAKE_IT(DOCUMENT_MISS_FEED_AUTOMATIC_IN_DOCUMENT_FEEDER , 0x6603),
MAKE_IT(CONFIGURATION_FAILURE , 0x6700),
MAKE_IT(CONFIGURATION_OF_INCAPABLE_LOGICAL_UNITS_FAILED , 0x6701),
MAKE_IT(ADD_LOGICAL_UNIT_FAILED , 0x6702),
MAKE_IT(MODIFICATION_OF_LOGICAL_UNIT_FAILED , 0x6703),
MAKE_IT(EXCHANGE_OF_LOGICAL_UNIT_FAILED , 0x6704),
MAKE_IT(REMOVE_OF_LOGICAL_UNIT_FAILED , 0x6705),
MAKE_IT(ATTACHMENT_OF_LOGICAL_UNIT_FAILED , 0x6706),
MAKE_IT(CREATION_OF_LOGICAL_UNIT_FAILED , 0x6707),
MAKE_IT(LOGICAL_UNIT_NOT_CONFIGURED , 0x6800),
MAKE_IT(DATA_LOSS_ON_LOGICAL_UNIT , 0x6900),
MAKE_IT(MULTIPLE_LOGICAL_UNIT_FAILURES , 0x6901),
MAKE_IT(A_PARITY__DATA_MISMATCH , 0x6902),
MAKE_IT(INFORMATIONAL__REFER_TO_LOG , 0x6A00),
MAKE_IT(STATE_CHANGE_HAS_OCCURRED , 0x6B00),
MAKE_IT(REDUNDANCY_LEVEL_GOT_BETTER , 0x6B01),
MAKE_IT(REDUNDANCY_LEVEL_GOT_WORSE , 0x6B02),
MAKE_IT(REBUILD_FAILURE_OCCURRED , 0x6C00),
MAKE_IT(RECALCULATE_FAILURE_OCCURRED , 0x6D00),
MAKE_IT(COMMAND_TO_LOGICAL_UNIT_FAILED , 0x6E00),
MAKE_IT(COPY_PROTECTION_KEY_EXCHANGE_FAILURE__AUTHENTICATION_FAILURE , 0x6F00),
MAKE_IT(COPY_PROTECTION_KEY_EXCHANGE_FAILURE__KEY_NOT_PRESENT , 0x6F01),
MAKE_IT(COPY_PROTECTION_KEY_EXCHANGE_FAILURE__KEY_NOT_ESTABLISHED , 0x6F02),
MAKE_IT(READ_OF_SCRAMBLED_SECTOR_WITHOUT_AUTHENTICATION , 0x6F03),
MAKE_IT(MEDIA_REGION_CODE_IS_MISMATCHED_TO_LOGICAL_UNIT_REGION , 0x6F04),
MAKE_IT(DRIVE_REGION_MUST_BE_PERMANENT_REGION_RESET_COUNT_ERROR , 0x6F05),
//SPTLIB_DECOMPRESSION EXCEPTION SHORT ALGORITHM ID OF NN = 0x70NN,
MAKE_IT(DECOMPRESSION_EXCEPTION_LONG_ALGORITHM_ID , 0x7100),
MAKE_IT(SESSION_FIXATION_ERROR , 0x7200),
MAKE_IT(SESSION_FIXATION_ERROR_WRITING_LEAD_IN , 0x7201),
MAKE_IT(SESSION_FIXATION_ERROR_WRITING_LEAD_OUT , 0x7202),
MAKE_IT(SESSION_FIXATION_ERROR__INCOMPLETE_TRACK_IN_SESSION , 0x7203),
MAKE_IT(EMPTY_OR_PARTIALLY_WRITTEN_RESERVED_TRACK , 0x7204),
MAKE_IT(NO_MORE_RZONE_RESERVATIONS_ARE_ALLOWED , 0x7205),
MAKE_IT(CD_CONTROL_ERROR , 0x7300),
MAKE_IT(POWER_CALIBRATION_AREA_ALMOST_FULL , 0x7301),
MAKE_IT(POWER_CALIBRATION_AREA_IS_FULL , 0x7302),
MAKE_IT(POWER_CALIBRATION_AREA_ERROR , 0x7303),
MAKE_IT(PROGRAM_MEMORY_AREA_RMA_UPDATE_FAILURE , 0x7304),
MAKE_IT(PROGRAM_MEMORY_AREA_RMA_IS_FULL , 0x7305),
MAKE_IT(PROGRAM_MEMORY_AREA_RMA_IS_ALMOST_FULL , 0x7306),
} SCSI_ASC_ASCQ_RETURN_VALUES, *PSCSI_ASC_ASCQ_RETURN_VALUES;
#endif // 0
#pragma warning(pop)
#ifdef __cplusplus
}
#endif
#endif // __SPTLIB_H__