/*
 * scsi.h
 *
 * SCSI port and class interface.
 *
 * This file is part of the w32api package.
 *
 * Contributors:
 *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef _NTSCSI_
#define _NTSCSI_

#ifdef __cplusplus
extern "C" {
#endif

#ifndef _NTSCSI_USER_MODE_
#include "srb.h"
#endif

#define NOTIFICATION_OPERATIONAL_CHANGE_CLASS_MASK    0x02
#define NOTIFICATION_POWER_MANAGEMENT_CLASS_MASK      0x04
#define NOTIFICATION_EXTERNAL_REQUEST_CLASS_MASK      0x08
#define NOTIFICATION_MEDIA_STATUS_CLASS_MASK          0x10
#define NOTIFICATION_MULTI_HOST_CLASS_MASK            0x20
#define NOTIFICATION_DEVICE_BUSY_CLASS_MASK           0x40


#define NOTIFICATION_NO_CLASS_EVENTS                  0x0
#define NOTIFICATION_OPERATIONAL_CHANGE_CLASS_EVENTS  0x1
#define NOTIFICATION_POWER_MANAGEMENT_CLASS_EVENTS    0x2
#define NOTIFICATION_EXTERNAL_REQUEST_CLASS_EVENTS    0x3
#define NOTIFICATION_MEDIA_STATUS_CLASS_EVENTS        0x4
#define NOTIFICATION_MULTI_HOST_CLASS_EVENTS          0x5
#define NOTIFICATION_DEVICE_BUSY_CLASS_EVENTS         0x6

#define NOTIFICATION_OPERATIONAL_EVENT_NO_CHANGE         0x0
#define NOTIFICATION_OPERATIONAL_EVENT_CHANGE_REQUESTED  0x1
#define NOTIFICATION_OPERATIONAL_EVENT_CHANGE_OCCURRED   0x2

#define NOTIFICATION_OPERATIONAL_STATUS_AVAILABLE        0x0
#define NOTIFICATION_OPERATIONAL_STATUS_TEMPORARY_BUSY   0x1
#define NOTIFICATION_OPERATIONAL_STATUS_EXTENDED_BUSY    0x2

#define NOTIFICATION_OPERATIONAL_OPCODE_NONE             0x0
#define NOTIFICATION_OPERATIONAL_OPCODE_FEATURE_CHANGE   0x1
#define NOTIFICATION_OPERATIONAL_OPCODE_FEATURE_ADDED    0x2
#define NOTIFICATION_OPERATIONAL_OPCODE_UNIT_RESET       0x3
#define NOTIFICATION_OPERATIONAL_OPCODE_FIRMWARE_CHANGED 0x4
#define NOTIFICATION_OPERATIONAL_OPCODE_INQUIRY_CHANGED  0x5

#define NOTIFICATION_POWER_EVENT_NO_CHANGE          0x0
#define NOTIFICATION_POWER_EVENT_CHANGE_SUCCEEDED   0x1
#define NOTIFICATION_POWER_EVENT_CHANGE_FAILED      0x2

#define NOTIFICATION_POWER_STATUS_ACTIVE            0x1
#define NOTIFICATION_POWER_STATUS_IDLE              0x2
#define NOTIFICATION_POWER_STATUS_STANDBY           0x3
#define NOTIFICATION_POWER_STATUS_SLEEP             0x4

#define NOTIFICATION_MEDIA_EVENT_NO_EVENT           0x0
#define NOTIFICATION_EXTERNAL_EVENT_NO_CHANGE       0x0
#define NOTIFICATION_EXTERNAL_EVENT_BUTTON_DOWN     0x1
#define NOTIFICATION_EXTERNAL_EVENT_BUTTON_UP       0x2
#define NOTIFICATION_EXTERNAL_EVENT_EXTERNAL        0x3

#define NOTIFICATION_EXTERNAL_STATUS_READY          0x0
#define NOTIFICATION_EXTERNAL_STATUS_PREVENT        0x1

#define NOTIFICATION_EXTERNAL_REQUEST_NONE          0x0000
#define NOTIFICATION_EXTERNAL_REQUEST_QUEUE_OVERRUN 0x0001
#define NOTIFICATION_EXTERNAL_REQUEST_PLAY          0x0101
#define NOTIFICATION_EXTERNAL_REQUEST_REWIND_BACK   0x0102
#define NOTIFICATION_EXTERNAL_REQUEST_FAST_FORWARD  0x0103
#define NOTIFICATION_EXTERNAL_REQUEST_PAUSE         0x0104
#define NOTIFICATION_EXTERNAL_REQUEST_STOP          0x0106
#define NOTIFICATION_EXTERNAL_REQUEST_ASCII_LOW     0x0200
#define NOTIFICATION_EXTERNAL_REQUEST_ASCII_HIGH    0x02ff

#define NOTIFICATION_MEDIA_EVENT_NO_CHANGE          0x0
#define NOTIFICATION_MEDIA_EVENT_EJECT_REQUEST      0x1
#define NOTIFICATION_MEDIA_EVENT_NEW_MEDIA          0x2
#define NOTIFICATION_MEDIA_EVENT_MEDIA_REMOVAL      0x3
#define NOTIFICATION_MEDIA_EVENT_MEDIA_CHANGE       0x4

#define NOTIFICATION_BUSY_EVENT_NO_EVENT               0x0
#define NOTIFICATION_MULTI_HOST_EVENT_NO_CHANGE        0x0
#define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_REQUEST  0x1
#define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_GRANT    0x2
#define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_RELEASE  0x3

#define NOTIFICATION_MULTI_HOST_STATUS_READY           0x0
#define NOTIFICATION_MULTI_HOST_STATUS_PREVENT         0x1

#define NOTIFICATION_MULTI_HOST_PRIORITY_NO_REQUESTS   0x0
#define NOTIFICATION_MULTI_HOST_PRIORITY_LOW           0x1
#define NOTIFICATION_MULTI_HOST_PRIORITY_MEDIUM        0x2
#define NOTIFICATION_MULTI_HOST_PRIORITY_HIGH          0x3

#define NOTIFICATION_BUSY_EVENT_NO_EVENT            0x0
#define NOTIFICATION_BUSY_EVENT_NO_CHANGE           0x0
#define NOTIFICATION_BUSY_EVENT_BUSY                0x1

#define NOTIFICATION_BUSY_STATUS_NO_EVENT           0x0
#define NOTIFICATION_BUSY_STATUS_POWER              0x1
#define NOTIFICATION_BUSY_STATUS_IMMEDIATE          0x2
#define NOTIFICATION_BUSY_STATUS_DEFERRED           0x3

#define DVD_FORMAT_LEAD_IN          0x00
#define DVD_FORMAT_COPYRIGHT        0x01
#define DVD_FORMAT_DISK_KEY         0x02
#define DVD_FORMAT_BCA              0x03
#define DVD_FORMAT_MANUFACTURING    0x04

#define DVD_REPORT_AGID            0x00
#define DVD_CHALLENGE_KEY          0x01
#define DVD_KEY_1                  0x02
#define DVD_KEY_2                  0x03
#define DVD_TITLE_KEY              0x04
#define DVD_REPORT_ASF             0x05
#define DVD_INVALIDATE_AGID        0x3F

#define BLANK_FULL              0x0
#define BLANK_MINIMAL           0x1
#define BLANK_TRACK             0x2
#define BLANK_UNRESERVE_TRACK   0x3
#define BLANK_TAIL              0x4
#define BLANK_UNCLOSE_SESSION   0x5
#define BLANK_SESSION           0x6

#define CD_EXPECTED_SECTOR_ANY          0x0
#define CD_EXPECTED_SECTOR_CDDA         0x1
#define CD_EXPECTED_SECTOR_MODE1        0x2
#define CD_EXPECTED_SECTOR_MODE2        0x3
#define CD_EXPECTED_SECTOR_MODE2_FORM1  0x4
#define CD_EXPECTED_SECTOR_MODE2_FORM2  0x5

#define DISK_STATUS_EMPTY       0x00
#define DISK_STATUS_INCOMPLETE  0x01
#define DISK_STATUS_COMPLETE    0x02
#define DISK_STATUS_OTHERS      0x03

#define LAST_SESSION_EMPTY              0x00
#define LAST_SESSION_INCOMPLETE         0x01
#define LAST_SESSION_RESERVED_DAMAGED   0x02
#define LAST_SESSION_COMPLETE           0x03

#define DISK_TYPE_CDDA          0x00
#define DISK_TYPE_CDI           0x10
#define DISK_TYPE_XA            0x20
#define DISK_TYPE_UNDEFINED     0xFF

#define DISC_BGFORMAT_STATE_NONE        0x0
#define DISC_BGFORMAT_STATE_INCOMPLETE  0x1
#define DISC_BGFORMAT_STATE_RUNNING     0x2
#define DISC_BGFORMAT_STATE_COMPLETE    0x3

#define DATA_BLOCK_MODE0    0x0
#define DATA_BLOCK_MODE1    0x1
#define DATA_BLOCK_MODE2    0x2

/* READ_TOC formats */
#define READ_TOC_FORMAT_TOC         0x00
#define READ_TOC_FORMAT_SESSION     0x01
#define READ_TOC_FORMAT_FULL_TOC    0x02
#define READ_TOC_FORMAT_PMA         0x03
#define READ_TOC_FORMAT_ATIP        0x04

#define CDB6GENERIC_LENGTH                   6
#define CDB10GENERIC_LENGTH                  10
#define CDB12GENERIC_LENGTH                  12

#define SETBITON                             1
#define SETBITOFF                            0

/* Mode Sense/Select page constants */
#define MODE_PAGE_VENDOR_SPECIFIC       0x00
#define MODE_PAGE_ERROR_RECOVERY        0x01
#define MODE_PAGE_DISCONNECT            0x02
#define MODE_PAGE_FORMAT_DEVICE         0x03
#define MODE_PAGE_MRW                   0x03
#define MODE_PAGE_RIGID_GEOMETRY        0x04
#define MODE_PAGE_FLEXIBILE             0x05
#define MODE_PAGE_WRITE_PARAMETERS      0x05
#define MODE_PAGE_VERIFY_ERROR          0x07
#define MODE_PAGE_CACHING               0x08
#define MODE_PAGE_PERIPHERAL            0x09
#define MODE_PAGE_CONTROL               0x0A
#define MODE_PAGE_MEDIUM_TYPES          0x0B
#define MODE_PAGE_NOTCH_PARTITION       0x0C
#define MODE_PAGE_CD_AUDIO_CONTROL      0x0E
#define MODE_PAGE_DATA_COMPRESS         0x0F
#define MODE_PAGE_DEVICE_CONFIG         0x10
#define MODE_PAGE_XOR_CONTROL           0x10
#define MODE_PAGE_MEDIUM_PARTITION      0x11
#define MODE_PAGE_ENCLOSURE_SERVICES_MANAGEMENT 0x14
#define MODE_PAGE_EXTENDED              0x15
#define MODE_PAGE_EXTENDED_DEVICE_SPECIFIC 0x16
#define MODE_PAGE_CDVD_FEATURE_SET      0x18
#define MODE_PAGE_PROTOCOL_SPECIFIC_LUN 0x18
#define MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19
#define MODE_PAGE_POWER_CONDITION       0x1A
#define MODE_PAGE_LUN_MAPPING           0x1B
#define MODE_PAGE_FAULT_REPORTING       0x1C
#define MODE_PAGE_CDVD_INACTIVITY       0x1D
#define MODE_PAGE_ELEMENT_ADDRESS       0x1D
#define MODE_PAGE_TRANSPORT_GEOMETRY    0x1E
#define MODE_PAGE_DEVICE_CAPABILITIES   0x1F
#define MODE_PAGE_CAPABILITIES          0x2A

#define MODE_SENSE_RETURN_ALL           0x3f

#define MODE_SENSE_CURRENT_VALUES       0x00
#define MODE_SENSE_CHANGEABLE_VALUES    0x40
#define MODE_SENSE_DEFAULT_VAULES       0x80
#define MODE_SENSE_SAVED_VALUES         0xc0

/* SCSI CDB operation codes */
#define SCSIOP_TEST_UNIT_READY          0x00
#define SCSIOP_REZERO_UNIT              0x01
#define SCSIOP_REWIND                   0x01
#define SCSIOP_REQUEST_BLOCK_ADDR       0x02
#define SCSIOP_REQUEST_SENSE            0x03
#define SCSIOP_FORMAT_UNIT              0x04
#define SCSIOP_READ_BLOCK_LIMITS        0x05
#define SCSIOP_REASSIGN_BLOCKS          0x07
#define SCSIOP_INIT_ELEMENT_STATUS      0x07
#define SCSIOP_READ6                    0x08
#define SCSIOP_RECEIVE                  0x08
#define SCSIOP_WRITE6                   0x0A
#define SCSIOP_PRINT                    0x0A
#define SCSIOP_SEND                     0x0A
#define SCSIOP_SEEK6                    0x0B
#define SCSIOP_TRACK_SELECT             0x0B
#define SCSIOP_SLEW_PRINT               0x0B
#define SCSIOP_SET_CAPACITY             0x0B
#define SCSIOP_SEEK_BLOCK               0x0C
#define SCSIOP_PARTITION                0x0D
#define SCSIOP_READ_REVERSE             0x0F
#define SCSIOP_WRITE_FILEMARKS          0x10
#define SCSIOP_FLUSH_BUFFER             0x10
#define SCSIOP_SPACE                    0x11
#define SCSIOP_INQUIRY                  0x12
#define SCSIOP_VERIFY6                  0x13
#define SCSIOP_RECOVER_BUF_DATA         0x14
#define SCSIOP_MODE_SELECT              0x15
#define SCSIOP_RESERVE_UNIT             0x16
#define SCSIOP_RELEASE_UNIT             0x17
#define SCSIOP_COPY                     0x18
#define SCSIOP_ERASE                    0x19
#define SCSIOP_MODE_SENSE               0x1A
#define SCSIOP_START_STOP_UNIT          0x1B
#define SCSIOP_STOP_PRINT               0x1B
#define SCSIOP_LOAD_UNLOAD              0x1B
#define SCSIOP_RECEIVE_DIAGNOSTIC       0x1C
#define SCSIOP_SEND_DIAGNOSTIC          0x1D
#define SCSIOP_MEDIUM_REMOVAL           0x1E

#define SCSIOP_READ_FORMATTED_CAPACITY  0x23
#define SCSIOP_READ_CAPACITY            0x25
#define SCSIOP_READ                     0x28
#define SCSIOP_WRITE                    0x2A
#define SCSIOP_SEEK                     0x2B
#define SCSIOP_LOCATE                   0x2B
#define SCSIOP_POSITION_TO_ELEMENT      0x2B
#define SCSIOP_WRITE_VERIFY             0x2E
#define SCSIOP_VERIFY                   0x2F
#define SCSIOP_SEARCH_DATA_HIGH         0x30
#define SCSIOP_SEARCH_DATA_EQUAL        0x31
#define SCSIOP_SEARCH_DATA_LOW          0x32
#define SCSIOP_SET_LIMITS               0x33
#define SCSIOP_READ_POSITION            0x34
#define SCSIOP_SYNCHRONIZE_CACHE        0x35
#define SCSIOP_COMPARE                  0x39
#define SCSIOP_COPY_COMPARE             0x3A
#define SCSIOP_WRITE_DATA_BUFF          0x3B
#define SCSIOP_READ_DATA_BUFF           0x3C
#define SCSIOP_WRITE_LONG               0x3F
#define SCSIOP_CHANGE_DEFINITION        0x40
#define SCSIOP_WRITE_SAME               0x41
#define SCSIOP_READ_SUB_CHANNEL         0x42
#define SCSIOP_READ_TOC                 0x43
#define SCSIOP_READ_HEADER              0x44
#define SCSIOP_REPORT_DENSITY_SUPPORT   0x44
#define SCSIOP_PLAY_AUDIO               0x45
#define SCSIOP_GET_CONFIGURATION        0x46
#define SCSIOP_PLAY_AUDIO_MSF           0x47
#define SCSIOP_PLAY_TRACK_INDEX         0x48
#define SCSIOP_PLAY_TRACK_RELATIVE      0x49
#define SCSIOP_GET_EVENT_STATUS         0x4A
#define SCSIOP_PAUSE_RESUME             0x4B
#define SCSIOP_LOG_SELECT               0x4C
#define SCSIOP_LOG_SENSE                0x4D
#define SCSIOP_STOP_PLAY_SCAN           0x4E
#define SCSIOP_XDWRITE                  0x50
#define SCSIOP_XPWRITE                  0x51
#define SCSIOP_READ_DISK_INFORMATION    0x51
#define SCSIOP_READ_DISC_INFORMATION    0x51
#define SCSIOP_READ_TRACK_INFORMATION   0x52
#define SCSIOP_XDWRITE_READ             0x53
#define SCSIOP_RESERVE_TRACK_RZONE      0x53
#define SCSIOP_SEND_OPC_INFORMATION     0x54
#define SCSIOP_MODE_SELECT10            0x55
#define SCSIOP_RESERVE_UNIT10           0x56
#define SCSIOP_RESERVE_ELEMENT          0x56
#define SCSIOP_RELEASE_UNIT10           0x57
#define SCSIOP_RELEASE_ELEMENT          0x57
#define SCSIOP_REPAIR_TRACK             0x58
#define SCSIOP_MODE_SENSE10             0x5A
#define SCSIOP_CLOSE_TRACK_SESSION      0x5B
#define SCSIOP_READ_BUFFER_CAPACITY     0x5C
#define SCSIOP_SEND_CUE_SHEET           0x5D
#define SCSIOP_PERSISTENT_RESERVE_IN    0x5E
#define SCSIOP_PERSISTENT_RESERVE_OUT   0x5F

#define SCSIOP_REPORT_LUNS              0xA0
#define SCSIOP_BLANK                    0xA1
#define SCSIOP_ATA_PASSTHROUGH12        0xA1
#define SCSIOP_SEND_EVENT               0xA2
#define SCSIOP_SEND_KEY                 0xA3
#define SCSIOP_MAINTENANCE_IN           0xA3
#define SCSIOP_REPORT_KEY               0xA4
#define SCSIOP_MAINTENANCE_OUT          0xA4
#define SCSIOP_MOVE_MEDIUM              0xA5
#define SCSIOP_LOAD_UNLOAD_SLOT         0xA6
#define SCSIOP_EXCHANGE_MEDIUM          0xA6
#define SCSIOP_SET_READ_AHEAD           0xA7
#define SCSIOP_MOVE_MEDIUM_ATTACHED     0xA7
#define SCSIOP_READ12                   0xA8
#define SCSIOP_GET_MESSAGE              0xA8
#define SCSIOP_SERVICE_ACTION_OUT12     0xA9
#define SCSIOP_WRITE12                  0xAA
#define SCSIOP_SEND_MESSAGE             0xAB
#define SCSIOP_SERVICE_ACTION_IN12      0xAB
#define SCSIOP_GET_PERFORMANCE          0xAC
#define SCSIOP_READ_DVD_STRUCTURE       0xAD
#define SCSIOP_WRITE_VERIFY12           0xAE
#define SCSIOP_VERIFY12                 0xAF
#define SCSIOP_SEARCH_DATA_HIGH12       0xB0
#define SCSIOP_SEARCH_DATA_EQUAL12      0xB1
#define SCSIOP_SEARCH_DATA_LOW12        0xB2
#define SCSIOP_SET_LIMITS12             0xB3
#define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4
#define SCSIOP_REQUEST_VOL_ELEMENT      0xB5
#define SCSIOP_SEND_VOLUME_TAG          0xB6
#define SCSIOP_SET_STREAMING            0xB6
#define SCSIOP_READ_DEFECT_DATA         0xB7
#define SCSIOP_READ_ELEMENT_STATUS      0xB8
#define SCSIOP_READ_CD_MSF              0xB9
#define SCSIOP_SCAN_CD                  0xBA
#define SCSIOP_REDUNDANCY_GROUP_IN      0xBA
#define SCSIOP_SET_CD_SPEED             0xBB
#define SCSIOP_REDUNDANCY_GROUP_OUT     0xBB
#define SCSIOP_PLAY_CD                  0xBC
#define SCSIOP_SPARE_IN                 0xBC
#define SCSIOP_MECHANISM_STATUS         0xBD
#define SCSIOP_SPARE_OUT                0xBD
#define SCSIOP_READ_CD                  0xBE
#define SCSIOP_VOLUME_SET_IN            0xBE
#define SCSIOP_SEND_DVD_STRUCTURE       0xBF
#define SCSIOP_VOLUME_SET_OUT           0xBF
#define SCSIOP_INIT_ELEMENT_RANGE       0xE7

#define SCSIOP_XDWRITE_EXTENDED16       0x80
#define SCSIOP_WRITE_FILEMARKS16        0x80
#define SCSIOP_REBUILD16                0x81
#define SCSIOP_READ_REVERSE16           0x81
#define SCSIOP_REGENERATE16             0x82
#define SCSIOP_EXTENDED_COPY            0x83
#define SCSIOP_RECEIVE_COPY_RESULTS     0x84
#define SCSIOP_ATA_PASSTHROUGH16        0x85
#define SCSIOP_ACCESS_CONTROL_IN        0x86
#define SCSIOP_ACCESS_CONTROL_OUT       0x87
#define SCSIOP_READ16                   0x88
#define SCSIOP_WRITE16                  0x8A
#define SCSIOP_READ_ATTRIBUTES          0x8C
#define SCSIOP_WRITE_ATTRIBUTES         0x8D
#define SCSIOP_WRITE_VERIFY16           0x8E
#define SCSIOP_VERIFY16                 0x8F
#define SCSIOP_PREFETCH16               0x90
#define SCSIOP_SYNCHRONIZE_CACHE16      0x91
#define SCSIOP_SPACE16                  0x91
#define SCSIOP_LOCK_UNLOCK_CACHE16      0x92
#define SCSIOP_LOCATE16                 0x92
#define SCSIOP_WRITE_SAME16             0x93
#define SCSIOP_ERASE16                  0x93
#define SCSIOP_READ_CAPACITY16          0x9E
#define SCSIOP_SERVICE_ACTION_IN16      0x9E
#define SCSIOP_SERVICE_ACTION_OUT16     0x9F

#define CDB_RETURN_ON_COMPLETION   0
#define CDB_RETURN_IMMEDIATE       1

#define CDB_FORCE_MEDIA_ACCESS 0x08

#define SCSIOP_DENON_EJECT_DISC    0xE6
#define SCSIOP_DENON_STOP_AUDIO    0xE7
#define SCSIOP_DENON_PLAY_AUDIO    0xE8
#define SCSIOP_DENON_READ_TOC      0xE9
#define SCSIOP_DENON_READ_SUBCODE  0xEB

#define SCSIMESS_ABORT                0x06
#define SCSIMESS_ABORT_WITH_TAG       0x0D
#define SCSIMESS_BUS_DEVICE_RESET     0X0C
#define SCSIMESS_CLEAR_QUEUE          0X0E
#define SCSIMESS_COMMAND_COMPLETE     0X00
#define SCSIMESS_DISCONNECT           0X04
#define SCSIMESS_EXTENDED_MESSAGE     0X01
#define SCSIMESS_IDENTIFY             0X80
#define SCSIMESS_IDENTIFY_WITH_DISCON 0XC0
#define SCSIMESS_IGNORE_WIDE_RESIDUE  0X23
#define SCSIMESS_INITIATE_RECOVERY    0X0F
#define SCSIMESS_INIT_DETECTED_ERROR  0X05
#define SCSIMESS_LINK_CMD_COMP        0X0A
#define SCSIMESS_LINK_CMD_COMP_W_FLAG 0X0B
#define SCSIMESS_MESS_PARITY_ERROR    0X09
#define SCSIMESS_MESSAGE_REJECT       0X07
#define SCSIMESS_NO_OPERATION         0X08
#define SCSIMESS_HEAD_OF_QUEUE_TAG    0X21
#define SCSIMESS_ORDERED_QUEUE_TAG    0X22
#define SCSIMESS_SIMPLE_QUEUE_TAG     0X20
#define SCSIMESS_RELEASE_RECOVERY     0X10
#define SCSIMESS_RESTORE_POINTERS     0X03
#define SCSIMESS_SAVE_DATA_POINTER    0X02
#define SCSIMESS_TERMINATE_IO_PROCESS 0X11

#define SCSIMESS_MODIFY_DATA_POINTER  0X00
#define SCSIMESS_SYNCHRONOUS_DATA_REQ 0X01
#define SCSIMESS_WIDE_DATA_REQUEST    0X03

#define SCSIMESS_MODIFY_DATA_LENGTH   5
#define SCSIMESS_SYNCH_DATA_LENGTH    3
#define SCSIMESS_WIDE_DATA_LENGTH     2

#define CDB_INQUIRY_EVPD           0x01

#define LUN0_FORMAT_SAVING_DEFECT_LIST 0
#define USE_DEFAULTMSB 0
#define USE_DEFAULTLSB 0

#define START_UNIT_CODE 0x01
#define STOP_UNIT_CODE 0x00

/* INQUIRYDATA.DeviceType constants */
#define DIRECT_ACCESS_DEVICE              0x00
#define SEQUENTIAL_ACCESS_DEVICE          0x01
#define PRINTER_DEVICE                    0x02
#define PROCESSOR_DEVICE                  0x03
#define WRITE_ONCE_READ_MULTIPLE_DEVICE   0x04
#define READ_ONLY_DIRECT_ACCESS_DEVICE    0x05
#define SCANNER_DEVICE                    0x06
#define OPTICAL_DEVICE                    0x07
#define MEDIUM_CHANGER                    0x08
#define COMMUNICATION_DEVICE              0x09
#define ARRAY_CONTROLLER_DEVICE           0x0C
#define SCSI_ENCLOSURE_DEVICE             0x0D
#define REDUCED_BLOCK_DEVICE              0x0E
#define OPTICAL_CARD_READER_WRITER_DEVICE 0x0F
#define BRIDGE_CONTROLLER_DEVICE          0x10
#define OBJECT_BASED_STORAGE_DEVICE       0x11
#define LOGICAL_UNIT_NOT_PRESENT_DEVICE   0x7F

#define DEVICE_QUALIFIER_ACTIVE           0x00
#define DEVICE_QUALIFIER_NOT_ACTIVE       0x01
#define DEVICE_QUALIFIER_NOT_SUPPORTED    0x03

/* INQUIRYDATA.DeviceTypeQualifier constants */
#define DEVICE_CONNECTED 0x00

#define SCSISTAT_GOOD                     0x00
#define SCSISTAT_CHECK_CONDITION          0x02
#define SCSISTAT_CONDITION_MET            0x04
#define SCSISTAT_BUSY                     0x08
#define SCSISTAT_INTERMEDIATE             0x10
#define SCSISTAT_INTERMEDIATE_COND_MET    0x14
#define SCSISTAT_RESERVATION_CONFLICT     0x18
#define SCSISTAT_COMMAND_TERMINATED       0x22
#define SCSISTAT_QUEUE_FULL               0x28

#define VPD_MAX_BUFFER_SIZE                 0xff

#define VPD_SUPPORTED_PAGES                 0x00
#define VPD_SERIAL_NUMBER                   0x80
#define VPD_DEVICE_IDENTIFIERS              0x83
#define VPD_MEDIA_SERIAL_NUMBER             0x84
#define VPD_SOFTWARE_INTERFACE_IDENTIFIERS  0x84
#define VPD_NETWORK_MANAGEMENT_ADDRESSES    0x85
#define VPD_EXTENDED_INQUIRY_DATA           0x86
#define VPD_MODE_PAGE_POLICY                0x87
#define VPD_SCSI_PORTS                      0x88

#define RESERVATION_ACTION_READ_KEYS                    0x00
#define RESERVATION_ACTION_READ_RESERVATIONS            0x01

#define RESERVATION_ACTION_REGISTER                     0x00
#define RESERVATION_ACTION_RESERVE                      0x01
#define RESERVATION_ACTION_RELEASE                      0x02
#define RESERVATION_ACTION_CLEAR                        0x03
#define RESERVATION_ACTION_PREEMPT                      0x04
#define RESERVATION_ACTION_PREEMPT_ABORT                0x05
#define RESERVATION_ACTION_REGISTER_IGNORE_EXISTING     0x06

#define RESERVATION_SCOPE_LU                            0x00
#define RESERVATION_SCOPE_ELEMENT                       0x02

#define RESERVATION_TYPE_WRITE_EXCLUSIVE                0x01
#define RESERVATION_TYPE_EXCLUSIVE                      0x03
#define RESERVATION_TYPE_WRITE_EXCLUSIVE_REGISTRANTS    0x05
#define RESERVATION_TYPE_EXCLUSIVE_REGISTRANTS          0x06

#define SENSE_BUFFER_SIZE              18

#define MAX_SENSE_BUFFER_SIZE          255

#define MAX_ADDITIONAL_SENSE_BYTES (MAX_SENSE_BUFFER_SIZE - SENSE_BUFFER_SIZE)

/* Sense codes */
#define SCSI_SENSE_NO_SENSE               0x00
#define SCSI_SENSE_RECOVERED_ERROR        0x01
#define SCSI_SENSE_NOT_READY              0x02
#define SCSI_SENSE_MEDIUM_ERROR           0x03
#define SCSI_SENSE_HARDWARE_ERROR         0x04
#define SCSI_SENSE_ILLEGAL_REQUEST        0x05
#define SCSI_SENSE_UNIT_ATTENTION         0x06
#define SCSI_SENSE_DATA_PROTECT           0x07
#define SCSI_SENSE_BLANK_CHECK            0x08
#define SCSI_SENSE_UNIQUE                 0x09
#define SCSI_SENSE_COPY_ABORTED           0x0A
#define SCSI_SENSE_ABORTED_COMMAND        0x0B
#define SCSI_SENSE_EQUAL                  0x0C
#define SCSI_SENSE_VOL_OVERFLOW           0x0D
#define SCSI_SENSE_MISCOMPARE             0x0E
#define SCSI_SENSE_RESERVED               0x0F

/* Additional tape bit */
#define SCSI_ILLEGAL_LENGTH               0x20
#define SCSI_EOM                          0x40
#define SCSI_FILE_MARK                    0x80

/* Additional Sense codes */
#define SCSI_ADSENSE_NO_SENSE                              0x00
#define SCSI_ADSENSE_NO_SEEK_COMPLETE                      0x02
#define SCSI_ADSENSE_LUN_NOT_READY                         0x04
#define SCSI_ADSENSE_LUN_COMMUNICATION                     0x08
#define SCSI_ADSENSE_WRITE_ERROR                           0x0C
#define SCSI_ADSENSE_TRACK_ERROR                           0x14
#define SCSI_ADSENSE_SEEK_ERROR                            0x15
#define SCSI_ADSENSE_REC_DATA_NOECC                        0x17
#define SCSI_ADSENSE_REC_DATA_ECC                          0x18
#define SCSI_ADSENSE_PARAMETER_LIST_LENGTH                 0x1A
#define SCSI_ADSENSE_ILLEGAL_COMMAND                       0x20
#define SCSI_ADSENSE_ILLEGAL_BLOCK                         0x21
#define SCSI_ADSENSE_INVALID_CDB                           0x24
#define SCSI_ADSENSE_INVALID_LUN                           0x25
#define SCSI_ADSENSE_INVALID_FIELD_PARAMETER_LIST          0x26
#define SCSI_ADSENSE_WRITE_PROTECT                         0x27
#define SCSI_ADSENSE_MEDIUM_CHANGED                        0x28
#define SCSI_ADSENSE_BUS_RESET                             0x29
#define SCSI_ADSENSE_PARAMETERS_CHANGED                    0x2A
#define SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION       0x2E
#define SCSI_ADSENSE_INVALID_MEDIA                         0x30
#define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE                    0x3a
#define SCSI_ADSENSE_POSITION_ERROR                        0x3b
#define SCSI_ADSENSE_OPERATING_CONDITIONS_CHANGED          0x3f
#define SCSI_ADSENSE_OPERATOR_REQUEST                      0x5a
#define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x5d
#define SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK           0x64
#define SCSI_ADSENSE_COPY_PROTECTION_FAILURE               0x6f
#define SCSI_ADSENSE_POWER_CALIBRATION_ERROR               0x73
#define SCSI_ADSENSE_VENDOR_UNIQUE                         0x80
#define SCSI_ADSENSE_MUSIC_AREA                            0xA0
#define SCSI_ADSENSE_DATA_AREA                             0xA1
#define SCSI_ADSENSE_VOLUME_OVERFLOW                       0xA7

#define SCSI_ADWRITE_PROTECT                        SCSI_ADSENSE_WRITE_PROTECT
#define SCSI_FAILURE_PREDICTION_THRESHOLD_EXCEEDED  SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED

#define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE                   0x00
#define SCSI_SENSEQ_BECOMING_READY                         0x01
#define SCSI_SENSEQ_INIT_COMMAND_REQUIRED                  0x02
#define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED           0x03
#define SCSI_SENSEQ_FORMAT_IN_PROGRESS                     0x04
#define SCSI_SENSEQ_REBUILD_IN_PROGRESS                    0x05
#define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS              0x06
#define SCSI_SENSEQ_OPERATION_IN_PROGRESS                  0x07
#define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS                 0x08
#define SCSI_SENSEQ_LOSS_OF_STREAMING                      0x09
#define SCSI_SENSEQ_PADDING_BLOCKS_ADDED                   0x0A

#define SCSI_SENSEQ_COMM_FAILURE                 0x00
#define SCSI_SENSEQ_COMM_TIMEOUT                 0x01
#define SCSI_SENSEQ_COMM_PARITY_ERROR            0x02
#define SCSI_SESNEQ_COMM_CRC_ERROR               0x03
#define SCSI_SENSEQ_UNREACHABLE_TARGET           0x04

#define SCSI_SENSEQ_FILEMARK_DETECTED 0x01
#define SCSI_SENSEQ_END_OF_MEDIA_DETECTED 0x02
#define SCSI_SENSEQ_SETMARK_DETECTED 0x03
#define SCSI_SENSEQ_BEGINNING_OF_MEDIA_DETECTED 0x04

#define SCSI_SENSEQ_ILLEGAL_ELEMENT_ADDR 0x01

#define SCSI_SENSEQ_DESTINATION_FULL 0x0d
#define SCSI_SENSEQ_SOURCE_EMPTY     0x0e

#define SCSI_SENSEQ_INCOMPATIBLE_MEDIA_INSTALLED 0x00
#define SCSI_SENSEQ_UNKNOWN_FORMAT 0x01
#define SCSI_SENSEQ_INCOMPATIBLE_FORMAT 0x02
#define SCSI_SENSEQ_CLEANING_CARTRIDGE_INSTALLED 0x03

#define SCSI_SENSEQ_TARGET_OPERATING_CONDITIONS_CHANGED 0x00
#define SCSI_SENSEQ_MICROCODE_CHANGED                   0x01
#define SCSI_SENSEQ_OPERATING_DEFINITION_CHANGED        0x02
#define SCSI_SENSEQ_INQUIRY_DATA_CHANGED                0x03
#define SCSI_SENSEQ_COMPONENT_DEVICE_ATTACHED           0x04
#define SCSI_SENSEQ_DEVICE_IDENTIFIER_CHANGED           0x05
#define SCSI_SENSEQ_REDUNDANCY_GROUP_MODIFIED           0x06
#define SCSI_SENSEQ_REDUNDANCY_GROUP_DELETED            0x07
#define SCSI_SENSEQ_SPARE_MODIFIED                      0x08
#define SCSI_SENSEQ_SPARE_DELETED                       0x09
#define SCSI_SENSEQ_VOLUME_SET_MODIFIED                 0x0A
#define SCSI_SENSEQ_VOLUME_SET_DELETED                  0x0B
#define SCSI_SENSEQ_VOLUME_SET_DEASSIGNED               0x0C
#define SCSI_SENSEQ_VOLUME_SET_REASSIGNED               0x0D
#define SCSI_SENSEQ_REPORTED_LUNS_DATA_CHANGED          0x0E
#define SCSI_SENSEQ_ECHO_BUFFER_OVERWRITTEN             0x0F
#define SCSI_SENSEQ_MEDIUM_LOADABLE                     0x10
#define SCSI_SENSEQ_MEDIUM_AUXILIARY_MEMORY_ACCESSIBLE  0x11

#define SCSI_SENSEQ_STATE_CHANGE_INPUT     0x00
#define SCSI_SENSEQ_MEDIUM_REMOVAL         0x01
#define SCSI_SENSEQ_WRITE_PROTECT_ENABLE   0x02
#define SCSI_SENSEQ_WRITE_PROTECT_DISABLE  0x03

#define SCSI_SENSEQ_AUTHENTICATION_FAILURE                          0x00
#define SCSI_SENSEQ_KEY_NOT_PRESENT                                 0x01
#define SCSI_SENSEQ_KEY_NOT_ESTABLISHED                             0x02
#define SCSI_SENSEQ_READ_OF_SCRAMBLED_SECTOR_WITHOUT_AUTHENTICATION 0x03
#define SCSI_SENSEQ_MEDIA_CODE_MISMATCHED_TO_LOGICAL_UNIT           0x04
#define SCSI_SENSEQ_LOGICAL_UNIT_RESET_COUNT_ERROR                  0x05

#define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ALMOST_FULL 0x01
#define SCSI_SENSEQ_POWER_CALIBRATION_AREA_FULL        0x02
#define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ERROR       0x03
#define SCSI_SENSEQ_PMA_RMA_UPDATE_FAILURE             0x04
#define SCSI_SENSEQ_PMA_RMA_IS_FULL                    0x05
#define SCSI_SENSEQ_PMA_RMA_ALMOST_FULL                0x06

#define FILE_DEVICE_SCSI 0x0000001b

#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011)
#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012)
#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013)

/* SMART support in ATAPI */
#define IOCTL_SCSI_MINIPORT_SMART_VERSION               ((FILE_DEVICE_SCSI << 16) + 0x0500)
#define IOCTL_SCSI_MINIPORT_IDENTIFY                    ((FILE_DEVICE_SCSI << 16) + 0x0501)
#define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS          ((FILE_DEVICE_SCSI << 16) + 0x0502)
#define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS       ((FILE_DEVICE_SCSI << 16) + 0x0503)
#define IOCTL_SCSI_MINIPORT_ENABLE_SMART                ((FILE_DEVICE_SCSI << 16) + 0x0504)
#define IOCTL_SCSI_MINIPORT_DISABLE_SMART               ((FILE_DEVICE_SCSI << 16) + 0x0505)
#define IOCTL_SCSI_MINIPORT_RETURN_STATUS               ((FILE_DEVICE_SCSI << 16) + 0x0506)
#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE     ((FILE_DEVICE_SCSI << 16) + 0x0507)
#define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES       ((FILE_DEVICE_SCSI << 16) + 0x0508)
#define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS       ((FILE_DEVICE_SCSI << 16) + 0x0509)
#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE ((FILE_DEVICE_SCSI << 16) + 0x050a)
#define IOCTL_SCSI_MINIPORT_READ_SMART_LOG              ((FILE_DEVICE_SCSI << 16) + 0x050b)
#define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG             ((FILE_DEVICE_SCSI << 16) + 0x050c)

/* CLUSTER support */
#define IOCTL_SCSI_MINIPORT_NOT_QUORUM_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0520)
#define IOCTL_SCSI_MINIPORT_NOT_CLUSTER_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0521)

#define MODE_FD_SINGLE_SIDE               0x01
#define MODE_FD_DOUBLE_SIDE               0x02
#define MODE_FD_MAXIMUM_TYPE              0x1E
#define MODE_DSP_FUA_SUPPORTED            0x10
#define MODE_DSP_WRITE_PROTECT            0x80

#define CDDA_CHANNEL_MUTED      0x0
#define CDDA_CHANNEL_ZERO       0x1
#define CDDA_CHANNEL_ONE        0x2
#define CDDA_CHANNEL_TWO        0x4
#define CDDA_CHANNEL_THREE      0x8

#define CDVD_LMT_CADDY              0
#define CDVD_LMT_TRAY               1
#define CDVD_LMT_POPUP              2
#define CDVD_LMT_RESERVED1          3
#define CDVD_LMT_CHANGER_INDIVIDUAL 4
#define CDVD_LMT_CHANGER_CARTRIDGE  5
#define CDVD_LMT_RESERVED2          6
#define CDVD_LMT_RESERVED3          7

#define LOADING_MECHANISM_CADDY                 0x00
#define LOADING_MECHANISM_TRAY                  0x01
#define LOADING_MECHANISM_POPUP                 0x02
#define LOADING_MECHANISM_INDIVIDUAL_CHANGER    0x04
#define LOADING_MECHANISM_CARTRIDGE_CHANGER     0x05

#define MODE_BLOCK_DESC_LENGTH        8
#define MODE_HEADER_LENGTH            4
#define MODE_HEADER_LENGTH10          8

/* CDROM audio control */
#define CDB_AUDIO_PAUSE                   0x00
#define CDB_AUDIO_RESUME                  0x01
#define CDB_DEVICE_START                  0x11
#define CDB_DEVICE_STOP                   0x10
#define CDB_EJECT_MEDIA                   0x10
#define CDB_LOAD_MEDIA                    0x01
#define CDB_SUBCHANNEL_HEADER             0x00
#define CDB_SUBCHANNEL_BLOCK              0x01

#define CDROM_AUDIO_CONTROL_PAGE          0x0E
#define MODE_SELECT_IMMEDIATE             0x04
#define MODE_SELECT_PFBIT                 0x10

#define CDB_USE_MSF                       0x01

/* Multisession CDROMs */
#define GET_LAST_SESSION 0x01
#define GET_SESSION_DATA 0x02

typedef union _CDB {
  struct _CDB6GENERIC {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR CommandUniqueBits:4;
    UCHAR LogicalUnitNumber:3;
    UCHAR CommandUniqueBytes[3];
    UCHAR Link:1;
    UCHAR Flag:1;
    UCHAR Reserved:4;
    UCHAR VendorUnique:2;
  } CDB6GENERIC, *PCDB6GENERIC;
  struct _CDB6READWRITE {
    UCHAR OperationCode;
    UCHAR LogicalBlockMsb1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR LogicalBlockMsb0;
    UCHAR LogicalBlockLsb;
    UCHAR TransferBlocks;
    UCHAR Control;
  } CDB6READWRITE, *PCDB6READWRITE;
  struct _CDB6INQUIRY {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR PageCode;
    UCHAR IReserved;
    UCHAR AllocationLength;
    UCHAR Control;
  } CDB6INQUIRY, *PCDB6INQUIRY;
  struct _CDB6INQUIRY3 {
    UCHAR OperationCode;
    UCHAR EnableVitalProductData:1;
    UCHAR CommandSupportData:1;
    UCHAR Reserved1:6;
    UCHAR PageCode;
    UCHAR Reserved2;
    UCHAR AllocationLength;
    UCHAR Control;
  } CDB6INQUIRY3, *PCDB6INQUIRY3;
  struct _CDB6VERIFY {
    UCHAR OperationCode;
    UCHAR Fixed:1;
    UCHAR ByteCompare:1;
    UCHAR Immediate:1;
    UCHAR Reserved:2;
    UCHAR LogicalUnitNumber:3;
    UCHAR VerificationLength[3];
    UCHAR Control;
  } CDB6VERIFY, *PCDB6VERIFY;
  struct _CDB6FORMAT {
    UCHAR OperationCode;
    UCHAR FormatControl:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR FReserved1;
    UCHAR InterleaveMsb;
    UCHAR InterleaveLsb;
    UCHAR FReserved2;
  } CDB6FORMAT, *PCDB6FORMAT;
  struct _CDB10 {
    UCHAR OperationCode;
    UCHAR RelativeAddress:1;
    UCHAR Reserved1:2;
    UCHAR ForceUnitAccess:1;
    UCHAR DisablePageOut:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR LogicalBlockByte0;
    UCHAR LogicalBlockByte1;
    UCHAR LogicalBlockByte2;
    UCHAR LogicalBlockByte3;
    UCHAR Reserved2;
    UCHAR TransferBlocksMsb;
    UCHAR TransferBlocksLsb;
    UCHAR Control;
  } CDB10, *PCDB10;
  struct _CDB12 {
    UCHAR OperationCode;
    UCHAR RelativeAddress:1;
    UCHAR Reserved1:2;
    UCHAR ForceUnitAccess:1;
    UCHAR DisablePageOut:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR LogicalBlock[4];
    UCHAR TransferLength[4];
    UCHAR Reserved2;
    UCHAR Control;
  } CDB12, *PCDB12;
  struct _CDB16 {
     UCHAR OperationCode;
     UCHAR Reserved1:3;
     UCHAR ForceUnitAccess:1;
     UCHAR DisablePageOut:1;
     UCHAR Protection:3;
     UCHAR LogicalBlock[8];
     UCHAR TransferLength[4];
     UCHAR Reserved2;
     UCHAR Control;
  } CDB16, *PCDB16;
  struct _PAUSE_RESUME {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2[6];
    UCHAR Action;
    UCHAR Control;
  } PAUSE_RESUME, *PPAUSE_RESUME;
  struct _READ_TOC {
    UCHAR OperationCode;
    UCHAR Reserved0:1;
    UCHAR Msf:1;
    UCHAR Reserved1:3;
    UCHAR LogicalUnitNumber:3;
    UCHAR Format2:4;
    UCHAR Reserved2:4;
    UCHAR Reserved3[3];
    UCHAR StartingTrack;
    UCHAR AllocationLength[2];
    UCHAR Control:6;
    UCHAR Format:2;
  } READ_TOC, *PREAD_TOC;
  struct _READ_DISK_INFORMATION {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR Reserved2[5];
    UCHAR AllocationLength[2];
    UCHAR Control;
  } READ_DISK_INFORMATION, *PREAD_DISK_INFORMATION;
  struct _READ_TRACK_INFORMATION {
    UCHAR OperationCode;
    UCHAR Track:1;
    UCHAR Reserved1:3;
    UCHAR Reserved2:1;
    UCHAR Lun:3;
    UCHAR BlockAddress[4];
    UCHAR Reserved3;
    UCHAR AllocationLength[2];
    UCHAR Control;
  } READ_TRACK_INFORMATION, *PREAD_TRACK_INFORMATION;
  struct _RESERVE_TRACK_RZONE {
    UCHAR OperationCode;
    UCHAR Reserved1[4];
    UCHAR ReservationSize[4];
    UCHAR Control;
  } RESERVE_TRACK_RZONE, *PRESERVE_TRACK_RZONE;
  struct _SEND_OPC_INFORMATION {
    UCHAR OperationCode;
    UCHAR DoOpc:1;
    UCHAR Reserved1:7;
    UCHAR Exclude0:1;
    UCHAR Exclude1:1;
    UCHAR Reserved2:6;
    UCHAR Reserved3[4];
    UCHAR ParameterListLength[2];
    UCHAR Reserved4;
  } SEND_OPC_INFORMATION, *PSEND_OPC_INFORMATION;
  struct _REPAIR_TRACK {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR Reserved1:7;
    UCHAR Reserved2[2];
    UCHAR TrackNumber[2];
    UCHAR Reserved3[3];
    UCHAR Control;
  } REPAIR_TRACK, *PREPAIR_TRACK;
  struct _CLOSE_TRACK {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR Reserved1:7;
    UCHAR Track:1;
    UCHAR Session:1;
    UCHAR Reserved2:6;
    UCHAR Reserved3;
    UCHAR TrackNumber[2];
    UCHAR Reserved4[3];
    UCHAR Control;
  } CLOSE_TRACK, *PCLOSE_TRACK;
  struct _READ_BUFFER_CAPACITY {
    UCHAR OperationCode;
    UCHAR BlockInfo:1;
    UCHAR Reserved1:7;
    UCHAR Reserved2[5];
    UCHAR AllocationLength[2];
    UCHAR Control;
  } READ_BUFFER_CAPACITY, *PREAD_BUFFER_CAPACITY;
  struct _SEND_CUE_SHEET {
    UCHAR OperationCode;
    UCHAR Reserved[5];
    UCHAR CueSheetSize[3];
    UCHAR Control;
  } SEND_CUE_SHEET, *PSEND_CUE_SHEET;
  struct _READ_HEADER {
    UCHAR OperationCode;
    UCHAR Reserved1:1;
    UCHAR Msf:1;
    UCHAR Reserved2:3;
    UCHAR Lun:3;
    UCHAR LogicalBlockAddress[4];
    UCHAR Reserved3;
    UCHAR AllocationLength[2];
    UCHAR Control;
  } READ_HEADER, *PREAD_HEADER;
  struct _PLAY_AUDIO {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR StartingBlockAddress[4];
    UCHAR Reserved2;
    UCHAR PlayLength[2];
    UCHAR Control;
  } PLAY_AUDIO, *PPLAY_AUDIO;
  struct _PLAY_AUDIO_MSF {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2;
    UCHAR StartingM;
    UCHAR StartingS;
    UCHAR StartingF;
    UCHAR EndingM;
    UCHAR EndingS;
    UCHAR EndingF;
    UCHAR Control;
  } PLAY_AUDIO_MSF, *PPLAY_AUDIO_MSF;
  struct _BLANK_MEDIA {
    UCHAR OperationCode;
    UCHAR BlankType:3;
    UCHAR Reserved1:1;
    UCHAR Immediate:1;
    UCHAR Reserved2:3;
    UCHAR AddressOrTrack[4];
    UCHAR Reserved3[5];
    UCHAR Control;
  } BLANK_MEDIA, *PBLANK_MEDIA;
  struct _PLAY_CD {
    UCHAR OperationCode;
    UCHAR Reserved1:1;
    UCHAR CMSF:1;
    UCHAR ExpectedSectorType:3;
    UCHAR Lun:3;
    _ANONYMOUS_UNION union {
      struct _LBA {
        UCHAR StartingBlockAddress[4];
        UCHAR PlayLength[4];
      } LBA;
      struct _MSF {
        UCHAR Reserved1;
        UCHAR StartingM;
        UCHAR StartingS;
        UCHAR StartingF;
        UCHAR EndingM;
        UCHAR EndingS;
        UCHAR EndingF;
        UCHAR Reserved2;
      } MSF;
    } DUMMYUNIONNAME;
    UCHAR Audio:1;
    UCHAR Composite:1;
    UCHAR Port1:1;
    UCHAR Port2:1;
    UCHAR Reserved2:3;
    UCHAR Speed:1;
    UCHAR Control;
  } PLAY_CD, *PPLAY_CD;
  struct _SCAN_CD {
    UCHAR OperationCode;
    UCHAR RelativeAddress:1;
    UCHAR Reserved1:3;
    UCHAR Direct:1;
    UCHAR Lun:3;
    UCHAR StartingAddress[4];
    UCHAR Reserved2[3];
    UCHAR Reserved3:6;
    UCHAR Type:2;
    UCHAR Reserved4;
    UCHAR Control;
  } SCAN_CD, *PSCAN_CD;
  struct _STOP_PLAY_SCAN {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR Reserved2[7];
    UCHAR Control;
  } STOP_PLAY_SCAN, *PSTOP_PLAY_SCAN;
  struct _SUBCHANNEL {
    UCHAR OperationCode;
    UCHAR Reserved0:1;
    UCHAR Msf:1;
    UCHAR Reserved1:3;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2:6;
    UCHAR SubQ:1;
    UCHAR Reserved3:1;
    UCHAR Format;
    UCHAR Reserved4[2];
    UCHAR TrackNumber;
    UCHAR AllocationLength[2];
    UCHAR Control;
  } SUBCHANNEL, *PSUBCHANNEL;
  struct _READ_CD {
    UCHAR OperationCode;
    UCHAR RelativeAddress:1;
    UCHAR Reserved0:1;
    UCHAR ExpectedSectorType:3;
    UCHAR Lun:3;
    UCHAR StartingLBA[4];
    UCHAR TransferBlocks[3];
    UCHAR Reserved2:1;
    UCHAR ErrorFlags:2;
    UCHAR IncludeEDC:1;
    UCHAR IncludeUserData:1;
    UCHAR HeaderCode:2;
    UCHAR IncludeSyncData:1;
    UCHAR SubChannelSelection:3;
    UCHAR Reserved3:5;
    UCHAR Control;
  } READ_CD, *PREAD_CD;
  struct _READ_CD_MSF {
    UCHAR OperationCode;
    UCHAR RelativeAddress:1;
    UCHAR Reserved1:1;
    UCHAR ExpectedSectorType:3;
    UCHAR Lun:3;
    UCHAR Reserved2;
    UCHAR StartingM;
    UCHAR StartingS;
    UCHAR StartingF;
    UCHAR EndingM;
    UCHAR EndingS;
    UCHAR EndingF;
    UCHAR Reserved3;
    UCHAR Reserved4:1;
    UCHAR ErrorFlags:2;
    UCHAR IncludeEDC:1;
    UCHAR IncludeUserData:1;
    UCHAR HeaderCode:2;
    UCHAR IncludeSyncData:1;
    UCHAR SubChannelSelection:3;
    UCHAR Reserved5:5;
    UCHAR Control;
  } READ_CD_MSF, *PREAD_CD_MSF;
  struct _PLXTR_READ_CDDA {
    UCHAR OperationCode;
    UCHAR Reserved0:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR LogicalBlockByte0;
    UCHAR LogicalBlockByte1;
    UCHAR LogicalBlockByte2;
    UCHAR LogicalBlockByte3;
    UCHAR TransferBlockByte0;
    UCHAR TransferBlockByte1;
    UCHAR TransferBlockByte2;
    UCHAR TransferBlockByte3;
    UCHAR SubCode;
    UCHAR Control;
  } PLXTR_READ_CDDA, *PPLXTR_READ_CDDA;
  struct _NEC_READ_CDDA {
    UCHAR OperationCode;
    UCHAR Reserved0;
    UCHAR LogicalBlockByte0;
    UCHAR LogicalBlockByte1;
    UCHAR LogicalBlockByte2;
    UCHAR LogicalBlockByte3;
    UCHAR Reserved1;
    UCHAR TransferBlockByte0;
    UCHAR TransferBlockByte1;
    UCHAR Control;
  } NEC_READ_CDDA, *PNEC_READ_CDDA;
  struct _MODE_SENSE {
    UCHAR OperationCode;
    UCHAR Reserved1:3;
    UCHAR Dbd:1;
    UCHAR Reserved2:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR PageCode:6;
    UCHAR Pc:2;
    UCHAR Reserved3;
    UCHAR AllocationLength;
    UCHAR Control;
  } MODE_SENSE, *PMODE_SENSE;
  struct _MODE_SENSE10 {
    UCHAR OperationCode;
    UCHAR Reserved1:3;
    UCHAR Dbd:1;
    UCHAR Reserved2:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR PageCode:6;
    UCHAR Pc:2;
    UCHAR Reserved3[4];
    UCHAR AllocationLength[2];
    UCHAR Control;
  } MODE_SENSE10, *PMODE_SENSE10;
  struct _MODE_SELECT {
    UCHAR OperationCode;
    UCHAR SPBit:1;
    UCHAR Reserved1:3;
    UCHAR PFBit:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2[2];
    UCHAR ParameterListLength;
    UCHAR Control;
  } MODE_SELECT, *PMODE_SELECT;
  struct _MODE_SELECT10 {
    UCHAR OperationCode;
    UCHAR SPBit:1;
    UCHAR Reserved1:3;
    UCHAR PFBit:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2[5];
    UCHAR ParameterListLength[2];
    UCHAR Control;
  } MODE_SELECT10, *PMODE_SELECT10;
  struct _LOCATE {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR CPBit:1;
    UCHAR BTBit:1;
    UCHAR Reserved1:2;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved3;
    UCHAR LogicalBlockAddress[4];
    UCHAR Reserved4;
    UCHAR Partition;
    UCHAR Control;
  } LOCATE, *PLOCATE;
  struct _LOGSENSE {
    UCHAR OperationCode;
    UCHAR SPBit:1;
    UCHAR PPCBit:1;
    UCHAR Reserved1:3;
    UCHAR LogicalUnitNumber:3;
    UCHAR PageCode:6;
    UCHAR PCBit:2;
    UCHAR Reserved2;
    UCHAR Reserved3;
    UCHAR ParameterPointer[2];
    UCHAR AllocationLength[2];
    UCHAR Control;
  } LOGSENSE, *PLOGSENSE;
  struct _LOGSELECT {
    UCHAR OperationCode;
    UCHAR SPBit:1;
    UCHAR PCRBit:1;
    UCHAR Reserved1:3;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved:6;
    UCHAR PCBit:2;
    UCHAR Reserved2[4];
    UCHAR ParameterListLength[2];
    UCHAR Control;
  } LOGSELECT, *PLOGSELECT;
  struct _PRINT {
    UCHAR OperationCode;
    UCHAR Reserved:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR TransferLength[3];
    UCHAR Control;
  } PRINT, *PPRINT;
  struct _SEEK {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR LogicalBlockAddress[4];
    UCHAR Reserved2[3];
    UCHAR Control;
  } SEEK, *PSEEK;
  struct _ERASE {
    UCHAR OperationCode;
    UCHAR Long:1;
    UCHAR Immediate:1;
    UCHAR Reserved1:3;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2[3];
    UCHAR Control;
  } ERASE, *PERASE;
  struct _START_STOP {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR Reserved1:4;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2[2];
    UCHAR Start:1;
    UCHAR LoadEject:1;
    UCHAR Reserved3:6;
    UCHAR Control;
  } START_STOP, *PSTART_STOP;
  struct _MEDIA_REMOVAL {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR Reserved2[2];
    UCHAR Prevent:1;
    UCHAR Persistant:1;
    UCHAR Reserved3:6;
    UCHAR Control;
  } MEDIA_REMOVAL, *PMEDIA_REMOVAL;
  struct _SEEK_BLOCK {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR Reserved1:7;
    UCHAR BlockAddress[3];
    UCHAR Link:1;
    UCHAR Flag:1;
    UCHAR Reserved2:4;
    UCHAR VendorUnique:2;
  } SEEK_BLOCK, *PSEEK_BLOCK;
  struct _REQUEST_BLOCK_ADDRESS {
    UCHAR OperationCode;
    UCHAR Reserved1[3];
    UCHAR AllocationLength;
    UCHAR Link:1;
    UCHAR Flag:1;
    UCHAR Reserved2:4;
    UCHAR VendorUnique:2;
  } REQUEST_BLOCK_ADDRESS, *PREQUEST_BLOCK_ADDRESS;
  struct _PARTITION {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR Sel:1;
    UCHAR PartitionSelect:6;
    UCHAR Reserved1[3];
    UCHAR Control;
  } PARTITION, *PPARTITION;
  struct _WRITE_TAPE_MARKS {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR WriteSetMarks:1;
    UCHAR Reserved:3;
    UCHAR LogicalUnitNumber:3;
    UCHAR TransferLength[3];
    UCHAR Control;
  } WRITE_TAPE_MARKS, *PWRITE_TAPE_MARKS;
  struct _SPACE_TAPE_MARKS {
    UCHAR OperationCode;
    UCHAR Code:3;
    UCHAR Reserved:2;
    UCHAR LogicalUnitNumber:3;
    UCHAR NumMarksMSB;
    UCHAR NumMarks;
    UCHAR NumMarksLSB;
  union {
    UCHAR value;
    struct {
      UCHAR Link:1;
      UCHAR Flag:1;
      UCHAR Reserved:4;
      UCHAR VendorUnique:2;
    } Fields;
  } Byte6;
  } SPACE_TAPE_MARKS, *PSPACE_TAPE_MARKS;
  struct _READ_POSITION {
    UCHAR Operation;
    UCHAR BlockType:1;
    UCHAR Reserved1:4;
    UCHAR Lun:3;
    UCHAR Reserved2[7];
    UCHAR Control;
  } READ_POSITION, *PREAD_POSITION;
  struct _CDB6READWRITETAPE {
    UCHAR OperationCode;
    UCHAR VendorSpecific:5;
    UCHAR Reserved:3;
    UCHAR TransferLenMSB;
    UCHAR TransferLen;
    UCHAR TransferLenLSB;
    UCHAR Link:1;
    UCHAR Flag:1;
    UCHAR Reserved1:4;
    UCHAR VendorUnique:2;
  } CDB6READWRITETAPE, *PCDB6READWRITETAPE;
  struct _INIT_ELEMENT_STATUS {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNubmer:3;
    UCHAR Reserved2[3];
    UCHAR Reserved3:7;
    UCHAR NoBarCode:1;
  } INIT_ELEMENT_STATUS, *PINIT_ELEMENT_STATUS;
  struct _INITIALIZE_ELEMENT_RANGE {
    UCHAR OperationCode;
    UCHAR Range:1;
    UCHAR Reserved1:4;
    UCHAR LogicalUnitNubmer:3;
    UCHAR FirstElementAddress[2];
    UCHAR Reserved2[2];
    UCHAR NumberOfElements[2];
    UCHAR Reserved3;
    UCHAR Reserved4:7;
    UCHAR NoBarCode:1;
  } INITIALIZE_ELEMENT_RANGE, *PINITIALIZE_ELEMENT_RANGE;
  struct _POSITION_TO_ELEMENT {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR TransportElementAddress[2];
    UCHAR DestinationElementAddress[2];
    UCHAR Reserved2[2];
    UCHAR Flip:1;
    UCHAR Reserved3:7;
    UCHAR Control;
  } POSITION_TO_ELEMENT, *PPOSITION_TO_ELEMENT;
  struct _MOVE_MEDIUM {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR TransportElementAddress[2];
    UCHAR SourceElementAddress[2];
    UCHAR DestinationElementAddress[2];
    UCHAR Reserved2[2];
    UCHAR Flip:1;
    UCHAR Reserved3:7;
    UCHAR Control;
  } MOVE_MEDIUM, *PMOVE_MEDIUM;
  struct _EXCHANGE_MEDIUM {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR LogicalUnitNumber:3;
    UCHAR TransportElementAddress[2];
    UCHAR SourceElementAddress[2];
    UCHAR Destination1ElementAddress[2];
    UCHAR Destination2ElementAddress[2];
    UCHAR Flip1:1;
    UCHAR Flip2:1;
    UCHAR Reserved3:6;
    UCHAR Control;
  } EXCHANGE_MEDIUM, *PEXCHANGE_MEDIUM;
  struct _READ_ELEMENT_STATUS {
    UCHAR OperationCode;
    UCHAR ElementType:4;
    UCHAR VolTag:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR StartingElementAddress[2];
    UCHAR NumberOfElements[2];
    UCHAR Reserved1;
    UCHAR AllocationLength[3];
    UCHAR Reserved2;
    UCHAR Control;
  } READ_ELEMENT_STATUS, *PREAD_ELEMENT_STATUS;
  struct _SEND_VOLUME_TAG {
    UCHAR OperationCode;
    UCHAR ElementType:4;
    UCHAR Reserved1:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR StartingElementAddress[2];
    UCHAR Reserved2;
    UCHAR ActionCode:5;
    UCHAR Reserved3:3;
    UCHAR Reserved4[2];
    UCHAR ParameterListLength[2];
    UCHAR Reserved5;
    UCHAR Control;
  } SEND_VOLUME_TAG, *PSEND_VOLUME_TAG;
  struct _REQUEST_VOLUME_ELEMENT_ADDRESS {
    UCHAR OperationCode;
    UCHAR ElementType:4;
    UCHAR VolTag:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR StartingElementAddress[2];
    UCHAR NumberElements[2];
    UCHAR Reserved1;
    UCHAR AllocationLength[3];
    UCHAR Reserved2;
    UCHAR Control;
  } REQUEST_VOLUME_ELEMENT_ADDRESS, *PREQUEST_VOLUME_ELEMENT_ADDRESS;
  struct _LOAD_UNLOAD {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR Reserved1:4;
    UCHAR Lun:3;
    UCHAR Reserved2[2];
    UCHAR Start:1;
    UCHAR LoadEject:1;
    UCHAR Reserved3:6;
    UCHAR Reserved4[3];
    UCHAR Slot;
    UCHAR Reserved5[3];
  } LOAD_UNLOAD, *PLOAD_UNLOAD;
  struct _MECH_STATUS {
    UCHAR OperationCode;
    UCHAR Reserved:5;
    UCHAR Lun:3;
    UCHAR Reserved1[6];
    UCHAR AllocationLength[2];
    UCHAR Reserved2[1];
    UCHAR Control;
  } MECH_STATUS, *PMECH_STATUS;
  struct _SYNCHRONIZE_CACHE10 {
    UCHAR OperationCode;
    UCHAR RelAddr:1;
    UCHAR Immediate:1;
    UCHAR Reserved:3;
    UCHAR Lun:3;
    UCHAR LogicalBlockAddress[4];
    UCHAR Reserved2;
    UCHAR BlockCount[2];
    UCHAR Control;
  } SYNCHRONIZE_CACHE10, *PSYNCHRONIZE_CACHE10;
  struct _GET_EVENT_STATUS_NOTIFICATION {
    UCHAR OperationCode;
    UCHAR Immediate:1;
    UCHAR Reserved:4;
    UCHAR Lun:3;
    UCHAR Reserved2[2];
    UCHAR NotificationClassRequest;
    UCHAR Reserved3[2];
    UCHAR EventListLength[2];
    UCHAR Control;
  } GET_EVENT_STATUS_NOTIFICATION, *PGET_EVENT_STATUS_NOTIFICATION;
  struct _GET_PERFORMANCE {
    UCHAR OperationCode;
    UCHAR Except:2;
    UCHAR Write:1;
    UCHAR Tolerance:2;
    UCHAR Reserved0:3;
    UCHAR StartingLBA[4];
    UCHAR Reserved1[2];
    UCHAR MaximumNumberOfDescriptors[2];
    UCHAR Type;
    UCHAR Control;
  } GET_PERFORMANCE;
  struct _READ_DVD_STRUCTURE {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR RMDBlockNumber[4];
    UCHAR LayerNumber;
    UCHAR Format;
    UCHAR AllocationLength[2];
    UCHAR Reserved3:6;
    UCHAR AGID:2;
    UCHAR Control;
  } READ_DVD_STRUCTURE, *PREAD_DVD_STRUCTURE;
  struct _SET_STREAMING {
    UCHAR OperationCode;
    UCHAR Reserved[8];
    UCHAR ParameterListLength[2];
    UCHAR Control;
  } SET_STREAMING;
  struct _SEND_DVD_STRUCTURE {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR Reserved2[5];
    UCHAR Format;
    UCHAR ParameterListLength[2];
    UCHAR Reserved3;
    UCHAR Control;
  } SEND_DVD_STRUCTURE, *PSEND_DVD_STRUCTURE;
  struct _SEND_KEY {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR Reserved2[6];
    UCHAR ParameterListLength[2];
    UCHAR KeyFormat:6;
    UCHAR AGID:2;
    UCHAR Control;
  } SEND_KEY, *PSEND_KEY;
  struct _REPORT_KEY {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR LogicalBlockAddress[4];
    UCHAR Reserved2[2];
    UCHAR AllocationLength[2];
    UCHAR KeyFormat:6;
    UCHAR AGID:2;
    UCHAR Control;
  } REPORT_KEY, *PREPORT_KEY;
  struct _SET_READ_AHEAD {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR TriggerLBA[4];
    UCHAR ReadAheadLBA[4];
    UCHAR Reserved2;
    UCHAR Control;
  } SET_READ_AHEAD, *PSET_READ_AHEAD;
  struct _READ_FORMATTED_CAPACITIES {
    UCHAR OperationCode;
    UCHAR Reserved1:5;
    UCHAR Lun:3;
    UCHAR Reserved2[5];
    UCHAR AllocationLength[2];
    UCHAR Control;
  } READ_FORMATTED_CAPACITIES, *PREAD_FORMATTED_CAPACITIES;
  struct _REPORT_LUNS {
    UCHAR OperationCode;
    UCHAR Reserved1[5];
    UCHAR AllocationLength[4];
    UCHAR Reserved2[1];
    UCHAR Control;
  } REPORT_LUNS, *PREPORT_LUNS;
  struct _PERSISTENT_RESERVE_IN {
    UCHAR OperationCode;
    UCHAR ServiceAction:5;
    UCHAR Reserved1:3;
    UCHAR Reserved2[5];
    UCHAR AllocationLength[2];
    UCHAR Control;
  } PERSISTENT_RESERVE_IN, *PPERSISTENT_RESERVE_IN;
  struct _PERSISTENT_RESERVE_OUT {
    UCHAR OperationCode;
    UCHAR ServiceAction:5;
    UCHAR Reserved1:3;
    UCHAR Type:4;
    UCHAR Scope:4;
    UCHAR Reserved2[4];
    UCHAR ParameterListLength[2];
    UCHAR Control;
  } PERSISTENT_RESERVE_OUT, *PPERSISTENT_RESERVE_OUT;
  struct _GET_CONFIGURATION {
    UCHAR OperationCode;
    UCHAR RequestType:1;
    UCHAR Reserved1:7;
    UCHAR StartingFeature[2];
    UCHAR Reserved2[3];
    UCHAR AllocationLength[2];
    UCHAR Control;
  } GET_CONFIGURATION, *PGET_CONFIGURATION;
  struct _SET_CD_SPEED {
    UCHAR OperationCode;
    _ANONYMOUS_UNION union {
      UCHAR Reserved1;
      _ANONYMOUS_STRUCT struct {
        UCHAR RotationControl:2;
        UCHAR Reserved3:6;
      } DUMMYSTRUCTNAME;
    } DUMMYUNIONNAME;
    UCHAR ReadSpeed[2];
    UCHAR WriteSpeed[2];
    UCHAR Reserved2[5];
    UCHAR Control;
  } SET_CD_SPEED, *PSET_CD_SPEED;
  struct _READ12 {
    UCHAR OperationCode;
    UCHAR RelativeAddress:1;
    UCHAR Reserved1:2;
    UCHAR ForceUnitAccess:1;
    UCHAR DisablePageOut:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR LogicalBlock[4];
    UCHAR TransferLength[4];
    UCHAR Reserved2:7;
    UCHAR Streaming:1;
    UCHAR Control;
  } READ12;
  struct _WRITE12 {
    UCHAR OperationCode;
    UCHAR RelativeAddress:1;
    UCHAR Reserved1:1;
    UCHAR EBP:1;
    UCHAR ForceUnitAccess:1;
    UCHAR DisablePageOut:1;
    UCHAR LogicalUnitNumber:3;
    UCHAR LogicalBlock[4];
    UCHAR TransferLength[4];
    UCHAR Reserved2:7;
    UCHAR Streaming:1;
    UCHAR Control;
  } WRITE12;
  struct _READ16 {
    UCHAR OperationCode;
    UCHAR Reserved1:3;
    UCHAR ForceUnitAccess:1;
    UCHAR DisablePageOut:1;
    UCHAR ReadProtect:3;
    UCHAR LogicalBlock[8];
    UCHAR TransferLength[4];
    UCHAR Reserved2:7;
    UCHAR Streaming:1;
    UCHAR Control;
  } READ16;
  struct _WRITE16 {
    UCHAR OperationCode;
    UCHAR Reserved1:3;
    UCHAR ForceUnitAccess:1;
    UCHAR DisablePageOut:1;
    UCHAR WriteProtect:3;
    UCHAR LogicalBlock[8];
    UCHAR TransferLength[4];
    UCHAR Reserved2:7;
    UCHAR Streaming:1;
    UCHAR Control;
  } WRITE16;
  struct _VERIFY16 {
    UCHAR OperationCode;
    UCHAR Reserved1:1;
    UCHAR ByteCheck:1;
    UCHAR BlockVerify:1;
    UCHAR Reserved2: 1;
    UCHAR DisablePageOut:1;
    UCHAR VerifyProtect:3;
    UCHAR LogicalBlock[8];
    UCHAR VerificationLength[4];
    UCHAR Reserved3:7;
    UCHAR Streaming:1;
    UCHAR Control;
  } VERIFY16;
  struct _SYNCHRONIZE_CACHE16 {
    UCHAR OperationCode;
    UCHAR Reserved1:1;
    UCHAR Immediate:1;
    UCHAR Reserved2:6;
    UCHAR LogicalBlock[8];
    UCHAR BlockCount[4];
    UCHAR Reserved3;
    UCHAR Control;
  } SYNCHRONIZE_CACHE16;
  struct _READ_CAPACITY16 {
    UCHAR OperationCode;
    UCHAR ServiceAction:5;
    UCHAR Reserved1:3;
    UCHAR LogicalBlock[8];
    UCHAR BlockCount[4];
    UCHAR PMI:1;
    UCHAR Reserved2:7;
    UCHAR Control;
  } READ_CAPACITY16;
  ULONG AsUlong[4];
  UCHAR AsByte[16];
} CDB, *PCDB;

typedef struct _NOTIFICATION_EVENT_STATUS_HEADER {
  UCHAR EventDataLength[2];
  UCHAR NotificationClass:3;
  UCHAR Reserved:4;
  UCHAR NEA:1;
  UCHAR SupportedEventClasses;
  UCHAR ClassEventData[0];
} NOTIFICATION_EVENT_STATUS_HEADER, *PNOTIFICATION_EVENT_STATUS_HEADER;

typedef struct _NOTIFICATION_OPERATIONAL_STATUS {
  UCHAR OperationalEvent:4;
  UCHAR Reserved1:4;
  UCHAR OperationalStatus:4;
  UCHAR Reserved2:3;
  UCHAR PersistentPrevented:1;
  UCHAR Operation[2];
} NOTIFICATION_OPERATIONAL_STATUS, *PNOTIFICATION_OPERATIONAL_STATUS;

typedef struct _NOTIFICATION_POWER_STATUS {
  UCHAR PowerEvent:4;
  UCHAR Reserved:4;
  UCHAR PowerStatus;
  UCHAR Reserved2[2];
} NOTIFICATION_POWER_STATUS, *PNOTIFICATION_POWER_STATUS;

typedef struct _NOTIFICATION_EXTERNAL_STATUS {
  UCHAR ExternalEvent:4;
  UCHAR Reserved1:4;
  UCHAR ExternalStatus:4;
  UCHAR Reserved2:3;
  UCHAR PersistentPrevented:1;
  UCHAR Request[2];
} NOTIFICATION_EXTERNAL_STATUS, *PNOTIFICATION_EXTERNAL_STATUS;

typedef struct _NOTIFICATION_MEDIA_STATUS {
  UCHAR MediaEvent:4;
  UCHAR Reserved:4;
  _ANONYMOUS_UNION union {
    UCHAR PowerStatus;
    UCHAR MediaStatus;
    _ANONYMOUS_STRUCT struct {
      UCHAR DoorTrayOpen:1;
      UCHAR MediaPresent:1;
      UCHAR ReservedX:6;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
  UCHAR StartSlot;
  UCHAR EndSlot;
} NOTIFICATION_MEDIA_STATUS, *PNOTIFICATION_MEDIA_STATUS;

typedef struct _NOTIFICATION_MULTI_HOST_STATUS {
  UCHAR MultiHostEvent:4;
  UCHAR Reserved1:4;
  UCHAR MultiHostStatus:4;
  UCHAR Reserved2:3;
  UCHAR PersistentPrevented:1;
  UCHAR Priority[2];
} NOTIFICATION_MULTI_HOST_STATUS, *PNOTIFICATION_MULTI_HOST_STATUS;

typedef struct _NOTIFICATION_BUSY_STATUS {
  UCHAR DeviceBusyEvent:4;
  UCHAR Reserved:4;
  UCHAR DeviceBusyStatus;
  UCHAR Time[2];
} NOTIFICATION_BUSY_STATUS, *PNOTIFICATION_BUSY_STATUS;

typedef struct _READ_DVD_STRUCTURES_HEADER {
  UCHAR Length[2];
  UCHAR Reserved[2];
  UCHAR Data[0];
} READ_DVD_STRUCTURES_HEADER, *PREAD_DVD_STRUCTURES_HEADER;

typedef struct _CDVD_KEY_HEADER {
  UCHAR DataLength[2];
  UCHAR Reserved[2];
  UCHAR Data[0];
} CDVD_KEY_HEADER, *PCDVD_KEY_HEADER;

typedef struct _CDVD_REPORT_AGID_DATA {
  UCHAR Reserved1[3];
  UCHAR Reserved2:6;
  UCHAR AGID:2;
} CDVD_REPORT_AGID_DATA, *PCDVD_REPORT_AGID_DATA;

typedef struct _CDVD_CHALLENGE_KEY_DATA {
  UCHAR ChallengeKeyValue[10];
  UCHAR Reserved[2];
} CDVD_CHALLENGE_KEY_DATA, *PCDVD_CHALLENGE_KEY_DATA;

typedef struct _CDVD_KEY_DATA {
  UCHAR Key[5];
  UCHAR Reserved[3];
} CDVD_KEY_DATA, *PCDVD_KEY_DATA;

typedef struct _CDVD_REPORT_ASF_DATA {
  UCHAR Reserved1[3];
  UCHAR Success:1;
  UCHAR Reserved2:7;
} CDVD_REPORT_ASF_DATA, *PCDVD_REPORT_ASF_DATA;

typedef struct _CDVD_TITLE_KEY_HEADER {
  UCHAR DataLength[2];
  UCHAR Reserved1[1];
  UCHAR Reserved2:3;
  UCHAR CGMS:2;
  UCHAR CP_SEC:1;
  UCHAR CPM:1;
  UCHAR Zero:1;
  CDVD_KEY_DATA TitleKey;
} CDVD_TITLE_KEY_HEADER, *PCDVD_TITLE_KEY_HEADER;

typedef struct _FORMAT_DESCRIPTOR {
  UCHAR NumberOfBlocks[4];
  UCHAR FormatSubType:2;
  UCHAR FormatType:6;
  UCHAR BlockLength[3];
} FORMAT_DESCRIPTOR, *PFORMAT_DESCRIPTOR;

typedef struct _FORMAT_LIST_HEADER {
  UCHAR Reserved;
  UCHAR VendorSpecific:1;
  UCHAR Immediate:1;
  UCHAR TryOut:1;
  UCHAR IP:1;
  UCHAR STPF:1;
  UCHAR DCRT:1;
  UCHAR DPRY:1;
  UCHAR FOV:1;
  UCHAR FormatDescriptorLength[2];
  FORMAT_DESCRIPTOR Descriptors[0];
} FORMAT_LIST_HEADER, *PFORMAT_LIST_HEADER;

typedef struct _FORMATTED_CAPACITY_DESCRIPTOR {
  UCHAR NumberOfBlocks[4];
  UCHAR Maximum:1;
  UCHAR Valid:1;
  UCHAR FormatType:6;
  UCHAR BlockLength[3];
} FORMATTED_CAPACITY_DESCRIPTOR, *PFORMATTED_CAPACITY_DESCRIPTOR;

typedef struct _FORMATTED_CAPACITY_LIST {
  UCHAR Reserved[3];
  UCHAR CapacityListLength;
  FORMATTED_CAPACITY_DESCRIPTOR Descriptors[0];
} FORMATTED_CAPACITY_LIST, *PFORMATTED_CAPACITY_LIST;

typedef struct _OPC_TABLE_ENTRY {
  UCHAR Speed[2];
  UCHAR OPCValue[6];
} OPC_TABLE_ENTRY, *POPC_TABLE_ENTRY;

typedef struct _DISC_INFORMATION {
  UCHAR Length[2];
  UCHAR DiscStatus:2;
  UCHAR LastSessionStatus:2;
  UCHAR Erasable:1;
  UCHAR Reserved1:3;
  UCHAR FirstTrackNumber;
  UCHAR NumberOfSessionsLsb;
  UCHAR LastSessionFirstTrackLsb;
  UCHAR LastSessionLastTrackLsb;
  UCHAR MrwStatus:2;
  UCHAR MrwDirtyBit:1;
  UCHAR Reserved2:2;
  UCHAR URU:1;
  UCHAR DBC_V:1;
  UCHAR DID_V:1;
  UCHAR DiscType;
  UCHAR NumberOfSessionsMsb;
  UCHAR LastSessionFirstTrackMsb;
  UCHAR LastSessionLastTrackMsb;
  UCHAR DiskIdentification[4];
  UCHAR LastSessionLeadIn[4];
  UCHAR LastPossibleLeadOutStartTime[4];
  UCHAR DiskBarCode[8];
  UCHAR Reserved4;
  UCHAR NumberOPCEntries;
  OPC_TABLE_ENTRY OPCTable[1];
} DISC_INFORMATION, *PDISC_INFORMATION;

typedef struct _DISK_INFORMATION {
  UCHAR Length[2];
  UCHAR DiskStatus:2;
  UCHAR LastSessionStatus:2;
  UCHAR Erasable:1;
  UCHAR Reserved1:3;
  UCHAR FirstTrackNumber;
  UCHAR NumberOfSessions;
  UCHAR LastSessionFirstTrack;
  UCHAR LastSessionLastTrack;
  UCHAR Reserved2:5;
  UCHAR GEN:1;
  UCHAR DBC_V:1;
  UCHAR DID_V:1;
  UCHAR DiskType;
  UCHAR Reserved3[3];
  UCHAR DiskIdentification[4];
  UCHAR LastSessionLeadIn[4];
  UCHAR LastPossibleStartTime[4];
  UCHAR DiskBarCode[8];
  UCHAR Reserved4;
  UCHAR NumberOPCEntries;
  OPC_TABLE_ENTRY OPCTable[0];
} DISK_INFORMATION, *PDISK_INFORMATION;

typedef struct _DATA_BLOCK_HEADER {
  UCHAR DataMode;
  UCHAR Reserved[4];
  _ANONYMOUS_UNION union {
    UCHAR LogicalBlockAddress[4];
    struct {
      UCHAR Reserved;
      UCHAR M;
      UCHAR S;
      UCHAR F;
    } MSF;
  } DUMMYUNIONNAME;
} DATA_BLOCK_HEADER, *PDATA_BLOCK_HEADER;

typedef struct _TRACK_INFORMATION {
  UCHAR Length[2];
  UCHAR TrackNumber;
  UCHAR SessionNumber;
  UCHAR Reserved1;
  UCHAR TrackMode:4;
  UCHAR Copy:1;
  UCHAR Damage:1;
  UCHAR Reserved2:2;
  UCHAR DataMode:4;
  UCHAR FP:1;
  UCHAR Packet:1;
  UCHAR Blank:1;
  UCHAR RT:1;
  UCHAR NWA_V:1;
  UCHAR Reserved3:7;
  UCHAR TrackStartAddress[4];
  UCHAR NextWritableAddress[4];
  UCHAR FreeBlocks[4];
  UCHAR FixedPacketSize[4];
} TRACK_INFORMATION, *PTRACK_INFORMATION;

typedef struct _TRACK_INFORMATION2 {
  UCHAR Length[2];
  UCHAR TrackNumberLsb;
  UCHAR SessionNumberLsb;
  UCHAR Reserved4;
  UCHAR TrackMode:4;
  UCHAR Copy:1;
  UCHAR Damage:1;
  UCHAR Reserved5:2;
  UCHAR DataMode:4;
  UCHAR FixedPacket:1;
  UCHAR Packet:1;
  UCHAR Blank:1;
  UCHAR ReservedTrack:1;
  UCHAR NWA_V:1;
  UCHAR LRA_V:1;
  UCHAR Reserved6:6;
  UCHAR TrackStartAddress[4];
  UCHAR NextWritableAddress[4];
  UCHAR FreeBlocks[4];
  UCHAR FixedPacketSize[4];
  UCHAR TrackSize[4];
  UCHAR LastRecordedAddress[4];
  UCHAR TrackNumberMsb;
  UCHAR SessionNumberMsb;
  UCHAR Reserved7[2];
} TRACK_INFORMATION2, *PTRACK_INFORMATION2;

typedef struct _TRACK_INFORMATION3 {
  UCHAR Length[2];
  UCHAR TrackNumberLsb;
  UCHAR SessionNumberLsb;
  UCHAR Reserved4;
  UCHAR TrackMode:4;
  UCHAR Copy:1;
  UCHAR Damage:1;
  UCHAR Reserved5:2;
  UCHAR DataMode:4;
  UCHAR FixedPacket:1;
  UCHAR Packet:1;
  UCHAR Blank:1;
  UCHAR ReservedTrack:1;
  UCHAR NWA_V:1;
  UCHAR LRA_V:1;
  UCHAR Reserved6:6;
  UCHAR TrackStartAddress[4];
  UCHAR NextWritableAddress[4];
  UCHAR FreeBlocks[4];
  UCHAR FixedPacketSize[4];
  UCHAR TrackSize[4];
  UCHAR LastRecordedAddress[4];
  UCHAR TrackNumberMsb;
  UCHAR SessionNumberMsb;
  UCHAR Reserved7[2];
  UCHAR ReadCompatibilityLba[4];
} TRACK_INFORMATION3, *PTRACK_INFORMATION3;

typedef struct _PERFORMANCE_DESCRIPTOR {
  UCHAR RandomAccess:1;
  UCHAR Exact:1;
  UCHAR RestoreDefaults:1;
  UCHAR WriteRotationControl:2;
  UCHAR Reserved1:3;
  UCHAR Reserved[3];
  UCHAR StartLba[4];
  UCHAR EndLba[4];
  UCHAR ReadSize[4];
  UCHAR ReadTime[4];
  UCHAR WriteSize[4];
  UCHAR WriteTime[4];
} PERFORMANCE_DESCRIPTOR, *PPERFORMANCE_DESCRIPTOR;

typedef struct _SCSI_EXTENDED_MESSAGE {
  UCHAR InitialMessageCode;
  UCHAR MessageLength;
  UCHAR MessageType;
  union _EXTENDED_ARGUMENTS {
    struct {
      UCHAR Modifier[4];
    } Modify;
    struct {
      UCHAR TransferPeriod;
      UCHAR ReqAckOffset;
    } Synchronous;
    struct{
      UCHAR Width;
    } Wide;
  } ExtendedArguments;
}SCSI_EXTENDED_MESSAGE, *PSCSI_EXTENDED_MESSAGE;

#ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */
#define _INQUIRYDATA_DEFINED

#define INQUIRYDATABUFFERSIZE 36

#if (NTDDI_VERSION < NTDDI_WINXP)
typedef struct _INQUIRYDATA {
  UCHAR DeviceType:5;
  UCHAR DeviceTypeQualifier:3;
  UCHAR DeviceTypeModifier:7;
  UCHAR RemovableMedia:1;
  UCHAR Versions;
  UCHAR ResponseDataFormat:4;
  UCHAR HiSupport:1;
  UCHAR NormACA:1;
  UCHAR ReservedBit:1;
  UCHAR AERC:1;
  UCHAR AdditionalLength;
  UCHAR Reserved[2];
  UCHAR SoftReset:1;
  UCHAR CommandQueue:1;
  UCHAR Reserved2:1;
  UCHAR LinkedCommands:1;
  UCHAR Synchronous:1;
  UCHAR Wide16Bit:1;
  UCHAR Wide32Bit:1;
  UCHAR RelativeAddressing:1;
  UCHAR VendorId[8];
  UCHAR ProductId[16];
  UCHAR ProductRevisionLevel[4];
  UCHAR VendorSpecific[20];
  UCHAR Reserved3[40];
} INQUIRYDATA, *PINQUIRYDATA;
#else
typedef struct _INQUIRYDATA {
  UCHAR DeviceType:5;
  UCHAR DeviceTypeQualifier:3;
  UCHAR DeviceTypeModifier:7;
  UCHAR RemovableMedia:1;
  _ANONYMOUS_UNION union {
    UCHAR Versions;
    _ANONYMOUS_STRUCT struct {
      UCHAR ANSIVersion:3;
      UCHAR ECMAVersion:3;
      UCHAR ISOVersion:2;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
  UCHAR ResponseDataFormat:4;
  UCHAR HiSupport:1;
  UCHAR NormACA:1;
  UCHAR TerminateTask:1;
  UCHAR AERC:1;
  UCHAR AdditionalLength;
  UCHAR Reserved;
  UCHAR Addr16:1;
  UCHAR Addr32:1;
  UCHAR AckReqQ:1;
  UCHAR MediumChanger:1;
  UCHAR MultiPort:1;
  UCHAR ReservedBit2:1;
  UCHAR EnclosureServices:1;
  UCHAR ReservedBit3:1;
  UCHAR SoftReset:1;
  UCHAR CommandQueue:1;
  UCHAR TransferDisable:1;
  UCHAR LinkedCommands:1;
  UCHAR Synchronous:1;
  UCHAR Wide16Bit:1;
  UCHAR Wide32Bit:1;
  UCHAR RelativeAddressing:1;
  UCHAR VendorId[8];
  UCHAR ProductId[16];
  UCHAR ProductRevisionLevel[4];
  UCHAR VendorSpecific[20];
  UCHAR Reserved3[40];
} INQUIRYDATA, *PINQUIRYDATA;
#endif /* (NTDDI_VERSION < NTDDI_WINXP) */

#endif /* _INQUIRYDATA_DEFINED */

typedef struct _VPD_MEDIA_SERIAL_NUMBER_PAGE {
  UCHAR DeviceType:5;
  UCHAR DeviceTypeQualifier:3;
  UCHAR PageCode;
  UCHAR Reserved;
  UCHAR PageLength;
  UCHAR SerialNumber[0];
} VPD_MEDIA_SERIAL_NUMBER_PAGE, *PVPD_MEDIA_SERIAL_NUMBER_PAGE;

typedef struct _VPD_SERIAL_NUMBER_PAGE {
  UCHAR DeviceType:5;
  UCHAR DeviceTypeQualifier:3;
  UCHAR PageCode;
  UCHAR Reserved;
  UCHAR PageLength;
  UCHAR SerialNumber[0];
} VPD_SERIAL_NUMBER_PAGE, *PVPD_SERIAL_NUMBER_PAGE;

typedef enum _VPD_CODE_SET {
  VpdCodeSetReserved = 0,
  VpdCodeSetBinary = 1,
  VpdCodeSetAscii = 2,
  VpdCodeSetUTF8 = 3
} VPD_CODE_SET, *PVPD_CODE_SET;

typedef enum _VPD_ASSOCIATION {
  VpdAssocDevice = 0,
  VpdAssocPort = 1,
  VpdAssocTarget = 2,
  VpdAssocReserved1 = 3,
  VpdAssocReserved2 = 4
} VPD_ASSOCIATION, *PVPD_ASSOCIATION;

typedef enum _VPD_IDENTIFIER_TYPE {
  VpdIdentifierTypeVendorSpecific = 0,
  VpdIdentifierTypeVendorId = 1,
  VpdIdentifierTypeEUI64 = 2,
  VpdIdentifierTypeFCPHName = 3,
  VpdIdentifierTypePortRelative = 4,
  VpdIdentifierTypeTargetPortGroup = 5,
  VpdIdentifierTypeLogicalUnitGroup = 6,
  VpdIdentifierTypeMD5LogicalUnitId = 7,
  VpdIdentifierTypeSCSINameString = 8
} VPD_IDENTIFIER_TYPE, *PVPD_IDENTIFIER_TYPE;

typedef struct _VPD_IDENTIFICATION_DESCRIPTOR {
  UCHAR CodeSet:4;
  UCHAR Reserved:4;
  UCHAR IdentifierType:4;
  UCHAR Association:2;
  UCHAR Reserved2:2;
  UCHAR Reserved3;
  UCHAR IdentifierLength;
  UCHAR Identifier[0];
} VPD_IDENTIFICATION_DESCRIPTOR, *PVPD_IDENTIFICATION_DESCRIPTOR;

typedef struct _VPD_IDENTIFICATION_PAGE {
  UCHAR DeviceType:5;
  UCHAR DeviceTypeQualifier:3;
  UCHAR PageCode;
  UCHAR Reserved;
  UCHAR PageLength;
  UCHAR Descriptors[0];
} VPD_IDENTIFICATION_PAGE, *PVPD_IDENTIFICATION_PAGE;

typedef struct _VPD_SUPPORTED_PAGES_PAGE {
  UCHAR DeviceType:5;
  UCHAR DeviceTypeQualifier:3;
  UCHAR PageCode;
  UCHAR Reserved;
  UCHAR PageLength;
  UCHAR SupportedPageList[0];
} VPD_SUPPORTED_PAGES_PAGE, *PVPD_SUPPORTED_PAGES_PAGE;

typedef struct _PRI_REGISTRATION_LIST {
  UCHAR Generation[4];
  UCHAR AdditionalLength[4];
  UCHAR ReservationKeyList[0][8];
} PRI_REGISTRATION_LIST, *PPRI_REGISTRATION_LIST;

typedef struct _PRI_RESERVATION_DESCRIPTOR {
  UCHAR ReservationKey[8];
  UCHAR ScopeSpecificAddress[4];
  UCHAR Reserved;
  UCHAR Type:4;
  UCHAR Scope:4;
  UCHAR Obsolete[2];
} PRI_RESERVATION_DESCRIPTOR, *PPRI_RESERVATION_DESCRIPTOR;

typedef struct _PRI_RESERVATION_LIST {
  UCHAR Generation[4];
  UCHAR AdditionalLength[4];
  PRI_RESERVATION_DESCRIPTOR Reservations[0];
} PRI_RESERVATION_LIST, *PPRI_RESERVATION_LIST;

typedef struct _PRO_PARAMETER_LIST {
  UCHAR ReservationKey[8];
  UCHAR ServiceActionReservationKey[8];
  UCHAR ScopeSpecificAddress[4];
  UCHAR ActivatePersistThroughPowerLoss:1;
  UCHAR Reserved1:7;
  UCHAR Reserved2;
  UCHAR Obsolete[2];
} PRO_PARAMETER_LIST, *PPRO_PARAMETER_LIST;

typedef struct _SENSE_DATA {
  UCHAR ErrorCode:7;
  UCHAR Valid:1;
  UCHAR SegmentNumber;
  UCHAR SenseKey:4;
  UCHAR Reserved:1;
  UCHAR IncorrectLength:1;
  UCHAR EndOfMedia:1;
  UCHAR FileMark:1;
  UCHAR Information[4];
  UCHAR AdditionalSenseLength;
  UCHAR CommandSpecificInformation[4];
  UCHAR AdditionalSenseCode;
  UCHAR AdditionalSenseCodeQualifier;
  UCHAR FieldReplaceableUnitCode;
  UCHAR SenseKeySpecific[3];
} SENSE_DATA, *PSENSE_DATA;

/* Read Capacity Data. Returned in Big Endian format */
typedef struct _READ_CAPACITY_DATA {
  ULONG LogicalBlockAddress;
  ULONG BytesPerBlock;
} READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA;

typedef struct _READ_CAPACITY_DATA_EX {
  LARGE_INTEGER LogicalBlockAddress;
  ULONG BytesPerBlock;
} READ_CAPACITY_DATA_EX, *PREAD_CAPACITY_DATA_EX;

/* Read Block Limits Data. Returned in Big Endian format */
typedef struct _READ_BLOCK_LIMITS {
  UCHAR Reserved;
  UCHAR BlockMaximumSize[3];
  UCHAR BlockMinimumSize[2];
} READ_BLOCK_LIMITS_DATA, *PREAD_BLOCK_LIMITS_DATA;

typedef struct _READ_BUFFER_CAPACITY_DATA {
  UCHAR DataLength[2];
  UCHAR Reserved1;
  UCHAR BlockDataReturned:1;
  UCHAR Reserved4:7;
  UCHAR TotalBufferSize[4];
  UCHAR AvailableBufferSize[4];
} READ_BUFFER_CAPACITY_DATA, *PREAD_BUFFER_CAPACITY_DATA;

typedef struct _MODE_PARAMETER_HEADER {
  UCHAR ModeDataLength;
  UCHAR MediumType;
  UCHAR DeviceSpecificParameter;
  UCHAR BlockDescriptorLength;
} MODE_PARAMETER_HEADER, *PMODE_PARAMETER_HEADER;

typedef struct _MODE_PARAMETER_HEADER10 {
  UCHAR ModeDataLength[2];
  UCHAR MediumType;
  UCHAR DeviceSpecificParameter;
  UCHAR Reserved[2];
  UCHAR BlockDescriptorLength[2];
} MODE_PARAMETER_HEADER10, *PMODE_PARAMETER_HEADER10;

typedef struct _MODE_PARAMETER_BLOCK {
  UCHAR DensityCode;
  UCHAR NumberOfBlocks[3];
  UCHAR Reserved;
  UCHAR BlockLength[3];
} MODE_PARAMETER_BLOCK, *PMODE_PARAMETER_BLOCK;

typedef struct _MODE_DISCONNECT_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PageSavable:1;
  UCHAR PageLength;
  UCHAR BufferFullRatio;
  UCHAR BufferEmptyRatio;
  UCHAR BusInactivityLimit[2];
  UCHAR BusDisconnectTime[2];
  UCHAR BusConnectTime[2];
  UCHAR MaximumBurstSize[2];
  UCHAR DataTransferDisconnect:2;
  UCHAR Reserved2[3];
} MODE_DISCONNECT_PAGE, *PMODE_DISCONNECT_PAGE;

typedef struct _MODE_CACHING_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PageSavable:1;
  UCHAR PageLength;
  UCHAR ReadDisableCache:1;
  UCHAR MultiplicationFactor:1;
  UCHAR WriteCacheEnable:1;
  UCHAR Reserved2:5;
  UCHAR WriteRetensionPriority:4;
  UCHAR ReadRetensionPriority:4;
  UCHAR DisablePrefetchTransfer[2];
  UCHAR MinimumPrefetch[2];
  UCHAR MaximumPrefetch[2];
  UCHAR MaximumPrefetchCeiling[2];
} MODE_CACHING_PAGE, *PMODE_CACHING_PAGE;

typedef struct _MODE_CDROM_WRITE_PARAMETERS_PAGE2 {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PageSavable:1;
  UCHAR PageLength;
  UCHAR WriteType:4;
  UCHAR TestWrite:1;
  UCHAR LinkSizeValid:1;
  UCHAR BufferUnderrunFreeEnabled:1;
  UCHAR Reserved2:1;
  UCHAR TrackMode:4;
  UCHAR Copy:1;
  UCHAR FixedPacket:1;
  UCHAR MultiSession:2;
  UCHAR DataBlockType:4;
  UCHAR Reserved3:4;
  UCHAR LinkSize;
  UCHAR Reserved4;
  UCHAR HostApplicationCode:6;
  UCHAR Reserved5:2;
  UCHAR SessionFormat;
  UCHAR Reserved6;
  UCHAR PacketSize[4];
  UCHAR AudioPauseLength[2];
  UCHAR MediaCatalogNumber[16];
  UCHAR ISRC[16];
  UCHAR SubHeaderData[4];
} MODE_CDROM_WRITE_PARAMETERS_PAGE2, *PMODE_CDROM_WRITE_PARAMETERS_PAGE2;

typedef struct _MODE_MRW_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PageSavable:1;
  UCHAR PageLength;
  UCHAR Reserved1;
  UCHAR LbaSpace:1;
  UCHAR Reserved2:7;
  UCHAR Reserved3[4];
} MODE_MRW_PAGE, *PMODE_MRW_PAGE;

typedef struct _MODE_FLEXIBLE_DISK_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PageSavable:1;
  UCHAR PageLength;
  UCHAR TransferRate[2];
  UCHAR NumberOfHeads;
  UCHAR SectorsPerTrack;
  UCHAR BytesPerSector[2];
  UCHAR NumberOfCylinders[2];
  UCHAR StartWritePrecom[2];
  UCHAR StartReducedCurrent[2];
  UCHAR StepRate[2];
  UCHAR StepPluseWidth;
  UCHAR HeadSettleDelay[2];
  UCHAR MotorOnDelay;
  UCHAR MotorOffDelay;
  UCHAR Reserved2:5;
  UCHAR MotorOnAsserted:1;
  UCHAR StartSectorNumber:1;
  UCHAR TrueReadySignal:1;
  UCHAR StepPlusePerCyclynder:4;
  UCHAR Reserved3:4;
  UCHAR WriteCompenstation;
  UCHAR HeadLoadDelay;
  UCHAR HeadUnloadDelay;
  UCHAR Pin2Usage:4;
  UCHAR Pin34Usage:4;
  UCHAR Pin1Usage:4;
  UCHAR Pin4Usage:4;
  UCHAR MediumRotationRate[2];
  UCHAR Reserved4[2];
} MODE_FLEXIBLE_DISK_PAGE, *PMODE_FLEXIBLE_DISK_PAGE;

typedef struct _MODE_FORMAT_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PageSavable:1;
  UCHAR PageLength;
  UCHAR TracksPerZone[2];
  UCHAR AlternateSectorsPerZone[2];
  UCHAR AlternateTracksPerZone[2];
  UCHAR AlternateTracksPerLogicalUnit[2];
  UCHAR SectorsPerTrack[2];
  UCHAR BytesPerPhysicalSector[2];
  UCHAR Interleave[2];
  UCHAR TrackSkewFactor[2];
  UCHAR CylinderSkewFactor[2];
  UCHAR Reserved2:4;
  UCHAR SurfaceFirst:1;
  UCHAR RemovableMedia:1;
  UCHAR HardSectorFormating:1;
  UCHAR SoftSectorFormating:1;
  UCHAR Reserved3[3];
} MODE_FORMAT_PAGE, *PMODE_FORMAT_PAGE;

typedef struct _MODE_RIGID_GEOMETRY_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PageSavable:1;
  UCHAR PageLength;
  UCHAR NumberOfCylinders[3];
  UCHAR NumberOfHeads;
  UCHAR StartWritePrecom[3];
  UCHAR StartReducedCurrent[3];
  UCHAR DriveStepRate[2];
  UCHAR LandZoneCyclinder[3];
  UCHAR RotationalPositionLock:2;
  UCHAR Reserved2:6;
  UCHAR RotationOffset;
  UCHAR Reserved3;
  UCHAR RoataionRate[2];
  UCHAR Reserved4[2];
} MODE_RIGID_GEOMETRY_PAGE, *PMODE_RIGID_GEOMETRY_PAGE;

typedef struct _MODE_READ_WRITE_RECOVERY_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved1:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  UCHAR DCRBit:1;
  UCHAR DTEBit:1;
  UCHAR PERBit:1;
  UCHAR EERBit:1;
  UCHAR RCBit:1;
  UCHAR TBBit:1;
  UCHAR ARRE:1;
  UCHAR AWRE:1;
  UCHAR ReadRetryCount;
  UCHAR Reserved4[4];
  UCHAR WriteRetryCount;
  UCHAR Reserved5[3];
} MODE_READ_WRITE_RECOVERY_PAGE, *PMODE_READ_WRITE_RECOVERY_PAGE;

typedef struct _MODE_READ_RECOVERY_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved1:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  UCHAR DCRBit:1;
  UCHAR DTEBit:1;
  UCHAR PERBit:1;
  UCHAR Reserved2:1;
  UCHAR RCBit:1;
  UCHAR TBBit:1;
  UCHAR Reserved3:2;
  UCHAR ReadRetryCount;
  UCHAR Reserved4[4];
} MODE_READ_RECOVERY_PAGE, *PMODE_READ_RECOVERY_PAGE;

typedef struct _MODE_INFO_EXCEPTIONS {
  UCHAR PageCode:6;
  UCHAR Reserved1:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  _ANONYMOUS_UNION union {
    UCHAR Flags;
    _ANONYMOUS_STRUCT struct {
      UCHAR LogErr:1;
      UCHAR Reserved2:1;
      UCHAR Test:1;
      UCHAR Dexcpt:1;
      UCHAR Reserved3:3;
      UCHAR Perf:1;
    } DUMMYSTRUCTNAME;
  } DUMMYUNIONNAME;
  UCHAR ReportMethod:4;
  UCHAR Reserved4:4;
  UCHAR IntervalTimer[4];
  UCHAR ReportCount[4];
} MODE_INFO_EXCEPTIONS, *PMODE_INFO_EXCEPTIONS;

typedef struct _POWER_CONDITION_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  UCHAR Reserved2;
  UCHAR Standby:1;
  UCHAR Idle:1;
  UCHAR Reserved3:6;
  UCHAR IdleTimer[4];
  UCHAR StandbyTimer[4];
} POWER_CONDITION_PAGE, *PPOWER_CONDITION_PAGE;

typedef struct _CDDA_OUTPUT_PORT {
  UCHAR ChannelSelection:4;
  UCHAR Reserved:4;
  UCHAR Volume;
} CDDA_OUTPUT_PORT, *PCDDA_OUTPUT_PORT;

typedef struct _CDAUDIO_CONTROL_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  UCHAR Reserved2:1;
  UCHAR StopOnTrackCrossing:1;
  UCHAR Immediate:1;
  UCHAR Reserved3:5;
  UCHAR Reserved4[3];
  UCHAR Obsolete[2];
  CDDA_OUTPUT_PORT CDDAOutputPorts[4];
} CDAUDIO_CONTROL_PAGE, *PCDAUDIO_CONTROL_PAGE;

typedef struct _CDVD_FEATURE_SET_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  UCHAR CDAudio[2];
  UCHAR EmbeddedChanger[2];
  UCHAR PacketSMART[2];
  UCHAR PersistantPrevent[2];
  UCHAR EventStatusNotification[2];
  UCHAR DigitalOutput[2];
  UCHAR CDSequentialRecordable[2];
  UCHAR DVDSequentialRecordable[2];
  UCHAR RandomRecordable[2];
  UCHAR KeyExchange[2];
  UCHAR Reserved2[2];
} CDVD_FEATURE_SET_PAGE, *PCDVD_FEATURE_SET_PAGE;

typedef struct _CDVD_INACTIVITY_TIMEOUT_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  UCHAR Reserved2[2];
  UCHAR SWPP:1;
  UCHAR DISP:1;
  UCHAR Reserved3:6;
  UCHAR Reserved4;
  UCHAR GroupOneMinimumTimeout[2];
  UCHAR GroupTwoMinimumTimeout[2];
} CDVD_INACTIVITY_TIMEOUT_PAGE, *PCDVD_INACTIVITY_TIMEOUT_PAGE;

typedef struct _CDVD_CAPABILITIES_PAGE {
  UCHAR PageCode:6;
  UCHAR Reserved:1;
  UCHAR PSBit:1;
  UCHAR PageLength;
  UCHAR CDRRead:1;
  UCHAR CDERead:1;
  UCHAR Method2:1;
  UCHAR DVDROMRead:1;
  UCHAR DVDRRead:1;
  UCHAR DVDRAMRead:1;
  UCHAR Reserved2:2;
  UCHAR CDRWrite:1;
  UCHAR CDEWrite:1;
  UCHAR TestWrite:1;
  UCHAR Reserved3:1;
  UCHAR DVDRWrite:1;
  UCHAR DVDRAMWrite:1;
  UCHAR Reserved4:2;
  UCHAR AudioPlay:1;
  UCHAR Composite:1;
  UCHAR DigitalPortOne:1;
  UCHAR DigitalPortTwo:1;
  UCHAR Mode2Form1:1;
  UCHAR Mode2Form2:1;
  UCHAR MultiSession:1;
  UCHAR BufferUnderrunFree:1;
  UCHAR CDDA:1;
  UCHAR CDDAAccurate:1;
  UCHAR RWSupported:1;
  UCHAR RWDeinterleaved:1;
  UCHAR C2Pointers:1;
  UCHAR ISRC:1;
  UCHAR UPC:1;
  UCHAR ReadBarCodeCapable:1;
  UCHAR Lock:1;
  UCHAR LockState:1;
  UCHAR PreventJumper:1;
  UCHAR Eject:1;
  UCHAR Reserved6:1;
  UCHAR LoadingMechanismType:3;
  UCHAR SeparateVolume:1;
  UCHAR SeperateChannelMute:1;
  UCHAR SupportsDiskPresent:1;
  UCHAR SWSlotSelection:1;
  UCHAR SideChangeCapable:1;
  UCHAR RWInLeadInReadable:1;
  UCHAR Reserved7:2;
  _ANONYMOUS_UNION union {
    UCHAR ReadSpeedMaximum[2];
    UCHAR ObsoleteReserved[2];
  } DUMMYUNIONNAME;
  UCHAR NumberVolumeLevels[2];
  UCHAR BufferSize[2];
  _ANONYMOUS_UNION union {
    UCHAR ReadSpeedCurrent[2];
    UCHAR ObsoleteReserved2[2];
  } DUMMYUNIONNAME2;
  UCHAR ObsoleteReserved3;
  UCHAR Reserved8:1;
  UCHAR BCK:1;
  UCHAR RCK:1;
  UCHAR LSBF:1;
  UCHAR Length:2;
  UCHAR Reserved9:2;
  _ANONYMOUS_UNION union {
    UCHAR WriteSpeedMaximum[2];
    UCHAR ObsoleteReserved4[2];
  } DUMMYUNIONNAME3;
  _ANONYMOUS_UNION union {
    UCHAR WriteSpeedCurrent[2];
    UCHAR ObsoleteReserved11[2];
  } DUMMYUNIONNAME4;
  _ANONYMOUS_UNION union {
    UCHAR CopyManagementRevision[2];
    UCHAR Reserved10[2];
  } DUMMYUNIONNAME5;
} CDVD_CAPABILITIES_PAGE, *PCDVD_CAPABILITIES_PAGE;

typedef struct _LUN_LIST {
  UCHAR LunListLength[4];
  UCHAR Reserved[4];
  UCHAR Lun[0][8];
} LUN_LIST, *PLUN_LIST;

typedef struct _MODE_PARM_READ_WRITE {
  MODE_PARAMETER_HEADER ParameterListHeader;
  MODE_PARAMETER_BLOCK ParameterListBlock;
} MODE_PARM_READ_WRITE_DATA, *PMODE_PARM_READ_WRITE_DATA;

typedef struct _PORT_OUTPUT {
  UCHAR ChannelSelection;
  UCHAR Volume;
} PORT_OUTPUT, *PPORT_OUTPUT;

typedef struct _AUDIO_OUTPUT {
  UCHAR CodePage;
  UCHAR ParameterLength;
  UCHAR Immediate;
  UCHAR Reserved[2];
  UCHAR LbaFormat;
  UCHAR LogicalBlocksPerSecond[2];
  PORT_OUTPUT PortOutput[4];
} AUDIO_OUTPUT, *PAUDIO_OUTPUT;

/* Atapi 2.5 changers */
typedef struct _MECHANICAL_STATUS_INFORMATION_HEADER {
  UCHAR CurrentSlot:5;
  UCHAR ChangerState:2;
  UCHAR Fault:1;
  UCHAR Reserved:5;
  UCHAR MechanismState:3;
  UCHAR CurrentLogicalBlockAddress[3];
  UCHAR NumberAvailableSlots;
  UCHAR SlotTableLength[2];
} MECHANICAL_STATUS_INFORMATION_HEADER, *PMECHANICAL_STATUS_INFORMATION_HEADER;

typedef struct _SLOT_TABLE_INFORMATION {
  UCHAR DiscChanged:1;
  UCHAR Reserved:6;
  UCHAR DiscPresent:1;
  UCHAR Reserved2[3];
} SLOT_TABLE_INFORMATION, *PSLOT_TABLE_INFORMATION;

typedef struct _MECHANICAL_STATUS {
  MECHANICAL_STATUS_INFORMATION_HEADER MechanicalStatusHeader;
  SLOT_TABLE_INFORMATION SlotTableInfo[1];
} MECHANICAL_STATUS, *PMECHANICAL_STATUS;

/* Tape definitions */
typedef struct _TAPE_POSITION_DATA {
  UCHAR Reserved1:2;
  UCHAR BlockPositionUnsupported:1;
  UCHAR Reserved2:3;
  UCHAR EndOfPartition:1;
  UCHAR BeginningOfPartition:1;
  UCHAR PartitionNumber;
  USHORT Reserved3;
  UCHAR FirstBlock[4];
  UCHAR LastBlock[4];
  UCHAR Reserved4;
  UCHAR NumberOfBlocks[3];
  UCHAR NumberOfBytes[4];
} TAPE_POSITION_DATA, *PTAPE_POSITION_DATA;

/* This structure is used to convert little endian ULONGs
   to SCSI CDB big endians values. */
typedef union _EIGHT_BYTE {
  _ANONYMOUS_STRUCT struct {
    UCHAR Byte0;
    UCHAR Byte1;
    UCHAR Byte2;
    UCHAR Byte3;
    UCHAR Byte4;
    UCHAR Byte5;
    UCHAR Byte6;
    UCHAR Byte7;
  } DUMMYSTRUCTNAME;
  ULONGLONG AsULongLong;
} EIGHT_BYTE, *PEIGHT_BYTE;

typedef union _FOUR_BYTE {
  _ANONYMOUS_STRUCT struct {
    UCHAR Byte0;
    UCHAR Byte1;
    UCHAR Byte2;
    UCHAR Byte3;
  } DUMMYSTRUCTNAME;
  ULONG AsULong;
} FOUR_BYTE, *PFOUR_BYTE;

typedef union _TWO_BYTE {
  _ANONYMOUS_STRUCT struct {
    UCHAR Byte0;
    UCHAR Byte1;
  } DUMMYSTRUCTNAME;
  USHORT AsUShort;
} TWO_BYTE, *PTWO_BYTE;

/* Byte reversing macro for converting between
   big- and little-endian formats */
#define REVERSE_BYTES_QUAD(Destination, Source) { \
  PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \
  PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \
  _val1->Byte7 = _val2->Byte0; \
  _val1->Byte6 = _val2->Byte1; \
  _val1->Byte5 = _val2->Byte2; \
  _val1->Byte4 = _val2->Byte3; \
  _val1->Byte3 = _val2->Byte4; \
  _val1->Byte2 = _val2->Byte5; \
  _val1->Byte1 = _val2->Byte6; \
  _val1->Byte0 = _val2->Byte7; \
}

#define REVERSE_BYTES(Destination, Source) { \
  PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \
  PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \
  _val1->Byte3 = _val2->Byte0; \
  _val1->Byte2 = _val2->Byte1; \
  _val1->Byte1 = _val2->Byte2; \
  _val1->Byte0 = _val2->Byte3; \
}

#define REVERSE_BYTES_SHORT(Destination, Source) { \
  PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \
  PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \
  _val1->Byte1 = _val2->Byte0; \
  _val1->Byte0 = _val2->Byte1; \
}

#define REVERSE_SHORT(Short) { \
  UCHAR _val; \
  PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \
  _val = _val2->Byte0; \
  _val2->Byte0 = _val2->Byte1; \
  _val2->Byte1 = _val; \
}

#define REVERSE_LONG(Long) { \
  UCHAR _val; \
  PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \
  _val = _val2->Byte3; \
  _val2->Byte3 = _val2->Byte0; \
  _val2->Byte0 = _val; \
  _val = _val2->Byte2; \
  _val2->Byte2 = _val2->Byte1; \
  _val2->Byte1 = _val; \
}

#define WHICH_BIT(Data, Bit) { \
  UCHAR _val; \
  for (_val = 0; _val < 32; _val++) { \
    if (((Data) >> _val) == 1) { \
      break; \
    } \
  } \
  ASSERT(_val != 32); \
  (Bit) = _val; \
}

/* FIXME : This structure doesn't exist in the official header */
typedef struct _MODE_CDROM_WRITE_PARAMETERS_PAGE {
  UCHAR PageLength;
  UCHAR WriteType:4;
  UCHAR TestWrite:1;
  UCHAR LinkSizeValid:1;
  UCHAR BufferUnderrunFreeEnabled:1;
  UCHAR Reserved2:1;
  UCHAR TrackMode:4;
  UCHAR Copy:1;
  UCHAR FixedPacket:1;
  UCHAR MultiSession:2;
  UCHAR DataBlockType:4;
  UCHAR Reserved3:4;
  UCHAR LinkSize;
  UCHAR Reserved4;
  UCHAR HostApplicationCode:6;
  UCHAR Reserved5:2;
  UCHAR SessionFormat;
  UCHAR Reserved6;
  UCHAR PacketSize[4];
  UCHAR AudioPauseLength[2];
  UCHAR Reserved7:7;
  UCHAR MediaCatalogNumberValid:1;
  UCHAR MediaCatalogNumber[13];
  UCHAR MediaCatalogNumberZero;
  UCHAR MediaCatalogNumberAFrame;
  UCHAR Reserved8:7;
  UCHAR ISRCValid:1;
  UCHAR ISRCCountry[2];
  UCHAR ISRCOwner[3];
  UCHAR ISRCRecordingYear[2];
  UCHAR ISRCSerialNumber[5];
  UCHAR ISRCZero;
  UCHAR ISRCAFrame;
  UCHAR ISRCReserved;
  UCHAR SubHeaderData[4];
} MODE_CDROM_WRITE_PARAMETERS_PAGE, *PMODE_CDROM_WRITE_PARAMETERS_PAGE;

#ifdef __cplusplus
}
#endif

#endif /* _NTSCSI_ */
