Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenscsi.h
Go to the documentation of this file.
00001 /* 00002 * scsi.h 00003 * 00004 * SCSI port and class interface. 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef _NTSCSI_ 00024 #define _NTSCSI_ 00025 00026 #ifdef __cplusplus 00027 extern "C" { 00028 #endif 00029 00030 #ifndef _NTSCSI_USER_MODE_ 00031 #include "srb.h" 00032 #endif 00033 00034 #define NOTIFICATION_OPERATIONAL_CHANGE_CLASS_MASK 0x02 00035 #define NOTIFICATION_POWER_MANAGEMENT_CLASS_MASK 0x04 00036 #define NOTIFICATION_EXTERNAL_REQUEST_CLASS_MASK 0x08 00037 #define NOTIFICATION_MEDIA_STATUS_CLASS_MASK 0x10 00038 #define NOTIFICATION_MULTI_HOST_CLASS_MASK 0x20 00039 #define NOTIFICATION_DEVICE_BUSY_CLASS_MASK 0x40 00040 00041 00042 #define NOTIFICATION_NO_CLASS_EVENTS 0x0 00043 #define NOTIFICATION_OPERATIONAL_CHANGE_CLASS_EVENTS 0x1 00044 #define NOTIFICATION_POWER_MANAGEMENT_CLASS_EVENTS 0x2 00045 #define NOTIFICATION_EXTERNAL_REQUEST_CLASS_EVENTS 0x3 00046 #define NOTIFICATION_MEDIA_STATUS_CLASS_EVENTS 0x4 00047 #define NOTIFICATION_MULTI_HOST_CLASS_EVENTS 0x5 00048 #define NOTIFICATION_DEVICE_BUSY_CLASS_EVENTS 0x6 00049 00050 #define NOTIFICATION_OPERATIONAL_EVENT_NO_CHANGE 0x0 00051 #define NOTIFICATION_OPERATIONAL_EVENT_CHANGE_REQUESTED 0x1 00052 #define NOTIFICATION_OPERATIONAL_EVENT_CHANGE_OCCURRED 0x2 00053 00054 #define NOTIFICATION_OPERATIONAL_STATUS_AVAILABLE 0x0 00055 #define NOTIFICATION_OPERATIONAL_STATUS_TEMPORARY_BUSY 0x1 00056 #define NOTIFICATION_OPERATIONAL_STATUS_EXTENDED_BUSY 0x2 00057 00058 #define NOTIFICATION_OPERATIONAL_OPCODE_NONE 0x0 00059 #define NOTIFICATION_OPERATIONAL_OPCODE_FEATURE_CHANGE 0x1 00060 #define NOTIFICATION_OPERATIONAL_OPCODE_FEATURE_ADDED 0x2 00061 #define NOTIFICATION_OPERATIONAL_OPCODE_UNIT_RESET 0x3 00062 #define NOTIFICATION_OPERATIONAL_OPCODE_FIRMWARE_CHANGED 0x4 00063 #define NOTIFICATION_OPERATIONAL_OPCODE_INQUIRY_CHANGED 0x5 00064 00065 #define NOTIFICATION_POWER_EVENT_NO_CHANGE 0x0 00066 #define NOTIFICATION_POWER_EVENT_CHANGE_SUCCEEDED 0x1 00067 #define NOTIFICATION_POWER_EVENT_CHANGE_FAILED 0x2 00068 00069 #define NOTIFICATION_POWER_STATUS_ACTIVE 0x1 00070 #define NOTIFICATION_POWER_STATUS_IDLE 0x2 00071 #define NOTIFICATION_POWER_STATUS_STANDBY 0x3 00072 #define NOTIFICATION_POWER_STATUS_SLEEP 0x4 00073 00074 #define NOTIFICATION_MEDIA_EVENT_NO_EVENT 0x0 00075 #define NOTIFICATION_EXTERNAL_EVENT_NO_CHANGE 0x0 00076 #define NOTIFICATION_EXTERNAL_EVENT_BUTTON_DOWN 0x1 00077 #define NOTIFICATION_EXTERNAL_EVENT_BUTTON_UP 0x2 00078 #define NOTIFICATION_EXTERNAL_EVENT_EXTERNAL 0x3 00079 00080 #define NOTIFICATION_EXTERNAL_STATUS_READY 0x0 00081 #define NOTIFICATION_EXTERNAL_STATUS_PREVENT 0x1 00082 00083 #define NOTIFICATION_EXTERNAL_REQUEST_NONE 0x0000 00084 #define NOTIFICATION_EXTERNAL_REQUEST_QUEUE_OVERRUN 0x0001 00085 #define NOTIFICATION_EXTERNAL_REQUEST_PLAY 0x0101 00086 #define NOTIFICATION_EXTERNAL_REQUEST_REWIND_BACK 0x0102 00087 #define NOTIFICATION_EXTERNAL_REQUEST_FAST_FORWARD 0x0103 00088 #define NOTIFICATION_EXTERNAL_REQUEST_PAUSE 0x0104 00089 #define NOTIFICATION_EXTERNAL_REQUEST_STOP 0x0106 00090 #define NOTIFICATION_EXTERNAL_REQUEST_ASCII_LOW 0x0200 00091 #define NOTIFICATION_EXTERNAL_REQUEST_ASCII_HIGH 0x02ff 00092 00093 #define NOTIFICATION_MEDIA_EVENT_NO_CHANGE 0x0 00094 #define NOTIFICATION_MEDIA_EVENT_EJECT_REQUEST 0x1 00095 #define NOTIFICATION_MEDIA_EVENT_NEW_MEDIA 0x2 00096 #define NOTIFICATION_MEDIA_EVENT_MEDIA_REMOVAL 0x3 00097 #define NOTIFICATION_MEDIA_EVENT_MEDIA_CHANGE 0x4 00098 00099 #define NOTIFICATION_BUSY_EVENT_NO_EVENT 0x0 00100 #define NOTIFICATION_MULTI_HOST_EVENT_NO_CHANGE 0x0 00101 #define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_REQUEST 0x1 00102 #define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_GRANT 0x2 00103 #define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_RELEASE 0x3 00104 00105 #define NOTIFICATION_MULTI_HOST_STATUS_READY 0x0 00106 #define NOTIFICATION_MULTI_HOST_STATUS_PREVENT 0x1 00107 00108 #define NOTIFICATION_MULTI_HOST_PRIORITY_NO_REQUESTS 0x0 00109 #define NOTIFICATION_MULTI_HOST_PRIORITY_LOW 0x1 00110 #define NOTIFICATION_MULTI_HOST_PRIORITY_MEDIUM 0x2 00111 #define NOTIFICATION_MULTI_HOST_PRIORITY_HIGH 0x3 00112 00113 #define NOTIFICATION_BUSY_EVENT_NO_EVENT 0x0 00114 #define NOTIFICATION_BUSY_EVENT_NO_CHANGE 0x0 00115 #define NOTIFICATION_BUSY_EVENT_BUSY 0x1 00116 00117 #define NOTIFICATION_BUSY_STATUS_NO_EVENT 0x0 00118 #define NOTIFICATION_BUSY_STATUS_POWER 0x1 00119 #define NOTIFICATION_BUSY_STATUS_IMMEDIATE 0x2 00120 #define NOTIFICATION_BUSY_STATUS_DEFERRED 0x3 00121 00122 #define DVD_FORMAT_LEAD_IN 0x00 00123 #define DVD_FORMAT_COPYRIGHT 0x01 00124 #define DVD_FORMAT_DISK_KEY 0x02 00125 #define DVD_FORMAT_BCA 0x03 00126 #define DVD_FORMAT_MANUFACTURING 0x04 00127 00128 #define DVD_REPORT_AGID 0x00 00129 #define DVD_CHALLENGE_KEY 0x01 00130 #define DVD_KEY_1 0x02 00131 #define DVD_KEY_2 0x03 00132 #define DVD_TITLE_KEY 0x04 00133 #define DVD_REPORT_ASF 0x05 00134 #define DVD_INVALIDATE_AGID 0x3F 00135 00136 #define BLANK_FULL 0x0 00137 #define BLANK_MINIMAL 0x1 00138 #define BLANK_TRACK 0x2 00139 #define BLANK_UNRESERVE_TRACK 0x3 00140 #define BLANK_TAIL 0x4 00141 #define BLANK_UNCLOSE_SESSION 0x5 00142 #define BLANK_SESSION 0x6 00143 00144 #define CD_EXPECTED_SECTOR_ANY 0x0 00145 #define CD_EXPECTED_SECTOR_CDDA 0x1 00146 #define CD_EXPECTED_SECTOR_MODE1 0x2 00147 #define CD_EXPECTED_SECTOR_MODE2 0x3 00148 #define CD_EXPECTED_SECTOR_MODE2_FORM1 0x4 00149 #define CD_EXPECTED_SECTOR_MODE2_FORM2 0x5 00150 00151 #define DISK_STATUS_EMPTY 0x00 00152 #define DISK_STATUS_INCOMPLETE 0x01 00153 #define DISK_STATUS_COMPLETE 0x02 00154 #define DISK_STATUS_OTHERS 0x03 00155 00156 #define LAST_SESSION_EMPTY 0x00 00157 #define LAST_SESSION_INCOMPLETE 0x01 00158 #define LAST_SESSION_RESERVED_DAMAGED 0x02 00159 #define LAST_SESSION_COMPLETE 0x03 00160 00161 #define DISK_TYPE_CDDA 0x00 00162 #define DISK_TYPE_CDI 0x10 00163 #define DISK_TYPE_XA 0x20 00164 #define DISK_TYPE_UNDEFINED 0xFF 00165 00166 #define DISC_BGFORMAT_STATE_NONE 0x0 00167 #define DISC_BGFORMAT_STATE_INCOMPLETE 0x1 00168 #define DISC_BGFORMAT_STATE_RUNNING 0x2 00169 #define DISC_BGFORMAT_STATE_COMPLETE 0x3 00170 00171 #define DATA_BLOCK_MODE0 0x0 00172 #define DATA_BLOCK_MODE1 0x1 00173 #define DATA_BLOCK_MODE2 0x2 00174 00175 /* READ_TOC formats */ 00176 #define READ_TOC_FORMAT_TOC 0x00 00177 #define READ_TOC_FORMAT_SESSION 0x01 00178 #define READ_TOC_FORMAT_FULL_TOC 0x02 00179 #define READ_TOC_FORMAT_PMA 0x03 00180 #define READ_TOC_FORMAT_ATIP 0x04 00181 00182 #define CDB6GENERIC_LENGTH 6 00183 #define CDB10GENERIC_LENGTH 10 00184 #define CDB12GENERIC_LENGTH 12 00185 00186 #define SETBITON 1 00187 #define SETBITOFF 0 00188 00189 /* Mode Sense/Select page constants */ 00190 #define MODE_PAGE_VENDOR_SPECIFIC 0x00 00191 #define MODE_PAGE_ERROR_RECOVERY 0x01 00192 #define MODE_PAGE_DISCONNECT 0x02 00193 #define MODE_PAGE_FORMAT_DEVICE 0x03 00194 #define MODE_PAGE_MRW 0x03 00195 #define MODE_PAGE_RIGID_GEOMETRY 0x04 00196 #define MODE_PAGE_FLEXIBILE 0x05 00197 #define MODE_PAGE_WRITE_PARAMETERS 0x05 00198 #define MODE_PAGE_VERIFY_ERROR 0x07 00199 #define MODE_PAGE_CACHING 0x08 00200 #define MODE_PAGE_PERIPHERAL 0x09 00201 #define MODE_PAGE_CONTROL 0x0A 00202 #define MODE_PAGE_MEDIUM_TYPES 0x0B 00203 #define MODE_PAGE_NOTCH_PARTITION 0x0C 00204 #define MODE_PAGE_CD_AUDIO_CONTROL 0x0E 00205 #define MODE_PAGE_DATA_COMPRESS 0x0F 00206 #define MODE_PAGE_DEVICE_CONFIG 0x10 00207 #define MODE_PAGE_XOR_CONTROL 0x10 00208 #define MODE_PAGE_MEDIUM_PARTITION 0x11 00209 #define MODE_PAGE_ENCLOSURE_SERVICES_MANAGEMENT 0x14 00210 #define MODE_PAGE_EXTENDED 0x15 00211 #define MODE_PAGE_EXTENDED_DEVICE_SPECIFIC 0x16 00212 #define MODE_PAGE_CDVD_FEATURE_SET 0x18 00213 #define MODE_PAGE_PROTOCOL_SPECIFIC_LUN 0x18 00214 #define MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19 00215 #define MODE_PAGE_POWER_CONDITION 0x1A 00216 #define MODE_PAGE_LUN_MAPPING 0x1B 00217 #define MODE_PAGE_FAULT_REPORTING 0x1C 00218 #define MODE_PAGE_CDVD_INACTIVITY 0x1D 00219 #define MODE_PAGE_ELEMENT_ADDRESS 0x1D 00220 #define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E 00221 #define MODE_PAGE_DEVICE_CAPABILITIES 0x1F 00222 #define MODE_PAGE_CAPABILITIES 0x2A 00223 00224 #define MODE_SENSE_RETURN_ALL 0x3f 00225 00226 #define MODE_SENSE_CURRENT_VALUES 0x00 00227 #define MODE_SENSE_CHANGEABLE_VALUES 0x40 00228 #define MODE_SENSE_DEFAULT_VAULES 0x80 00229 #define MODE_SENSE_SAVED_VALUES 0xc0 00230 00231 /* SCSI CDB operation codes */ 00232 #define SCSIOP_TEST_UNIT_READY 0x00 00233 #define SCSIOP_REZERO_UNIT 0x01 00234 #define SCSIOP_REWIND 0x01 00235 #define SCSIOP_REQUEST_BLOCK_ADDR 0x02 00236 #define SCSIOP_REQUEST_SENSE 0x03 00237 #define SCSIOP_FORMAT_UNIT 0x04 00238 #define SCSIOP_READ_BLOCK_LIMITS 0x05 00239 #define SCSIOP_REASSIGN_BLOCKS 0x07 00240 #define SCSIOP_INIT_ELEMENT_STATUS 0x07 00241 #define SCSIOP_READ6 0x08 00242 #define SCSIOP_RECEIVE 0x08 00243 #define SCSIOP_WRITE6 0x0A 00244 #define SCSIOP_PRINT 0x0A 00245 #define SCSIOP_SEND 0x0A 00246 #define SCSIOP_SEEK6 0x0B 00247 #define SCSIOP_TRACK_SELECT 0x0B 00248 #define SCSIOP_SLEW_PRINT 0x0B 00249 #define SCSIOP_SET_CAPACITY 0x0B 00250 #define SCSIOP_SEEK_BLOCK 0x0C 00251 #define SCSIOP_PARTITION 0x0D 00252 #define SCSIOP_READ_REVERSE 0x0F 00253 #define SCSIOP_WRITE_FILEMARKS 0x10 00254 #define SCSIOP_FLUSH_BUFFER 0x10 00255 #define SCSIOP_SPACE 0x11 00256 #define SCSIOP_INQUIRY 0x12 00257 #define SCSIOP_VERIFY6 0x13 00258 #define SCSIOP_RECOVER_BUF_DATA 0x14 00259 #define SCSIOP_MODE_SELECT 0x15 00260 #define SCSIOP_RESERVE_UNIT 0x16 00261 #define SCSIOP_RELEASE_UNIT 0x17 00262 #define SCSIOP_COPY 0x18 00263 #define SCSIOP_ERASE 0x19 00264 #define SCSIOP_MODE_SENSE 0x1A 00265 #define SCSIOP_START_STOP_UNIT 0x1B 00266 #define SCSIOP_STOP_PRINT 0x1B 00267 #define SCSIOP_LOAD_UNLOAD 0x1B 00268 #define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C 00269 #define SCSIOP_SEND_DIAGNOSTIC 0x1D 00270 #define SCSIOP_MEDIUM_REMOVAL 0x1E 00271 00272 #define SCSIOP_READ_FORMATTED_CAPACITY 0x23 00273 #define SCSIOP_READ_CAPACITY 0x25 00274 #define SCSIOP_READ 0x28 00275 #define SCSIOP_WRITE 0x2A 00276 #define SCSIOP_SEEK 0x2B 00277 #define SCSIOP_LOCATE 0x2B 00278 #define SCSIOP_POSITION_TO_ELEMENT 0x2B 00279 #define SCSIOP_WRITE_VERIFY 0x2E 00280 #define SCSIOP_VERIFY 0x2F 00281 #define SCSIOP_SEARCH_DATA_HIGH 0x30 00282 #define SCSIOP_SEARCH_DATA_EQUAL 0x31 00283 #define SCSIOP_SEARCH_DATA_LOW 0x32 00284 #define SCSIOP_SET_LIMITS 0x33 00285 #define SCSIOP_READ_POSITION 0x34 00286 #define SCSIOP_SYNCHRONIZE_CACHE 0x35 00287 #define SCSIOP_COMPARE 0x39 00288 #define SCSIOP_COPY_COMPARE 0x3A 00289 #define SCSIOP_WRITE_DATA_BUFF 0x3B 00290 #define SCSIOP_READ_DATA_BUFF 0x3C 00291 #define SCSIOP_WRITE_LONG 0x3F 00292 #define SCSIOP_CHANGE_DEFINITION 0x40 00293 #define SCSIOP_WRITE_SAME 0x41 00294 #define SCSIOP_READ_SUB_CHANNEL 0x42 00295 #define SCSIOP_READ_TOC 0x43 00296 #define SCSIOP_READ_HEADER 0x44 00297 #define SCSIOP_REPORT_DENSITY_SUPPORT 0x44 00298 #define SCSIOP_PLAY_AUDIO 0x45 00299 #define SCSIOP_GET_CONFIGURATION 0x46 00300 #define SCSIOP_PLAY_AUDIO_MSF 0x47 00301 #define SCSIOP_PLAY_TRACK_INDEX 0x48 00302 #define SCSIOP_PLAY_TRACK_RELATIVE 0x49 00303 #define SCSIOP_GET_EVENT_STATUS 0x4A 00304 #define SCSIOP_PAUSE_RESUME 0x4B 00305 #define SCSIOP_LOG_SELECT 0x4C 00306 #define SCSIOP_LOG_SENSE 0x4D 00307 #define SCSIOP_STOP_PLAY_SCAN 0x4E 00308 #define SCSIOP_XDWRITE 0x50 00309 #define SCSIOP_XPWRITE 0x51 00310 #define SCSIOP_READ_DISK_INFORMATION 0x51 00311 #define SCSIOP_READ_DISC_INFORMATION 0x51 00312 #define SCSIOP_READ_TRACK_INFORMATION 0x52 00313 #define SCSIOP_XDWRITE_READ 0x53 00314 #define SCSIOP_RESERVE_TRACK_RZONE 0x53 00315 #define SCSIOP_SEND_OPC_INFORMATION 0x54 00316 #define SCSIOP_MODE_SELECT10 0x55 00317 #define SCSIOP_RESERVE_UNIT10 0x56 00318 #define SCSIOP_RESERVE_ELEMENT 0x56 00319 #define SCSIOP_RELEASE_UNIT10 0x57 00320 #define SCSIOP_RELEASE_ELEMENT 0x57 00321 #define SCSIOP_REPAIR_TRACK 0x58 00322 #define SCSIOP_MODE_SENSE10 0x5A 00323 #define SCSIOP_CLOSE_TRACK_SESSION 0x5B 00324 #define SCSIOP_READ_BUFFER_CAPACITY 0x5C 00325 #define SCSIOP_SEND_CUE_SHEET 0x5D 00326 #define SCSIOP_PERSISTENT_RESERVE_IN 0x5E 00327 #define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F 00328 00329 #define SCSIOP_REPORT_LUNS 0xA0 00330 #define SCSIOP_BLANK 0xA1 00331 #define SCSIOP_ATA_PASSTHROUGH12 0xA1 00332 #define SCSIOP_SEND_EVENT 0xA2 00333 #define SCSIOP_SEND_KEY 0xA3 00334 #define SCSIOP_MAINTENANCE_IN 0xA3 00335 #define SCSIOP_REPORT_KEY 0xA4 00336 #define SCSIOP_MAINTENANCE_OUT 0xA4 00337 #define SCSIOP_MOVE_MEDIUM 0xA5 00338 #define SCSIOP_LOAD_UNLOAD_SLOT 0xA6 00339 #define SCSIOP_EXCHANGE_MEDIUM 0xA6 00340 #define SCSIOP_SET_READ_AHEAD 0xA7 00341 #define SCSIOP_MOVE_MEDIUM_ATTACHED 0xA7 00342 #define SCSIOP_READ12 0xA8 00343 #define SCSIOP_GET_MESSAGE 0xA8 00344 #define SCSIOP_SERVICE_ACTION_OUT12 0xA9 00345 #define SCSIOP_WRITE12 0xAA 00346 #define SCSIOP_SEND_MESSAGE 0xAB 00347 #define SCSIOP_SERVICE_ACTION_IN12 0xAB 00348 #define SCSIOP_GET_PERFORMANCE 0xAC 00349 #define SCSIOP_READ_DVD_STRUCTURE 0xAD 00350 #define SCSIOP_WRITE_VERIFY12 0xAE 00351 #define SCSIOP_VERIFY12 0xAF 00352 #define SCSIOP_SEARCH_DATA_HIGH12 0xB0 00353 #define SCSIOP_SEARCH_DATA_EQUAL12 0xB1 00354 #define SCSIOP_SEARCH_DATA_LOW12 0xB2 00355 #define SCSIOP_SET_LIMITS12 0xB3 00356 #define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4 00357 #define SCSIOP_REQUEST_VOL_ELEMENT 0xB5 00358 #define SCSIOP_SEND_VOLUME_TAG 0xB6 00359 #define SCSIOP_SET_STREAMING 0xB6 00360 #define SCSIOP_READ_DEFECT_DATA 0xB7 00361 #define SCSIOP_READ_ELEMENT_STATUS 0xB8 00362 #define SCSIOP_READ_CD_MSF 0xB9 00363 #define SCSIOP_SCAN_CD 0xBA 00364 #define SCSIOP_REDUNDANCY_GROUP_IN 0xBA 00365 #define SCSIOP_SET_CD_SPEED 0xBB 00366 #define SCSIOP_REDUNDANCY_GROUP_OUT 0xBB 00367 #define SCSIOP_PLAY_CD 0xBC 00368 #define SCSIOP_SPARE_IN 0xBC 00369 #define SCSIOP_MECHANISM_STATUS 0xBD 00370 #define SCSIOP_SPARE_OUT 0xBD 00371 #define SCSIOP_READ_CD 0xBE 00372 #define SCSIOP_VOLUME_SET_IN 0xBE 00373 #define SCSIOP_SEND_DVD_STRUCTURE 0xBF 00374 #define SCSIOP_VOLUME_SET_OUT 0xBF 00375 #define SCSIOP_INIT_ELEMENT_RANGE 0xE7 00376 00377 #define SCSIOP_XDWRITE_EXTENDED16 0x80 00378 #define SCSIOP_WRITE_FILEMARKS16 0x80 00379 #define SCSIOP_REBUILD16 0x81 00380 #define SCSIOP_READ_REVERSE16 0x81 00381 #define SCSIOP_REGENERATE16 0x82 00382 #define SCSIOP_EXTENDED_COPY 0x83 00383 #define SCSIOP_RECEIVE_COPY_RESULTS 0x84 00384 #define SCSIOP_ATA_PASSTHROUGH16 0x85 00385 #define SCSIOP_ACCESS_CONTROL_IN 0x86 00386 #define SCSIOP_ACCESS_CONTROL_OUT 0x87 00387 #define SCSIOP_READ16 0x88 00388 #define SCSIOP_WRITE16 0x8A 00389 #define SCSIOP_READ_ATTRIBUTES 0x8C 00390 #define SCSIOP_WRITE_ATTRIBUTES 0x8D 00391 #define SCSIOP_WRITE_VERIFY16 0x8E 00392 #define SCSIOP_VERIFY16 0x8F 00393 #define SCSIOP_PREFETCH16 0x90 00394 #define SCSIOP_SYNCHRONIZE_CACHE16 0x91 00395 #define SCSIOP_SPACE16 0x91 00396 #define SCSIOP_LOCK_UNLOCK_CACHE16 0x92 00397 #define SCSIOP_LOCATE16 0x92 00398 #define SCSIOP_WRITE_SAME16 0x93 00399 #define SCSIOP_ERASE16 0x93 00400 #define SCSIOP_READ_CAPACITY16 0x9E 00401 #define SCSIOP_SERVICE_ACTION_IN16 0x9E 00402 #define SCSIOP_SERVICE_ACTION_OUT16 0x9F 00403 00404 #define CDB_RETURN_ON_COMPLETION 0 00405 #define CDB_RETURN_IMMEDIATE 1 00406 00407 #define CDB_FORCE_MEDIA_ACCESS 0x08 00408 00409 #define SCSIOP_DENON_EJECT_DISC 0xE6 00410 #define SCSIOP_DENON_STOP_AUDIO 0xE7 00411 #define SCSIOP_DENON_PLAY_AUDIO 0xE8 00412 #define SCSIOP_DENON_READ_TOC 0xE9 00413 #define SCSIOP_DENON_READ_SUBCODE 0xEB 00414 00415 #define SCSIMESS_ABORT 0x06 00416 #define SCSIMESS_ABORT_WITH_TAG 0x0D 00417 #define SCSIMESS_BUS_DEVICE_RESET 0X0C 00418 #define SCSIMESS_CLEAR_QUEUE 0X0E 00419 #define SCSIMESS_COMMAND_COMPLETE 0X00 00420 #define SCSIMESS_DISCONNECT 0X04 00421 #define SCSIMESS_EXTENDED_MESSAGE 0X01 00422 #define SCSIMESS_IDENTIFY 0X80 00423 #define SCSIMESS_IDENTIFY_WITH_DISCON 0XC0 00424 #define SCSIMESS_IGNORE_WIDE_RESIDUE 0X23 00425 #define SCSIMESS_INITIATE_RECOVERY 0X0F 00426 #define SCSIMESS_INIT_DETECTED_ERROR 0X05 00427 #define SCSIMESS_LINK_CMD_COMP 0X0A 00428 #define SCSIMESS_LINK_CMD_COMP_W_FLAG 0X0B 00429 #define SCSIMESS_MESS_PARITY_ERROR 0X09 00430 #define SCSIMESS_MESSAGE_REJECT 0X07 00431 #define SCSIMESS_NO_OPERATION 0X08 00432 #define SCSIMESS_HEAD_OF_QUEUE_TAG 0X21 00433 #define SCSIMESS_ORDERED_QUEUE_TAG 0X22 00434 #define SCSIMESS_SIMPLE_QUEUE_TAG 0X20 00435 #define SCSIMESS_RELEASE_RECOVERY 0X10 00436 #define SCSIMESS_RESTORE_POINTERS 0X03 00437 #define SCSIMESS_SAVE_DATA_POINTER 0X02 00438 #define SCSIMESS_TERMINATE_IO_PROCESS 0X11 00439 00440 #define SCSIMESS_MODIFY_DATA_POINTER 0X00 00441 #define SCSIMESS_SYNCHRONOUS_DATA_REQ 0X01 00442 #define SCSIMESS_WIDE_DATA_REQUEST 0X03 00443 00444 #define SCSIMESS_MODIFY_DATA_LENGTH 5 00445 #define SCSIMESS_SYNCH_DATA_LENGTH 3 00446 #define SCSIMESS_WIDE_DATA_LENGTH 2 00447 00448 #define CDB_INQUIRY_EVPD 0x01 00449 00450 #define LUN0_FORMAT_SAVING_DEFECT_LIST 0 00451 #define USE_DEFAULTMSB 0 00452 #define USE_DEFAULTLSB 0 00453 00454 #define START_UNIT_CODE 0x01 00455 #define STOP_UNIT_CODE 0x00 00456 00457 /* INQUIRYDATA.DeviceType constants */ 00458 #define DIRECT_ACCESS_DEVICE 0x00 00459 #define SEQUENTIAL_ACCESS_DEVICE 0x01 00460 #define PRINTER_DEVICE 0x02 00461 #define PROCESSOR_DEVICE 0x03 00462 #define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04 00463 #define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05 00464 #define SCANNER_DEVICE 0x06 00465 #define OPTICAL_DEVICE 0x07 00466 #define MEDIUM_CHANGER 0x08 00467 #define COMMUNICATION_DEVICE 0x09 00468 #define ARRAY_CONTROLLER_DEVICE 0x0C 00469 #define SCSI_ENCLOSURE_DEVICE 0x0D 00470 #define REDUCED_BLOCK_DEVICE 0x0E 00471 #define OPTICAL_CARD_READER_WRITER_DEVICE 0x0F 00472 #define BRIDGE_CONTROLLER_DEVICE 0x10 00473 #define OBJECT_BASED_STORAGE_DEVICE 0x11 00474 #define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F 00475 00476 #define DEVICE_QUALIFIER_ACTIVE 0x00 00477 #define DEVICE_QUALIFIER_NOT_ACTIVE 0x01 00478 #define DEVICE_QUALIFIER_NOT_SUPPORTED 0x03 00479 00480 /* INQUIRYDATA.DeviceTypeQualifier constants */ 00481 #define DEVICE_CONNECTED 0x00 00482 00483 #define SCSISTAT_GOOD 0x00 00484 #define SCSISTAT_CHECK_CONDITION 0x02 00485 #define SCSISTAT_CONDITION_MET 0x04 00486 #define SCSISTAT_BUSY 0x08 00487 #define SCSISTAT_INTERMEDIATE 0x10 00488 #define SCSISTAT_INTERMEDIATE_COND_MET 0x14 00489 #define SCSISTAT_RESERVATION_CONFLICT 0x18 00490 #define SCSISTAT_COMMAND_TERMINATED 0x22 00491 #define SCSISTAT_QUEUE_FULL 0x28 00492 00493 #define VPD_MAX_BUFFER_SIZE 0xff 00494 00495 #define VPD_SUPPORTED_PAGES 0x00 00496 #define VPD_SERIAL_NUMBER 0x80 00497 #define VPD_DEVICE_IDENTIFIERS 0x83 00498 #define VPD_MEDIA_SERIAL_NUMBER 0x84 00499 #define VPD_SOFTWARE_INTERFACE_IDENTIFIERS 0x84 00500 #define VPD_NETWORK_MANAGEMENT_ADDRESSES 0x85 00501 #define VPD_EXTENDED_INQUIRY_DATA 0x86 00502 #define VPD_MODE_PAGE_POLICY 0x87 00503 #define VPD_SCSI_PORTS 0x88 00504 00505 #define RESERVATION_ACTION_READ_KEYS 0x00 00506 #define RESERVATION_ACTION_READ_RESERVATIONS 0x01 00507 00508 #define RESERVATION_ACTION_REGISTER 0x00 00509 #define RESERVATION_ACTION_RESERVE 0x01 00510 #define RESERVATION_ACTION_RELEASE 0x02 00511 #define RESERVATION_ACTION_CLEAR 0x03 00512 #define RESERVATION_ACTION_PREEMPT 0x04 00513 #define RESERVATION_ACTION_PREEMPT_ABORT 0x05 00514 #define RESERVATION_ACTION_REGISTER_IGNORE_EXISTING 0x06 00515 00516 #define RESERVATION_SCOPE_LU 0x00 00517 #define RESERVATION_SCOPE_ELEMENT 0x02 00518 00519 #define RESERVATION_TYPE_WRITE_EXCLUSIVE 0x01 00520 #define RESERVATION_TYPE_EXCLUSIVE 0x03 00521 #define RESERVATION_TYPE_WRITE_EXCLUSIVE_REGISTRANTS 0x05 00522 #define RESERVATION_TYPE_EXCLUSIVE_REGISTRANTS 0x06 00523 00524 #define SENSE_BUFFER_SIZE 18 00525 00526 #define MAX_SENSE_BUFFER_SIZE 255 00527 00528 #define MAX_ADDITIONAL_SENSE_BYTES (MAX_SENSE_BUFFER_SIZE - SENSE_BUFFER_SIZE) 00529 00530 /* Sense codes */ 00531 #define SCSI_SENSE_NO_SENSE 0x00 00532 #define SCSI_SENSE_RECOVERED_ERROR 0x01 00533 #define SCSI_SENSE_NOT_READY 0x02 00534 #define SCSI_SENSE_MEDIUM_ERROR 0x03 00535 #define SCSI_SENSE_HARDWARE_ERROR 0x04 00536 #define SCSI_SENSE_ILLEGAL_REQUEST 0x05 00537 #define SCSI_SENSE_UNIT_ATTENTION 0x06 00538 #define SCSI_SENSE_DATA_PROTECT 0x07 00539 #define SCSI_SENSE_BLANK_CHECK 0x08 00540 #define SCSI_SENSE_UNIQUE 0x09 00541 #define SCSI_SENSE_COPY_ABORTED 0x0A 00542 #define SCSI_SENSE_ABORTED_COMMAND 0x0B 00543 #define SCSI_SENSE_EQUAL 0x0C 00544 #define SCSI_SENSE_VOL_OVERFLOW 0x0D 00545 #define SCSI_SENSE_MISCOMPARE 0x0E 00546 #define SCSI_SENSE_RESERVED 0x0F 00547 00548 /* Additional tape bit */ 00549 #define SCSI_ILLEGAL_LENGTH 0x20 00550 #define SCSI_EOM 0x40 00551 #define SCSI_FILE_MARK 0x80 00552 00553 /* Additional Sense codes */ 00554 #define SCSI_ADSENSE_NO_SENSE 0x00 00555 #define SCSI_ADSENSE_NO_SEEK_COMPLETE 0x02 00556 #define SCSI_ADSENSE_LUN_NOT_READY 0x04 00557 #define SCSI_ADSENSE_LUN_COMMUNICATION 0x08 00558 #define SCSI_ADSENSE_WRITE_ERROR 0x0C 00559 #define SCSI_ADSENSE_TRACK_ERROR 0x14 00560 #define SCSI_ADSENSE_SEEK_ERROR 0x15 00561 #define SCSI_ADSENSE_REC_DATA_NOECC 0x17 00562 #define SCSI_ADSENSE_REC_DATA_ECC 0x18 00563 #define SCSI_ADSENSE_PARAMETER_LIST_LENGTH 0x1A 00564 #define SCSI_ADSENSE_ILLEGAL_COMMAND 0x20 00565 #define SCSI_ADSENSE_ILLEGAL_BLOCK 0x21 00566 #define SCSI_ADSENSE_INVALID_CDB 0x24 00567 #define SCSI_ADSENSE_INVALID_LUN 0x25 00568 #define SCSI_ADSENSE_INVALID_FIELD_PARAMETER_LIST 0x26 00569 #define SCSI_ADSENSE_WRITE_PROTECT 0x27 00570 #define SCSI_ADSENSE_MEDIUM_CHANGED 0x28 00571 #define SCSI_ADSENSE_BUS_RESET 0x29 00572 #define SCSI_ADSENSE_PARAMETERS_CHANGED 0x2A 00573 #define SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION 0x2E 00574 #define SCSI_ADSENSE_INVALID_MEDIA 0x30 00575 #define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE 0x3a 00576 #define SCSI_ADSENSE_POSITION_ERROR 0x3b 00577 #define SCSI_ADSENSE_OPERATING_CONDITIONS_CHANGED 0x3f 00578 #define SCSI_ADSENSE_OPERATOR_REQUEST 0x5a 00579 #define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x5d 00580 #define SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK 0x64 00581 #define SCSI_ADSENSE_COPY_PROTECTION_FAILURE 0x6f 00582 #define SCSI_ADSENSE_POWER_CALIBRATION_ERROR 0x73 00583 #define SCSI_ADSENSE_VENDOR_UNIQUE 0x80 00584 #define SCSI_ADSENSE_MUSIC_AREA 0xA0 00585 #define SCSI_ADSENSE_DATA_AREA 0xA1 00586 #define SCSI_ADSENSE_VOLUME_OVERFLOW 0xA7 00587 00588 #define SCSI_ADWRITE_PROTECT SCSI_ADSENSE_WRITE_PROTECT 00589 #define SCSI_FAILURE_PREDICTION_THRESHOLD_EXCEEDED SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 00590 00591 #define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE 0x00 00592 #define SCSI_SENSEQ_BECOMING_READY 0x01 00593 #define SCSI_SENSEQ_INIT_COMMAND_REQUIRED 0x02 00594 #define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED 0x03 00595 #define SCSI_SENSEQ_FORMAT_IN_PROGRESS 0x04 00596 #define SCSI_SENSEQ_REBUILD_IN_PROGRESS 0x05 00597 #define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS 0x06 00598 #define SCSI_SENSEQ_OPERATION_IN_PROGRESS 0x07 00599 #define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS 0x08 00600 #define SCSI_SENSEQ_LOSS_OF_STREAMING 0x09 00601 #define SCSI_SENSEQ_PADDING_BLOCKS_ADDED 0x0A 00602 00603 #define SCSI_SENSEQ_COMM_FAILURE 0x00 00604 #define SCSI_SENSEQ_COMM_TIMEOUT 0x01 00605 #define SCSI_SENSEQ_COMM_PARITY_ERROR 0x02 00606 #define SCSI_SESNEQ_COMM_CRC_ERROR 0x03 00607 #define SCSI_SENSEQ_UNREACHABLE_TARGET 0x04 00608 00609 #define SCSI_SENSEQ_FILEMARK_DETECTED 0x01 00610 #define SCSI_SENSEQ_END_OF_MEDIA_DETECTED 0x02 00611 #define SCSI_SENSEQ_SETMARK_DETECTED 0x03 00612 #define SCSI_SENSEQ_BEGINNING_OF_MEDIA_DETECTED 0x04 00613 00614 #define SCSI_SENSEQ_ILLEGAL_ELEMENT_ADDR 0x01 00615 00616 #define SCSI_SENSEQ_DESTINATION_FULL 0x0d 00617 #define SCSI_SENSEQ_SOURCE_EMPTY 0x0e 00618 00619 #define SCSI_SENSEQ_INCOMPATIBLE_MEDIA_INSTALLED 0x00 00620 #define SCSI_SENSEQ_UNKNOWN_FORMAT 0x01 00621 #define SCSI_SENSEQ_INCOMPATIBLE_FORMAT 0x02 00622 #define SCSI_SENSEQ_CLEANING_CARTRIDGE_INSTALLED 0x03 00623 00624 #define SCSI_SENSEQ_TARGET_OPERATING_CONDITIONS_CHANGED 0x00 00625 #define SCSI_SENSEQ_MICROCODE_CHANGED 0x01 00626 #define SCSI_SENSEQ_OPERATING_DEFINITION_CHANGED 0x02 00627 #define SCSI_SENSEQ_INQUIRY_DATA_CHANGED 0x03 00628 #define SCSI_SENSEQ_COMPONENT_DEVICE_ATTACHED 0x04 00629 #define SCSI_SENSEQ_DEVICE_IDENTIFIER_CHANGED 0x05 00630 #define SCSI_SENSEQ_REDUNDANCY_GROUP_MODIFIED 0x06 00631 #define SCSI_SENSEQ_REDUNDANCY_GROUP_DELETED 0x07 00632 #define SCSI_SENSEQ_SPARE_MODIFIED 0x08 00633 #define SCSI_SENSEQ_SPARE_DELETED 0x09 00634 #define SCSI_SENSEQ_VOLUME_SET_MODIFIED 0x0A 00635 #define SCSI_SENSEQ_VOLUME_SET_DELETED 0x0B 00636 #define SCSI_SENSEQ_VOLUME_SET_DEASSIGNED 0x0C 00637 #define SCSI_SENSEQ_VOLUME_SET_REASSIGNED 0x0D 00638 #define SCSI_SENSEQ_REPORTED_LUNS_DATA_CHANGED 0x0E 00639 #define SCSI_SENSEQ_ECHO_BUFFER_OVERWRITTEN 0x0F 00640 #define SCSI_SENSEQ_MEDIUM_LOADABLE 0x10 00641 #define SCSI_SENSEQ_MEDIUM_AUXILIARY_MEMORY_ACCESSIBLE 0x11 00642 00643 #define SCSI_SENSEQ_STATE_CHANGE_INPUT 0x00 00644 #define SCSI_SENSEQ_MEDIUM_REMOVAL 0x01 00645 #define SCSI_SENSEQ_WRITE_PROTECT_ENABLE 0x02 00646 #define SCSI_SENSEQ_WRITE_PROTECT_DISABLE 0x03 00647 00648 #define SCSI_SENSEQ_AUTHENTICATION_FAILURE 0x00 00649 #define SCSI_SENSEQ_KEY_NOT_PRESENT 0x01 00650 #define SCSI_SENSEQ_KEY_NOT_ESTABLISHED 0x02 00651 #define SCSI_SENSEQ_READ_OF_SCRAMBLED_SECTOR_WITHOUT_AUTHENTICATION 0x03 00652 #define SCSI_SENSEQ_MEDIA_CODE_MISMATCHED_TO_LOGICAL_UNIT 0x04 00653 #define SCSI_SENSEQ_LOGICAL_UNIT_RESET_COUNT_ERROR 0x05 00654 00655 #define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ALMOST_FULL 0x01 00656 #define SCSI_SENSEQ_POWER_CALIBRATION_AREA_FULL 0x02 00657 #define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ERROR 0x03 00658 #define SCSI_SENSEQ_PMA_RMA_UPDATE_FAILURE 0x04 00659 #define SCSI_SENSEQ_PMA_RMA_IS_FULL 0x05 00660 #define SCSI_SENSEQ_PMA_RMA_ALMOST_FULL 0x06 00661 00662 #define FILE_DEVICE_SCSI 0x0000001b 00663 00664 #define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011) 00665 #define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012) 00666 #define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013) 00667 00668 /* SMART support in ATAPI */ 00669 #define IOCTL_SCSI_MINIPORT_SMART_VERSION ((FILE_DEVICE_SCSI << 16) + 0x0500) 00670 #define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501) 00671 #define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS ((FILE_DEVICE_SCSI << 16) + 0x0502) 00672 #define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS ((FILE_DEVICE_SCSI << 16) + 0x0503) 00673 #define IOCTL_SCSI_MINIPORT_ENABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0504) 00674 #define IOCTL_SCSI_MINIPORT_DISABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0505) 00675 #define IOCTL_SCSI_MINIPORT_RETURN_STATUS ((FILE_DEVICE_SCSI << 16) + 0x0506) 00676 #define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE ((FILE_DEVICE_SCSI << 16) + 0x0507) 00677 #define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES ((FILE_DEVICE_SCSI << 16) + 0x0508) 00678 #define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS ((FILE_DEVICE_SCSI << 16) + 0x0509) 00679 #define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE ((FILE_DEVICE_SCSI << 16) + 0x050a) 00680 #define IOCTL_SCSI_MINIPORT_READ_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050b) 00681 #define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050c) 00682 00683 /* CLUSTER support */ 00684 #define IOCTL_SCSI_MINIPORT_NOT_QUORUM_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0520) 00685 #define IOCTL_SCSI_MINIPORT_NOT_CLUSTER_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0521) 00686 00687 #define MODE_FD_SINGLE_SIDE 0x01 00688 #define MODE_FD_DOUBLE_SIDE 0x02 00689 #define MODE_FD_MAXIMUM_TYPE 0x1E 00690 #define MODE_DSP_FUA_SUPPORTED 0x10 00691 #define MODE_DSP_WRITE_PROTECT 0x80 00692 00693 #define CDDA_CHANNEL_MUTED 0x0 00694 #define CDDA_CHANNEL_ZERO 0x1 00695 #define CDDA_CHANNEL_ONE 0x2 00696 #define CDDA_CHANNEL_TWO 0x4 00697 #define CDDA_CHANNEL_THREE 0x8 00698 00699 #define CDVD_LMT_CADDY 0 00700 #define CDVD_LMT_TRAY 1 00701 #define CDVD_LMT_POPUP 2 00702 #define CDVD_LMT_RESERVED1 3 00703 #define CDVD_LMT_CHANGER_INDIVIDUAL 4 00704 #define CDVD_LMT_CHANGER_CARTRIDGE 5 00705 #define CDVD_LMT_RESERVED2 6 00706 #define CDVD_LMT_RESERVED3 7 00707 00708 #define LOADING_MECHANISM_CADDY 0x00 00709 #define LOADING_MECHANISM_TRAY 0x01 00710 #define LOADING_MECHANISM_POPUP 0x02 00711 #define LOADING_MECHANISM_INDIVIDUAL_CHANGER 0x04 00712 #define LOADING_MECHANISM_CARTRIDGE_CHANGER 0x05 00713 00714 #define MODE_BLOCK_DESC_LENGTH 8 00715 #define MODE_HEADER_LENGTH 4 00716 #define MODE_HEADER_LENGTH10 8 00717 00718 /* CDROM audio control */ 00719 #define CDB_AUDIO_PAUSE 0x00 00720 #define CDB_AUDIO_RESUME 0x01 00721 #define CDB_DEVICE_START 0x11 00722 #define CDB_DEVICE_STOP 0x10 00723 #define CDB_EJECT_MEDIA 0x10 00724 #define CDB_LOAD_MEDIA 0x01 00725 #define CDB_SUBCHANNEL_HEADER 0x00 00726 #define CDB_SUBCHANNEL_BLOCK 0x01 00727 00728 #define CDROM_AUDIO_CONTROL_PAGE 0x0E 00729 #define MODE_SELECT_IMMEDIATE 0x04 00730 #define MODE_SELECT_PFBIT 0x10 00731 00732 #define CDB_USE_MSF 0x01 00733 00734 /* Multisession CDROMs */ 00735 #define GET_LAST_SESSION 0x01 00736 #define GET_SESSION_DATA 0x02 00737 00738 typedef union _CDB { 00739 struct _CDB6GENERIC { 00740 UCHAR OperationCode; 00741 UCHAR Immediate:1; 00742 UCHAR CommandUniqueBits:4; 00743 UCHAR LogicalUnitNumber:3; 00744 UCHAR CommandUniqueBytes[3]; 00745 UCHAR Link:1; 00746 UCHAR Flag:1; 00747 UCHAR Reserved:4; 00748 UCHAR VendorUnique:2; 00749 } CDB6GENERIC, *PCDB6GENERIC; 00750 struct _CDB6READWRITE { 00751 UCHAR OperationCode; 00752 UCHAR LogicalBlockMsb1:5; 00753 UCHAR LogicalUnitNumber:3; 00754 UCHAR LogicalBlockMsb0; 00755 UCHAR LogicalBlockLsb; 00756 UCHAR TransferBlocks; 00757 UCHAR Control; 00758 } CDB6READWRITE, *PCDB6READWRITE; 00759 struct _CDB6INQUIRY { 00760 UCHAR OperationCode; 00761 UCHAR Reserved1:5; 00762 UCHAR LogicalUnitNumber:3; 00763 UCHAR PageCode; 00764 UCHAR IReserved; 00765 UCHAR AllocationLength; 00766 UCHAR Control; 00767 } CDB6INQUIRY, *PCDB6INQUIRY; 00768 struct _CDB6INQUIRY3 { 00769 UCHAR OperationCode; 00770 UCHAR EnableVitalProductData:1; 00771 UCHAR CommandSupportData:1; 00772 UCHAR Reserved1:6; 00773 UCHAR PageCode; 00774 UCHAR Reserved2; 00775 UCHAR AllocationLength; 00776 UCHAR Control; 00777 } CDB6INQUIRY3, *PCDB6INQUIRY3; 00778 struct _CDB6VERIFY { 00779 UCHAR OperationCode; 00780 UCHAR Fixed:1; 00781 UCHAR ByteCompare:1; 00782 UCHAR Immediate:1; 00783 UCHAR Reserved:2; 00784 UCHAR LogicalUnitNumber:3; 00785 UCHAR VerificationLength[3]; 00786 UCHAR Control; 00787 } CDB6VERIFY, *PCDB6VERIFY; 00788 struct _CDB6FORMAT { 00789 UCHAR OperationCode; 00790 UCHAR FormatControl:5; 00791 UCHAR LogicalUnitNumber:3; 00792 UCHAR FReserved1; 00793 UCHAR InterleaveMsb; 00794 UCHAR InterleaveLsb; 00795 UCHAR FReserved2; 00796 } CDB6FORMAT, *PCDB6FORMAT; 00797 struct _CDB10 { 00798 UCHAR OperationCode; 00799 UCHAR RelativeAddress:1; 00800 UCHAR Reserved1:2; 00801 UCHAR ForceUnitAccess:1; 00802 UCHAR DisablePageOut:1; 00803 UCHAR LogicalUnitNumber:3; 00804 UCHAR LogicalBlockByte0; 00805 UCHAR LogicalBlockByte1; 00806 UCHAR LogicalBlockByte2; 00807 UCHAR LogicalBlockByte3; 00808 UCHAR Reserved2; 00809 UCHAR TransferBlocksMsb; 00810 UCHAR TransferBlocksLsb; 00811 UCHAR Control; 00812 } CDB10, *PCDB10; 00813 struct _CDB12 { 00814 UCHAR OperationCode; 00815 UCHAR RelativeAddress:1; 00816 UCHAR Reserved1:2; 00817 UCHAR ForceUnitAccess:1; 00818 UCHAR DisablePageOut:1; 00819 UCHAR LogicalUnitNumber:3; 00820 UCHAR LogicalBlock[4]; 00821 UCHAR TransferLength[4]; 00822 UCHAR Reserved2; 00823 UCHAR Control; 00824 } CDB12, *PCDB12; 00825 struct _CDB16 { 00826 UCHAR OperationCode; 00827 UCHAR Reserved1:3; 00828 UCHAR ForceUnitAccess:1; 00829 UCHAR DisablePageOut:1; 00830 UCHAR Protection:3; 00831 UCHAR LogicalBlock[8]; 00832 UCHAR TransferLength[4]; 00833 UCHAR Reserved2; 00834 UCHAR Control; 00835 } CDB16, *PCDB16; 00836 struct _PAUSE_RESUME { 00837 UCHAR OperationCode; 00838 UCHAR Reserved1:5; 00839 UCHAR LogicalUnitNumber:3; 00840 UCHAR Reserved2[6]; 00841 UCHAR Action; 00842 UCHAR Control; 00843 } PAUSE_RESUME, *PPAUSE_RESUME; 00844 struct _READ_TOC { 00845 UCHAR OperationCode; 00846 UCHAR Reserved0:1; 00847 UCHAR Msf:1; 00848 UCHAR Reserved1:3; 00849 UCHAR LogicalUnitNumber:3; 00850 UCHAR Format2:4; 00851 UCHAR Reserved2:4; 00852 UCHAR Reserved3[3]; 00853 UCHAR StartingTrack; 00854 UCHAR AllocationLength[2]; 00855 UCHAR Control:6; 00856 UCHAR Format:2; 00857 } READ_TOC, *PREAD_TOC; 00858 struct _READ_DISK_INFORMATION { 00859 UCHAR OperationCode; 00860 UCHAR Reserved1:5; 00861 UCHAR Lun:3; 00862 UCHAR Reserved2[5]; 00863 UCHAR AllocationLength[2]; 00864 UCHAR Control; 00865 } READ_DISK_INFORMATION, *PREAD_DISK_INFORMATION; 00866 struct _READ_TRACK_INFORMATION { 00867 UCHAR OperationCode; 00868 UCHAR Track:1; 00869 UCHAR Reserved1:3; 00870 UCHAR Reserved2:1; 00871 UCHAR Lun:3; 00872 UCHAR BlockAddress[4]; 00873 UCHAR Reserved3; 00874 UCHAR AllocationLength[2]; 00875 UCHAR Control; 00876 } READ_TRACK_INFORMATION, *PREAD_TRACK_INFORMATION; 00877 struct _RESERVE_TRACK_RZONE { 00878 UCHAR OperationCode; 00879 UCHAR Reserved1[4]; 00880 UCHAR ReservationSize[4]; 00881 UCHAR Control; 00882 } RESERVE_TRACK_RZONE, *PRESERVE_TRACK_RZONE; 00883 struct _SEND_OPC_INFORMATION { 00884 UCHAR OperationCode; 00885 UCHAR DoOpc:1; 00886 UCHAR Reserved1:7; 00887 UCHAR Exclude0:1; 00888 UCHAR Exclude1:1; 00889 UCHAR Reserved2:6; 00890 UCHAR Reserved3[4]; 00891 UCHAR ParameterListLength[2]; 00892 UCHAR Reserved4; 00893 } SEND_OPC_INFORMATION, *PSEND_OPC_INFORMATION; 00894 struct _REPAIR_TRACK { 00895 UCHAR OperationCode; 00896 UCHAR Immediate:1; 00897 UCHAR Reserved1:7; 00898 UCHAR Reserved2[2]; 00899 UCHAR TrackNumber[2]; 00900 UCHAR Reserved3[3]; 00901 UCHAR Control; 00902 } REPAIR_TRACK, *PREPAIR_TRACK; 00903 struct _CLOSE_TRACK { 00904 UCHAR OperationCode; 00905 UCHAR Immediate:1; 00906 UCHAR Reserved1:7; 00907 UCHAR Track:1; 00908 UCHAR Session:1; 00909 UCHAR Reserved2:6; 00910 UCHAR Reserved3; 00911 UCHAR TrackNumber[2]; 00912 UCHAR Reserved4[3]; 00913 UCHAR Control; 00914 } CLOSE_TRACK, *PCLOSE_TRACK; 00915 struct _READ_BUFFER_CAPACITY { 00916 UCHAR OperationCode; 00917 UCHAR BlockInfo:1; 00918 UCHAR Reserved1:7; 00919 UCHAR Reserved2[5]; 00920 UCHAR AllocationLength[2]; 00921 UCHAR Control; 00922 } READ_BUFFER_CAPACITY, *PREAD_BUFFER_CAPACITY; 00923 struct _SEND_CUE_SHEET { 00924 UCHAR OperationCode; 00925 UCHAR Reserved[5]; 00926 UCHAR CueSheetSize[3]; 00927 UCHAR Control; 00928 } SEND_CUE_SHEET, *PSEND_CUE_SHEET; 00929 struct _READ_HEADER { 00930 UCHAR OperationCode; 00931 UCHAR Reserved1:1; 00932 UCHAR Msf:1; 00933 UCHAR Reserved2:3; 00934 UCHAR Lun:3; 00935 UCHAR LogicalBlockAddress[4]; 00936 UCHAR Reserved3; 00937 UCHAR AllocationLength[2]; 00938 UCHAR Control; 00939 } READ_HEADER, *PREAD_HEADER; 00940 struct _PLAY_AUDIO { 00941 UCHAR OperationCode; 00942 UCHAR Reserved1:5; 00943 UCHAR LogicalUnitNumber:3; 00944 UCHAR StartingBlockAddress[4]; 00945 UCHAR Reserved2; 00946 UCHAR PlayLength[2]; 00947 UCHAR Control; 00948 } PLAY_AUDIO, *PPLAY_AUDIO; 00949 struct _PLAY_AUDIO_MSF { 00950 UCHAR OperationCode; 00951 UCHAR Reserved1:5; 00952 UCHAR LogicalUnitNumber:3; 00953 UCHAR Reserved2; 00954 UCHAR StartingM; 00955 UCHAR StartingS; 00956 UCHAR StartingF; 00957 UCHAR EndingM; 00958 UCHAR EndingS; 00959 UCHAR EndingF; 00960 UCHAR Control; 00961 } PLAY_AUDIO_MSF, *PPLAY_AUDIO_MSF; 00962 struct _BLANK_MEDIA { 00963 UCHAR OperationCode; 00964 UCHAR BlankType:3; 00965 UCHAR Reserved1:1; 00966 UCHAR Immediate:1; 00967 UCHAR Reserved2:3; 00968 UCHAR AddressOrTrack[4]; 00969 UCHAR Reserved3[5]; 00970 UCHAR Control; 00971 } BLANK_MEDIA, *PBLANK_MEDIA; 00972 struct _PLAY_CD { 00973 UCHAR OperationCode; 00974 UCHAR Reserved1:1; 00975 UCHAR CMSF:1; 00976 UCHAR ExpectedSectorType:3; 00977 UCHAR Lun:3; 00978 _ANONYMOUS_UNION union { 00979 struct _LBA { 00980 UCHAR StartingBlockAddress[4]; 00981 UCHAR PlayLength[4]; 00982 } LBA; 00983 struct _MSF { 00984 UCHAR Reserved1; 00985 UCHAR StartingM; 00986 UCHAR StartingS; 00987 UCHAR StartingF; 00988 UCHAR EndingM; 00989 UCHAR EndingS; 00990 UCHAR EndingF; 00991 UCHAR Reserved2; 00992 } MSF; 00993 } DUMMYUNIONNAME; 00994 UCHAR Audio:1; 00995 UCHAR Composite:1; 00996 UCHAR Port1:1; 00997 UCHAR Port2:1; 00998 UCHAR Reserved2:3; 00999 UCHAR Speed:1; 01000 UCHAR Control; 01001 } PLAY_CD, *PPLAY_CD; 01002 struct _SCAN_CD { 01003 UCHAR OperationCode; 01004 UCHAR RelativeAddress:1; 01005 UCHAR Reserved1:3; 01006 UCHAR Direct:1; 01007 UCHAR Lun:3; 01008 UCHAR StartingAddress[4]; 01009 UCHAR Reserved2[3]; 01010 UCHAR Reserved3:6; 01011 UCHAR Type:2; 01012 UCHAR Reserved4; 01013 UCHAR Control; 01014 } SCAN_CD, *PSCAN_CD; 01015 struct _STOP_PLAY_SCAN { 01016 UCHAR OperationCode; 01017 UCHAR Reserved1:5; 01018 UCHAR Lun:3; 01019 UCHAR Reserved2[7]; 01020 UCHAR Control; 01021 } STOP_PLAY_SCAN, *PSTOP_PLAY_SCAN; 01022 struct _SUBCHANNEL { 01023 UCHAR OperationCode; 01024 UCHAR Reserved0:1; 01025 UCHAR Msf:1; 01026 UCHAR Reserved1:3; 01027 UCHAR LogicalUnitNumber:3; 01028 UCHAR Reserved2:6; 01029 UCHAR SubQ:1; 01030 UCHAR Reserved3:1; 01031 UCHAR Format; 01032 UCHAR Reserved4[2]; 01033 UCHAR TrackNumber; 01034 UCHAR AllocationLength[2]; 01035 UCHAR Control; 01036 } SUBCHANNEL, *PSUBCHANNEL; 01037 struct _READ_CD { 01038 UCHAR OperationCode; 01039 UCHAR RelativeAddress:1; 01040 UCHAR Reserved0:1; 01041 UCHAR ExpectedSectorType:3; 01042 UCHAR Lun:3; 01043 UCHAR StartingLBA[4]; 01044 UCHAR TransferBlocks[3]; 01045 UCHAR Reserved2:1; 01046 UCHAR ErrorFlags:2; 01047 UCHAR IncludeEDC:1; 01048 UCHAR IncludeUserData:1; 01049 UCHAR HeaderCode:2; 01050 UCHAR IncludeSyncData:1; 01051 UCHAR SubChannelSelection:3; 01052 UCHAR Reserved3:5; 01053 UCHAR Control; 01054 } READ_CD, *PREAD_CD; 01055 struct _READ_CD_MSF { 01056 UCHAR OperationCode; 01057 UCHAR RelativeAddress:1; 01058 UCHAR Reserved1:1; 01059 UCHAR ExpectedSectorType:3; 01060 UCHAR Lun:3; 01061 UCHAR Reserved2; 01062 UCHAR StartingM; 01063 UCHAR StartingS; 01064 UCHAR StartingF; 01065 UCHAR EndingM; 01066 UCHAR EndingS; 01067 UCHAR EndingF; 01068 UCHAR Reserved3; 01069 UCHAR Reserved4:1; 01070 UCHAR ErrorFlags:2; 01071 UCHAR IncludeEDC:1; 01072 UCHAR IncludeUserData:1; 01073 UCHAR HeaderCode:2; 01074 UCHAR IncludeSyncData:1; 01075 UCHAR SubChannelSelection:3; 01076 UCHAR Reserved5:5; 01077 UCHAR Control; 01078 } READ_CD_MSF, *PREAD_CD_MSF; 01079 struct _PLXTR_READ_CDDA { 01080 UCHAR OperationCode; 01081 UCHAR Reserved0:5; 01082 UCHAR LogicalUnitNumber:3; 01083 UCHAR LogicalBlockByte0; 01084 UCHAR LogicalBlockByte1; 01085 UCHAR LogicalBlockByte2; 01086 UCHAR LogicalBlockByte3; 01087 UCHAR TransferBlockByte0; 01088 UCHAR TransferBlockByte1; 01089 UCHAR TransferBlockByte2; 01090 UCHAR TransferBlockByte3; 01091 UCHAR SubCode; 01092 UCHAR Control; 01093 } PLXTR_READ_CDDA, *PPLXTR_READ_CDDA; 01094 struct _NEC_READ_CDDA { 01095 UCHAR OperationCode; 01096 UCHAR Reserved0; 01097 UCHAR LogicalBlockByte0; 01098 UCHAR LogicalBlockByte1; 01099 UCHAR LogicalBlockByte2; 01100 UCHAR LogicalBlockByte3; 01101 UCHAR Reserved1; 01102 UCHAR TransferBlockByte0; 01103 UCHAR TransferBlockByte1; 01104 UCHAR Control; 01105 } NEC_READ_CDDA, *PNEC_READ_CDDA; 01106 struct _MODE_SENSE { 01107 UCHAR OperationCode; 01108 UCHAR Reserved1:3; 01109 UCHAR Dbd:1; 01110 UCHAR Reserved2:1; 01111 UCHAR LogicalUnitNumber:3; 01112 UCHAR PageCode:6; 01113 UCHAR Pc:2; 01114 UCHAR Reserved3; 01115 UCHAR AllocationLength; 01116 UCHAR Control; 01117 } MODE_SENSE, *PMODE_SENSE; 01118 struct _MODE_SENSE10 { 01119 UCHAR OperationCode; 01120 UCHAR Reserved1:3; 01121 UCHAR Dbd:1; 01122 UCHAR Reserved2:1; 01123 UCHAR LogicalUnitNumber:3; 01124 UCHAR PageCode:6; 01125 UCHAR Pc:2; 01126 UCHAR Reserved3[4]; 01127 UCHAR AllocationLength[2]; 01128 UCHAR Control; 01129 } MODE_SENSE10, *PMODE_SENSE10; 01130 struct _MODE_SELECT { 01131 UCHAR OperationCode; 01132 UCHAR SPBit:1; 01133 UCHAR Reserved1:3; 01134 UCHAR PFBit:1; 01135 UCHAR LogicalUnitNumber:3; 01136 UCHAR Reserved2[2]; 01137 UCHAR ParameterListLength; 01138 UCHAR Control; 01139 } MODE_SELECT, *PMODE_SELECT; 01140 struct _MODE_SELECT10 { 01141 UCHAR OperationCode; 01142 UCHAR SPBit:1; 01143 UCHAR Reserved1:3; 01144 UCHAR PFBit:1; 01145 UCHAR LogicalUnitNumber:3; 01146 UCHAR Reserved2[5]; 01147 UCHAR ParameterListLength[2]; 01148 UCHAR Control; 01149 } MODE_SELECT10, *PMODE_SELECT10; 01150 struct _LOCATE { 01151 UCHAR OperationCode; 01152 UCHAR Immediate:1; 01153 UCHAR CPBit:1; 01154 UCHAR BTBit:1; 01155 UCHAR Reserved1:2; 01156 UCHAR LogicalUnitNumber:3; 01157 UCHAR Reserved3; 01158 UCHAR LogicalBlockAddress[4]; 01159 UCHAR Reserved4; 01160 UCHAR Partition; 01161 UCHAR Control; 01162 } LOCATE, *PLOCATE; 01163 struct _LOGSENSE { 01164 UCHAR OperationCode; 01165 UCHAR SPBit:1; 01166 UCHAR PPCBit:1; 01167 UCHAR Reserved1:3; 01168 UCHAR LogicalUnitNumber:3; 01169 UCHAR PageCode:6; 01170 UCHAR PCBit:2; 01171 UCHAR Reserved2; 01172 UCHAR Reserved3; 01173 UCHAR ParameterPointer[2]; 01174 UCHAR AllocationLength[2]; 01175 UCHAR Control; 01176 } LOGSENSE, *PLOGSENSE; 01177 struct _LOGSELECT { 01178 UCHAR OperationCode; 01179 UCHAR SPBit:1; 01180 UCHAR PCRBit:1; 01181 UCHAR Reserved1:3; 01182 UCHAR LogicalUnitNumber:3; 01183 UCHAR Reserved:6; 01184 UCHAR PCBit:2; 01185 UCHAR Reserved2[4]; 01186 UCHAR ParameterListLength[2]; 01187 UCHAR Control; 01188 } LOGSELECT, *PLOGSELECT; 01189 struct _PRINT { 01190 UCHAR OperationCode; 01191 UCHAR Reserved:5; 01192 UCHAR LogicalUnitNumber:3; 01193 UCHAR TransferLength[3]; 01194 UCHAR Control; 01195 } PRINT, *PPRINT; 01196 struct _SEEK { 01197 UCHAR OperationCode; 01198 UCHAR Reserved1:5; 01199 UCHAR LogicalUnitNumber:3; 01200 UCHAR LogicalBlockAddress[4]; 01201 UCHAR Reserved2[3]; 01202 UCHAR Control; 01203 } SEEK, *PSEEK; 01204 struct _ERASE { 01205 UCHAR OperationCode; 01206 UCHAR Long:1; 01207 UCHAR Immediate:1; 01208 UCHAR Reserved1:3; 01209 UCHAR LogicalUnitNumber:3; 01210 UCHAR Reserved2[3]; 01211 UCHAR Control; 01212 } ERASE, *PERASE; 01213 struct _START_STOP { 01214 UCHAR OperationCode; 01215 UCHAR Immediate:1; 01216 UCHAR Reserved1:4; 01217 UCHAR LogicalUnitNumber:3; 01218 UCHAR Reserved2[2]; 01219 UCHAR Start:1; 01220 UCHAR LoadEject:1; 01221 UCHAR Reserved3:6; 01222 UCHAR Control; 01223 } START_STOP, *PSTART_STOP; 01224 struct _MEDIA_REMOVAL { 01225 UCHAR OperationCode; 01226 UCHAR Reserved1:5; 01227 UCHAR LogicalUnitNumber:3; 01228 UCHAR Reserved2[2]; 01229 UCHAR Prevent:1; 01230 UCHAR Persistant:1; 01231 UCHAR Reserved3:6; 01232 UCHAR Control; 01233 } MEDIA_REMOVAL, *PMEDIA_REMOVAL; 01234 struct _SEEK_BLOCK { 01235 UCHAR OperationCode; 01236 UCHAR Immediate:1; 01237 UCHAR Reserved1:7; 01238 UCHAR BlockAddress[3]; 01239 UCHAR Link:1; 01240 UCHAR Flag:1; 01241 UCHAR Reserved2:4; 01242 UCHAR VendorUnique:2; 01243 } SEEK_BLOCK, *PSEEK_BLOCK; 01244 struct _REQUEST_BLOCK_ADDRESS { 01245 UCHAR OperationCode; 01246 UCHAR Reserved1[3]; 01247 UCHAR AllocationLength; 01248 UCHAR Link:1; 01249 UCHAR Flag:1; 01250 UCHAR Reserved2:4; 01251 UCHAR VendorUnique:2; 01252 } REQUEST_BLOCK_ADDRESS, *PREQUEST_BLOCK_ADDRESS; 01253 struct _PARTITION { 01254 UCHAR OperationCode; 01255 UCHAR Immediate:1; 01256 UCHAR Sel:1; 01257 UCHAR PartitionSelect:6; 01258 UCHAR Reserved1[3]; 01259 UCHAR Control; 01260 } PARTITION, *PPARTITION; 01261 struct _WRITE_TAPE_MARKS { 01262 UCHAR OperationCode; 01263 UCHAR Immediate:1; 01264 UCHAR WriteSetMarks:1; 01265 UCHAR Reserved:3; 01266 UCHAR LogicalUnitNumber:3; 01267 UCHAR TransferLength[3]; 01268 UCHAR Control; 01269 } WRITE_TAPE_MARKS, *PWRITE_TAPE_MARKS; 01270 struct _SPACE_TAPE_MARKS { 01271 UCHAR OperationCode; 01272 UCHAR Code:3; 01273 UCHAR Reserved:2; 01274 UCHAR LogicalUnitNumber:3; 01275 UCHAR NumMarksMSB; 01276 UCHAR NumMarks; 01277 UCHAR NumMarksLSB; 01278 union { 01279 UCHAR value; 01280 struct { 01281 UCHAR Link:1; 01282 UCHAR Flag:1; 01283 UCHAR Reserved:4; 01284 UCHAR VendorUnique:2; 01285 } Fields; 01286 } Byte6; 01287 } SPACE_TAPE_MARKS, *PSPACE_TAPE_MARKS; 01288 struct _READ_POSITION { 01289 UCHAR Operation; 01290 UCHAR BlockType:1; 01291 UCHAR Reserved1:4; 01292 UCHAR Lun:3; 01293 UCHAR Reserved2[7]; 01294 UCHAR Control; 01295 } READ_POSITION, *PREAD_POSITION; 01296 struct _CDB6READWRITETAPE { 01297 UCHAR OperationCode; 01298 UCHAR VendorSpecific:5; 01299 UCHAR Reserved:3; 01300 UCHAR TransferLenMSB; 01301 UCHAR TransferLen; 01302 UCHAR TransferLenLSB; 01303 UCHAR Link:1; 01304 UCHAR Flag:1; 01305 UCHAR Reserved1:4; 01306 UCHAR VendorUnique:2; 01307 } CDB6READWRITETAPE, *PCDB6READWRITETAPE; 01308 struct _INIT_ELEMENT_STATUS { 01309 UCHAR OperationCode; 01310 UCHAR Reserved1:5; 01311 UCHAR LogicalUnitNubmer:3; 01312 UCHAR Reserved2[3]; 01313 UCHAR Reserved3:7; 01314 UCHAR NoBarCode:1; 01315 } INIT_ELEMENT_STATUS, *PINIT_ELEMENT_STATUS; 01316 struct _INITIALIZE_ELEMENT_RANGE { 01317 UCHAR OperationCode; 01318 UCHAR Range:1; 01319 UCHAR Reserved1:4; 01320 UCHAR LogicalUnitNubmer:3; 01321 UCHAR FirstElementAddress[2]; 01322 UCHAR Reserved2[2]; 01323 UCHAR NumberOfElements[2]; 01324 UCHAR Reserved3; 01325 UCHAR Reserved4:7; 01326 UCHAR NoBarCode:1; 01327 } INITIALIZE_ELEMENT_RANGE, *PINITIALIZE_ELEMENT_RANGE; 01328 struct _POSITION_TO_ELEMENT { 01329 UCHAR OperationCode; 01330 UCHAR Reserved1:5; 01331 UCHAR LogicalUnitNumber:3; 01332 UCHAR TransportElementAddress[2]; 01333 UCHAR DestinationElementAddress[2]; 01334 UCHAR Reserved2[2]; 01335 UCHAR Flip:1; 01336 UCHAR Reserved3:7; 01337 UCHAR Control; 01338 } POSITION_TO_ELEMENT, *PPOSITION_TO_ELEMENT; 01339 struct _MOVE_MEDIUM { 01340 UCHAR OperationCode; 01341 UCHAR Reserved1:5; 01342 UCHAR LogicalUnitNumber:3; 01343 UCHAR TransportElementAddress[2]; 01344 UCHAR SourceElementAddress[2]; 01345 UCHAR DestinationElementAddress[2]; 01346 UCHAR Reserved2[2]; 01347 UCHAR Flip:1; 01348 UCHAR Reserved3:7; 01349 UCHAR Control; 01350 } MOVE_MEDIUM, *PMOVE_MEDIUM; 01351 struct _EXCHANGE_MEDIUM { 01352 UCHAR OperationCode; 01353 UCHAR Reserved1:5; 01354 UCHAR LogicalUnitNumber:3; 01355 UCHAR TransportElementAddress[2]; 01356 UCHAR SourceElementAddress[2]; 01357 UCHAR Destination1ElementAddress[2]; 01358 UCHAR Destination2ElementAddress[2]; 01359 UCHAR Flip1:1; 01360 UCHAR Flip2:1; 01361 UCHAR Reserved3:6; 01362 UCHAR Control; 01363 } EXCHANGE_MEDIUM, *PEXCHANGE_MEDIUM; 01364 struct _READ_ELEMENT_STATUS { 01365 UCHAR OperationCode; 01366 UCHAR ElementType:4; 01367 UCHAR VolTag:1; 01368 UCHAR LogicalUnitNumber:3; 01369 UCHAR StartingElementAddress[2]; 01370 UCHAR NumberOfElements[2]; 01371 UCHAR Reserved1; 01372 UCHAR AllocationLength[3]; 01373 UCHAR Reserved2; 01374 UCHAR Control; 01375 } READ_ELEMENT_STATUS, *PREAD_ELEMENT_STATUS; 01376 struct _SEND_VOLUME_TAG { 01377 UCHAR OperationCode; 01378 UCHAR ElementType:4; 01379 UCHAR Reserved1:1; 01380 UCHAR LogicalUnitNumber:3; 01381 UCHAR StartingElementAddress[2]; 01382 UCHAR Reserved2; 01383 UCHAR ActionCode:5; 01384 UCHAR Reserved3:3; 01385 UCHAR Reserved4[2]; 01386 UCHAR ParameterListLength[2]; 01387 UCHAR Reserved5; 01388 UCHAR Control; 01389 } SEND_VOLUME_TAG, *PSEND_VOLUME_TAG; 01390 struct _REQUEST_VOLUME_ELEMENT_ADDRESS { 01391 UCHAR OperationCode; 01392 UCHAR ElementType:4; 01393 UCHAR VolTag:1; 01394 UCHAR LogicalUnitNumber:3; 01395 UCHAR StartingElementAddress[2]; 01396 UCHAR NumberElements[2]; 01397 UCHAR Reserved1; 01398 UCHAR AllocationLength[3]; 01399 UCHAR Reserved2; 01400 UCHAR Control; 01401 } REQUEST_VOLUME_ELEMENT_ADDRESS, *PREQUEST_VOLUME_ELEMENT_ADDRESS; 01402 struct _LOAD_UNLOAD { 01403 UCHAR OperationCode; 01404 UCHAR Immediate:1; 01405 UCHAR Reserved1:4; 01406 UCHAR Lun:3; 01407 UCHAR Reserved2[2]; 01408 UCHAR Start:1; 01409 UCHAR LoadEject:1; 01410 UCHAR Reserved3:6; 01411 UCHAR Reserved4[3]; 01412 UCHAR Slot; 01413 UCHAR Reserved5[3]; 01414 } LOAD_UNLOAD, *PLOAD_UNLOAD; 01415 struct _MECH_STATUS { 01416 UCHAR OperationCode; 01417 UCHAR Reserved:5; 01418 UCHAR Lun:3; 01419 UCHAR Reserved1[6]; 01420 UCHAR AllocationLength[2]; 01421 UCHAR Reserved2[1]; 01422 UCHAR Control; 01423 } MECH_STATUS, *PMECH_STATUS; 01424 struct _SYNCHRONIZE_CACHE10 { 01425 UCHAR OperationCode; 01426 UCHAR RelAddr:1; 01427 UCHAR Immediate:1; 01428 UCHAR Reserved:3; 01429 UCHAR Lun:3; 01430 UCHAR LogicalBlockAddress[4]; 01431 UCHAR Reserved2; 01432 UCHAR BlockCount[2]; 01433 UCHAR Control; 01434 } SYNCHRONIZE_CACHE10, *PSYNCHRONIZE_CACHE10; 01435 struct _GET_EVENT_STATUS_NOTIFICATION { 01436 UCHAR OperationCode; 01437 UCHAR Immediate:1; 01438 UCHAR Reserved:4; 01439 UCHAR Lun:3; 01440 UCHAR Reserved2[2]; 01441 UCHAR NotificationClassRequest; 01442 UCHAR Reserved3[2]; 01443 UCHAR EventListLength[2]; 01444 UCHAR Control; 01445 } GET_EVENT_STATUS_NOTIFICATION, *PGET_EVENT_STATUS_NOTIFICATION; 01446 struct _GET_PERFORMANCE { 01447 UCHAR OperationCode; 01448 UCHAR Except:2; 01449 UCHAR Write:1; 01450 UCHAR Tolerance:2; 01451 UCHAR Reserved0:3; 01452 UCHAR StartingLBA[4]; 01453 UCHAR Reserved1[2]; 01454 UCHAR MaximumNumberOfDescriptors[2]; 01455 UCHAR Type; 01456 UCHAR Control; 01457 } GET_PERFORMANCE; 01458 struct _READ_DVD_STRUCTURE { 01459 UCHAR OperationCode; 01460 UCHAR Reserved1:5; 01461 UCHAR Lun:3; 01462 UCHAR RMDBlockNumber[4]; 01463 UCHAR LayerNumber; 01464 UCHAR Format; 01465 UCHAR AllocationLength[2]; 01466 UCHAR Reserved3:6; 01467 UCHAR AGID:2; 01468 UCHAR Control; 01469 } READ_DVD_STRUCTURE, *PREAD_DVD_STRUCTURE; 01470 struct _SET_STREAMING { 01471 UCHAR OperationCode; 01472 UCHAR Reserved[8]; 01473 UCHAR ParameterListLength[2]; 01474 UCHAR Control; 01475 } SET_STREAMING; 01476 struct _SEND_DVD_STRUCTURE { 01477 UCHAR OperationCode; 01478 UCHAR Reserved1:5; 01479 UCHAR Lun:3; 01480 UCHAR Reserved2[5]; 01481 UCHAR Format; 01482 UCHAR ParameterListLength[2]; 01483 UCHAR Reserved3; 01484 UCHAR Control; 01485 } SEND_DVD_STRUCTURE, *PSEND_DVD_STRUCTURE; 01486 struct _SEND_KEY { 01487 UCHAR OperationCode; 01488 UCHAR Reserved1:5; 01489 UCHAR Lun:3; 01490 UCHAR Reserved2[6]; 01491 UCHAR ParameterListLength[2]; 01492 UCHAR KeyFormat:6; 01493 UCHAR AGID:2; 01494 UCHAR Control; 01495 } SEND_KEY, *PSEND_KEY; 01496 struct _REPORT_KEY { 01497 UCHAR OperationCode; 01498 UCHAR Reserved1:5; 01499 UCHAR Lun:3; 01500 UCHAR LogicalBlockAddress[4]; 01501 UCHAR Reserved2[2]; 01502 UCHAR AllocationLength[2]; 01503 UCHAR KeyFormat:6; 01504 UCHAR AGID:2; 01505 UCHAR Control; 01506 } REPORT_KEY, *PREPORT_KEY; 01507 struct _SET_READ_AHEAD { 01508 UCHAR OperationCode; 01509 UCHAR Reserved1:5; 01510 UCHAR Lun:3; 01511 UCHAR TriggerLBA[4]; 01512 UCHAR ReadAheadLBA[4]; 01513 UCHAR Reserved2; 01514 UCHAR Control; 01515 } SET_READ_AHEAD, *PSET_READ_AHEAD; 01516 struct _READ_FORMATTED_CAPACITIES { 01517 UCHAR OperationCode; 01518 UCHAR Reserved1:5; 01519 UCHAR Lun:3; 01520 UCHAR Reserved2[5]; 01521 UCHAR AllocationLength[2]; 01522 UCHAR Control; 01523 } READ_FORMATTED_CAPACITIES, *PREAD_FORMATTED_CAPACITIES; 01524 struct _REPORT_LUNS { 01525 UCHAR OperationCode; 01526 UCHAR Reserved1[5]; 01527 UCHAR AllocationLength[4]; 01528 UCHAR Reserved2[1]; 01529 UCHAR Control; 01530 } REPORT_LUNS, *PREPORT_LUNS; 01531 struct _PERSISTENT_RESERVE_IN { 01532 UCHAR OperationCode; 01533 UCHAR ServiceAction:5; 01534 UCHAR Reserved1:3; 01535 UCHAR Reserved2[5]; 01536 UCHAR AllocationLength[2]; 01537 UCHAR Control; 01538 } PERSISTENT_RESERVE_IN, *PPERSISTENT_RESERVE_IN; 01539 struct _PERSISTENT_RESERVE_OUT { 01540 UCHAR OperationCode; 01541 UCHAR ServiceAction:5; 01542 UCHAR Reserved1:3; 01543 UCHAR Type:4; 01544 UCHAR Scope:4; 01545 UCHAR Reserved2[4]; 01546 UCHAR ParameterListLength[2]; 01547 UCHAR Control; 01548 } PERSISTENT_RESERVE_OUT, *PPERSISTENT_RESERVE_OUT; 01549 struct _GET_CONFIGURATION { 01550 UCHAR OperationCode; 01551 UCHAR RequestType:1; 01552 UCHAR Reserved1:7; 01553 UCHAR StartingFeature[2]; 01554 UCHAR Reserved2[3]; 01555 UCHAR AllocationLength[2]; 01556 UCHAR Control; 01557 } GET_CONFIGURATION, *PGET_CONFIGURATION; 01558 struct _SET_CD_SPEED { 01559 UCHAR OperationCode; 01560 _ANONYMOUS_UNION union { 01561 UCHAR Reserved1; 01562 _ANONYMOUS_STRUCT struct { 01563 UCHAR RotationControl:2; 01564 UCHAR Reserved3:6; 01565 } DUMMYSTRUCTNAME; 01566 } DUMMYUNIONNAME; 01567 UCHAR ReadSpeed[2]; 01568 UCHAR WriteSpeed[2]; 01569 UCHAR Reserved2[5]; 01570 UCHAR Control; 01571 } SET_CD_SPEED, *PSET_CD_SPEED; 01572 struct _READ12 { 01573 UCHAR OperationCode; 01574 UCHAR RelativeAddress:1; 01575 UCHAR Reserved1:2; 01576 UCHAR ForceUnitAccess:1; 01577 UCHAR DisablePageOut:1; 01578 UCHAR LogicalUnitNumber:3; 01579 UCHAR LogicalBlock[4]; 01580 UCHAR TransferLength[4]; 01581 UCHAR Reserved2:7; 01582 UCHAR Streaming:1; 01583 UCHAR Control; 01584 } READ12; 01585 struct _WRITE12 { 01586 UCHAR OperationCode; 01587 UCHAR RelativeAddress:1; 01588 UCHAR Reserved1:1; 01589 UCHAR EBP:1; 01590 UCHAR ForceUnitAccess:1; 01591 UCHAR DisablePageOut:1; 01592 UCHAR LogicalUnitNumber:3; 01593 UCHAR LogicalBlock[4]; 01594 UCHAR TransferLength[4]; 01595 UCHAR Reserved2:7; 01596 UCHAR Streaming:1; 01597 UCHAR Control; 01598 } WRITE12; 01599 struct _READ16 { 01600 UCHAR OperationCode; 01601 UCHAR Reserved1:3; 01602 UCHAR ForceUnitAccess:1; 01603 UCHAR DisablePageOut:1; 01604 UCHAR ReadProtect:3; 01605 UCHAR LogicalBlock[8]; 01606 UCHAR TransferLength[4]; 01607 UCHAR Reserved2:7; 01608 UCHAR Streaming:1; 01609 UCHAR Control; 01610 } READ16; 01611 struct _WRITE16 { 01612 UCHAR OperationCode; 01613 UCHAR Reserved1:3; 01614 UCHAR ForceUnitAccess:1; 01615 UCHAR DisablePageOut:1; 01616 UCHAR WriteProtect:3; 01617 UCHAR LogicalBlock[8]; 01618 UCHAR TransferLength[4]; 01619 UCHAR Reserved2:7; 01620 UCHAR Streaming:1; 01621 UCHAR Control; 01622 } WRITE16; 01623 struct _VERIFY16 { 01624 UCHAR OperationCode; 01625 UCHAR Reserved1:1; 01626 UCHAR ByteCheck:1; 01627 UCHAR BlockVerify:1; 01628 UCHAR Reserved2: 1; 01629 UCHAR DisablePageOut:1; 01630 UCHAR VerifyProtect:3; 01631 UCHAR LogicalBlock[8]; 01632 UCHAR VerificationLength[4]; 01633 UCHAR Reserved3:7; 01634 UCHAR Streaming:1; 01635 UCHAR Control; 01636 } VERIFY16; 01637 struct _SYNCHRONIZE_CACHE16 { 01638 UCHAR OperationCode; 01639 UCHAR Reserved1:1; 01640 UCHAR Immediate:1; 01641 UCHAR Reserved2:6; 01642 UCHAR LogicalBlock[8]; 01643 UCHAR BlockCount[4]; 01644 UCHAR Reserved3; 01645 UCHAR Control; 01646 } SYNCHRONIZE_CACHE16; 01647 struct _READ_CAPACITY16 { 01648 UCHAR OperationCode; 01649 UCHAR ServiceAction:5; 01650 UCHAR Reserved1:3; 01651 UCHAR LogicalBlock[8]; 01652 UCHAR BlockCount[4]; 01653 UCHAR PMI:1; 01654 UCHAR Reserved2:7; 01655 UCHAR Control; 01656 } READ_CAPACITY16; 01657 ULONG AsUlong[4]; 01658 UCHAR AsByte[16]; 01659 } CDB, *PCDB; 01660 01661 typedef struct _NOTIFICATION_EVENT_STATUS_HEADER { 01662 UCHAR EventDataLength[2]; 01663 UCHAR NotificationClass:3; 01664 UCHAR Reserved:4; 01665 UCHAR NEA:1; 01666 UCHAR SupportedEventClasses; 01667 UCHAR ClassEventData[0]; 01668 } NOTIFICATION_EVENT_STATUS_HEADER, *PNOTIFICATION_EVENT_STATUS_HEADER; 01669 01670 typedef struct _NOTIFICATION_OPERATIONAL_STATUS { 01671 UCHAR OperationalEvent:4; 01672 UCHAR Reserved1:4; 01673 UCHAR OperationalStatus:4; 01674 UCHAR Reserved2:3; 01675 UCHAR PersistentPrevented:1; 01676 UCHAR Operation[2]; 01677 } NOTIFICATION_OPERATIONAL_STATUS, *PNOTIFICATION_OPERATIONAL_STATUS; 01678 01679 typedef struct _NOTIFICATION_POWER_STATUS { 01680 UCHAR PowerEvent:4; 01681 UCHAR Reserved:4; 01682 UCHAR PowerStatus; 01683 UCHAR Reserved2[2]; 01684 } NOTIFICATION_POWER_STATUS, *PNOTIFICATION_POWER_STATUS; 01685 01686 typedef struct _NOTIFICATION_EXTERNAL_STATUS { 01687 UCHAR ExternalEvent:4; 01688 UCHAR Reserved1:4; 01689 UCHAR ExternalStatus:4; 01690 UCHAR Reserved2:3; 01691 UCHAR PersistentPrevented:1; 01692 UCHAR Request[2]; 01693 } NOTIFICATION_EXTERNAL_STATUS, *PNOTIFICATION_EXTERNAL_STATUS; 01694 01695 typedef struct _NOTIFICATION_MEDIA_STATUS { 01696 UCHAR MediaEvent:4; 01697 UCHAR Reserved:4; 01698 _ANONYMOUS_UNION union { 01699 UCHAR PowerStatus; 01700 UCHAR MediaStatus; 01701 _ANONYMOUS_STRUCT struct { 01702 UCHAR DoorTrayOpen:1; 01703 UCHAR MediaPresent:1; 01704 UCHAR ReservedX:6; 01705 } DUMMYSTRUCTNAME; 01706 } DUMMYUNIONNAME; 01707 UCHAR StartSlot; 01708 UCHAR EndSlot; 01709 } NOTIFICATION_MEDIA_STATUS, *PNOTIFICATION_MEDIA_STATUS; 01710 01711 typedef struct _NOTIFICATION_MULTI_HOST_STATUS { 01712 UCHAR MultiHostEvent:4; 01713 UCHAR Reserved1:4; 01714 UCHAR MultiHostStatus:4; 01715 UCHAR Reserved2:3; 01716 UCHAR PersistentPrevented:1; 01717 UCHAR Priority[2]; 01718 } NOTIFICATION_MULTI_HOST_STATUS, *PNOTIFICATION_MULTI_HOST_STATUS; 01719 01720 typedef struct _NOTIFICATION_BUSY_STATUS { 01721 UCHAR DeviceBusyEvent:4; 01722 UCHAR Reserved:4; 01723 UCHAR DeviceBusyStatus; 01724 UCHAR Time[2]; 01725 } NOTIFICATION_BUSY_STATUS, *PNOTIFICATION_BUSY_STATUS; 01726 01727 typedef struct _READ_DVD_STRUCTURES_HEADER { 01728 UCHAR Length[2]; 01729 UCHAR Reserved[2]; 01730 UCHAR Data[0]; 01731 } READ_DVD_STRUCTURES_HEADER, *PREAD_DVD_STRUCTURES_HEADER; 01732 01733 typedef struct _CDVD_KEY_HEADER { 01734 UCHAR DataLength[2]; 01735 UCHAR Reserved[2]; 01736 UCHAR Data[0]; 01737 } CDVD_KEY_HEADER, *PCDVD_KEY_HEADER; 01738 01739 typedef struct _CDVD_REPORT_AGID_DATA { 01740 UCHAR Reserved1[3]; 01741 UCHAR Reserved2:6; 01742 UCHAR AGID:2; 01743 } CDVD_REPORT_AGID_DATA, *PCDVD_REPORT_AGID_DATA; 01744 01745 typedef struct _CDVD_CHALLENGE_KEY_DATA { 01746 UCHAR ChallengeKeyValue[10]; 01747 UCHAR Reserved[2]; 01748 } CDVD_CHALLENGE_KEY_DATA, *PCDVD_CHALLENGE_KEY_DATA; 01749 01750 typedef struct _CDVD_KEY_DATA { 01751 UCHAR Key[5]; 01752 UCHAR Reserved[3]; 01753 } CDVD_KEY_DATA, *PCDVD_KEY_DATA; 01754 01755 typedef struct _CDVD_REPORT_ASF_DATA { 01756 UCHAR Reserved1[3]; 01757 UCHAR Success:1; 01758 UCHAR Reserved2:7; 01759 } CDVD_REPORT_ASF_DATA, *PCDVD_REPORT_ASF_DATA; 01760 01761 typedef struct _CDVD_TITLE_KEY_HEADER { 01762 UCHAR DataLength[2]; 01763 UCHAR Reserved1[1]; 01764 UCHAR Reserved2:3; 01765 UCHAR CGMS:2; 01766 UCHAR CP_SEC:1; 01767 UCHAR CPM:1; 01768 UCHAR Zero:1; 01769 CDVD_KEY_DATA TitleKey; 01770 } CDVD_TITLE_KEY_HEADER, *PCDVD_TITLE_KEY_HEADER; 01771 01772 typedef struct _FORMAT_DESCRIPTOR { 01773 UCHAR NumberOfBlocks[4]; 01774 UCHAR FormatSubType:2; 01775 UCHAR FormatType:6; 01776 UCHAR BlockLength[3]; 01777 } FORMAT_DESCRIPTOR, *PFORMAT_DESCRIPTOR; 01778 01779 typedef struct _FORMAT_LIST_HEADER { 01780 UCHAR Reserved; 01781 UCHAR VendorSpecific:1; 01782 UCHAR Immediate:1; 01783 UCHAR TryOut:1; 01784 UCHAR IP:1; 01785 UCHAR STPF:1; 01786 UCHAR DCRT:1; 01787 UCHAR DPRY:1; 01788 UCHAR FOV:1; 01789 UCHAR FormatDescriptorLength[2]; 01790 FORMAT_DESCRIPTOR Descriptors[0]; 01791 } FORMAT_LIST_HEADER, *PFORMAT_LIST_HEADER; 01792 01793 typedef struct _FORMATTED_CAPACITY_DESCRIPTOR { 01794 UCHAR NumberOfBlocks[4]; 01795 UCHAR Maximum:1; 01796 UCHAR Valid:1; 01797 UCHAR FormatType:6; 01798 UCHAR BlockLength[3]; 01799 } FORMATTED_CAPACITY_DESCRIPTOR, *PFORMATTED_CAPACITY_DESCRIPTOR; 01800 01801 typedef struct _FORMATTED_CAPACITY_LIST { 01802 UCHAR Reserved[3]; 01803 UCHAR CapacityListLength; 01804 FORMATTED_CAPACITY_DESCRIPTOR Descriptors[0]; 01805 } FORMATTED_CAPACITY_LIST, *PFORMATTED_CAPACITY_LIST; 01806 01807 typedef struct _OPC_TABLE_ENTRY { 01808 UCHAR Speed[2]; 01809 UCHAR OPCValue[6]; 01810 } OPC_TABLE_ENTRY, *POPC_TABLE_ENTRY; 01811 01812 typedef struct _DISC_INFORMATION { 01813 UCHAR Length[2]; 01814 UCHAR DiscStatus:2; 01815 UCHAR LastSessionStatus:2; 01816 UCHAR Erasable:1; 01817 UCHAR Reserved1:3; 01818 UCHAR FirstTrackNumber; 01819 UCHAR NumberOfSessionsLsb; 01820 UCHAR LastSessionFirstTrackLsb; 01821 UCHAR LastSessionLastTrackLsb; 01822 UCHAR MrwStatus:2; 01823 UCHAR MrwDirtyBit:1; 01824 UCHAR Reserved2:2; 01825 UCHAR URU:1; 01826 UCHAR DBC_V:1; 01827 UCHAR DID_V:1; 01828 UCHAR DiscType; 01829 UCHAR NumberOfSessionsMsb; 01830 UCHAR LastSessionFirstTrackMsb; 01831 UCHAR LastSessionLastTrackMsb; 01832 UCHAR DiskIdentification[4]; 01833 UCHAR LastSessionLeadIn[4]; 01834 UCHAR LastPossibleLeadOutStartTime[4]; 01835 UCHAR DiskBarCode[8]; 01836 UCHAR Reserved4; 01837 UCHAR NumberOPCEntries; 01838 OPC_TABLE_ENTRY OPCTable[1]; 01839 } DISC_INFORMATION, *PDISC_INFORMATION; 01840 01841 typedef struct _DISK_INFORMATION { 01842 UCHAR Length[2]; 01843 UCHAR DiskStatus:2; 01844 UCHAR LastSessionStatus:2; 01845 UCHAR Erasable:1; 01846 UCHAR Reserved1:3; 01847 UCHAR FirstTrackNumber; 01848 UCHAR NumberOfSessions; 01849 UCHAR LastSessionFirstTrack; 01850 UCHAR LastSessionLastTrack; 01851 UCHAR Reserved2:5; 01852 UCHAR GEN:1; 01853 UCHAR DBC_V:1; 01854 UCHAR DID_V:1; 01855 UCHAR DiskType; 01856 UCHAR Reserved3[3]; 01857 UCHAR DiskIdentification[4]; 01858 UCHAR LastSessionLeadIn[4]; 01859 UCHAR LastPossibleStartTime[4]; 01860 UCHAR DiskBarCode[8]; 01861 UCHAR Reserved4; 01862 UCHAR NumberOPCEntries; 01863 OPC_TABLE_ENTRY OPCTable[0]; 01864 } DISK_INFORMATION, *PDISK_INFORMATION; 01865 01866 typedef struct _DATA_BLOCK_HEADER { 01867 UCHAR DataMode; 01868 UCHAR Reserved[4]; 01869 _ANONYMOUS_UNION union { 01870 UCHAR LogicalBlockAddress[4]; 01871 struct { 01872 UCHAR Reserved; 01873 UCHAR M; 01874 UCHAR S; 01875 UCHAR F; 01876 } MSF; 01877 } DUMMYUNIONNAME; 01878 } DATA_BLOCK_HEADER, *PDATA_BLOCK_HEADER; 01879 01880 typedef struct _TRACK_INFORMATION { 01881 UCHAR Length[2]; 01882 UCHAR TrackNumber; 01883 UCHAR SessionNumber; 01884 UCHAR Reserved1; 01885 UCHAR TrackMode:4; 01886 UCHAR Copy:1; 01887 UCHAR Damage:1; 01888 UCHAR Reserved2:2; 01889 UCHAR DataMode:4; 01890 UCHAR FP:1; 01891 UCHAR Packet:1; 01892 UCHAR Blank:1; 01893 UCHAR RT:1; 01894 UCHAR NWA_V:1; 01895 UCHAR Reserved3:7; 01896 UCHAR TrackStartAddress[4]; 01897 UCHAR NextWritableAddress[4]; 01898 UCHAR FreeBlocks[4]; 01899 UCHAR FixedPacketSize[4]; 01900 } TRACK_INFORMATION, *PTRACK_INFORMATION; 01901 01902 typedef struct _TRACK_INFORMATION2 { 01903 UCHAR Length[2]; 01904 UCHAR TrackNumberLsb; 01905 UCHAR SessionNumberLsb; 01906 UCHAR Reserved4; 01907 UCHAR TrackMode:4; 01908 UCHAR Copy:1; 01909 UCHAR Damage:1; 01910 UCHAR Reserved5:2; 01911 UCHAR DataMode:4; 01912 UCHAR FixedPacket:1; 01913 UCHAR Packet:1; 01914 UCHAR Blank:1; 01915 UCHAR ReservedTrack:1; 01916 UCHAR NWA_V:1; 01917 UCHAR LRA_V:1; 01918 UCHAR Reserved6:6; 01919 UCHAR TrackStartAddress[4]; 01920 UCHAR NextWritableAddress[4]; 01921 UCHAR FreeBlocks[4]; 01922 UCHAR FixedPacketSize[4]; 01923 UCHAR TrackSize[4]; 01924 UCHAR LastRecordedAddress[4]; 01925 UCHAR TrackNumberMsb; 01926 UCHAR SessionNumberMsb; 01927 UCHAR Reserved7[2]; 01928 } TRACK_INFORMATION2, *PTRACK_INFORMATION2; 01929 01930 typedef struct _TRACK_INFORMATION3 { 01931 UCHAR Length[2]; 01932 UCHAR TrackNumberLsb; 01933 UCHAR SessionNumberLsb; 01934 UCHAR Reserved4; 01935 UCHAR TrackMode:4; 01936 UCHAR Copy:1; 01937 UCHAR Damage:1; 01938 UCHAR Reserved5:2; 01939 UCHAR DataMode:4; 01940 UCHAR FixedPacket:1; 01941 UCHAR Packet:1; 01942 UCHAR Blank:1; 01943 UCHAR ReservedTrack:1; 01944 UCHAR NWA_V:1; 01945 UCHAR LRA_V:1; 01946 UCHAR Reserved6:6; 01947 UCHAR TrackStartAddress[4]; 01948 UCHAR NextWritableAddress[4]; 01949 UCHAR FreeBlocks[4]; 01950 UCHAR FixedPacketSize[4]; 01951 UCHAR TrackSize[4]; 01952 UCHAR LastRecordedAddress[4]; 01953 UCHAR TrackNumberMsb; 01954 UCHAR SessionNumberMsb; 01955 UCHAR Reserved7[2]; 01956 UCHAR ReadCompatibilityLba[4]; 01957 } TRACK_INFORMATION3, *PTRACK_INFORMATION3; 01958 01959 typedef struct _PERFORMANCE_DESCRIPTOR { 01960 UCHAR RandomAccess:1; 01961 UCHAR Exact:1; 01962 UCHAR RestoreDefaults:1; 01963 UCHAR WriteRotationControl:2; 01964 UCHAR Reserved1:3; 01965 UCHAR Reserved[3]; 01966 UCHAR StartLba[4]; 01967 UCHAR EndLba[4]; 01968 UCHAR ReadSize[4]; 01969 UCHAR ReadTime[4]; 01970 UCHAR WriteSize[4]; 01971 UCHAR WriteTime[4]; 01972 } PERFORMANCE_DESCRIPTOR, *PPERFORMANCE_DESCRIPTOR; 01973 01974 typedef struct _SCSI_EXTENDED_MESSAGE { 01975 UCHAR InitialMessageCode; 01976 UCHAR MessageLength; 01977 UCHAR MessageType; 01978 union _EXTENDED_ARGUMENTS { 01979 struct { 01980 UCHAR Modifier[4]; 01981 } Modify; 01982 struct { 01983 UCHAR TransferPeriod; 01984 UCHAR ReqAckOffset; 01985 } Synchronous; 01986 struct{ 01987 UCHAR Width; 01988 } Wide; 01989 } ExtendedArguments; 01990 }SCSI_EXTENDED_MESSAGE, *PSCSI_EXTENDED_MESSAGE; 01991 01992 #ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */ 01993 #define _INQUIRYDATA_DEFINED 01994 01995 #define INQUIRYDATABUFFERSIZE 36 01996 01997 #if (NTDDI_VERSION < NTDDI_WINXP) 01998 typedef struct _INQUIRYDATA { 01999 UCHAR DeviceType:5; 02000 UCHAR DeviceTypeQualifier:3; 02001 UCHAR DeviceTypeModifier:7; 02002 UCHAR RemovableMedia:1; 02003 UCHAR Versions; 02004 UCHAR ResponseDataFormat:4; 02005 UCHAR HiSupport:1; 02006 UCHAR NormACA:1; 02007 UCHAR ReservedBit:1; 02008 UCHAR AERC:1; 02009 UCHAR AdditionalLength; 02010 UCHAR Reserved[2]; 02011 UCHAR SoftReset:1; 02012 UCHAR CommandQueue:1; 02013 UCHAR Reserved2:1; 02014 UCHAR LinkedCommands:1; 02015 UCHAR Synchronous:1; 02016 UCHAR Wide16Bit:1; 02017 UCHAR Wide32Bit:1; 02018 UCHAR RelativeAddressing:1; 02019 UCHAR VendorId[8]; 02020 UCHAR ProductId[16]; 02021 UCHAR ProductRevisionLevel[4]; 02022 UCHAR VendorSpecific[20]; 02023 UCHAR Reserved3[40]; 02024 } INQUIRYDATA, *PINQUIRYDATA; 02025 #else 02026 typedef struct _INQUIRYDATA { 02027 UCHAR DeviceType:5; 02028 UCHAR DeviceTypeQualifier:3; 02029 UCHAR DeviceTypeModifier:7; 02030 UCHAR RemovableMedia:1; 02031 _ANONYMOUS_UNION union { 02032 UCHAR Versions; 02033 _ANONYMOUS_STRUCT struct { 02034 UCHAR ANSIVersion:3; 02035 UCHAR ECMAVersion:3; 02036 UCHAR ISOVersion:2; 02037 } DUMMYSTRUCTNAME; 02038 } DUMMYUNIONNAME; 02039 UCHAR ResponseDataFormat:4; 02040 UCHAR HiSupport:1; 02041 UCHAR NormACA:1; 02042 UCHAR TerminateTask:1; 02043 UCHAR AERC:1; 02044 UCHAR AdditionalLength; 02045 UCHAR Reserved; 02046 UCHAR Addr16:1; 02047 UCHAR Addr32:1; 02048 UCHAR AckReqQ:1; 02049 UCHAR MediumChanger:1; 02050 UCHAR MultiPort:1; 02051 UCHAR ReservedBit2:1; 02052 UCHAR EnclosureServices:1; 02053 UCHAR ReservedBit3:1; 02054 UCHAR SoftReset:1; 02055 UCHAR CommandQueue:1; 02056 UCHAR TransferDisable:1; 02057 UCHAR LinkedCommands:1; 02058 UCHAR Synchronous:1; 02059 UCHAR Wide16Bit:1; 02060 UCHAR Wide32Bit:1; 02061 UCHAR RelativeAddressing:1; 02062 UCHAR VendorId[8]; 02063 UCHAR ProductId[16]; 02064 UCHAR ProductRevisionLevel[4]; 02065 UCHAR VendorSpecific[20]; 02066 UCHAR Reserved3[40]; 02067 } INQUIRYDATA, *PINQUIRYDATA; 02068 #endif /* (NTDDI_VERSION < NTDDI_WINXP) */ 02069 02070 #endif /* _INQUIRYDATA_DEFINED */ 02071 02072 typedef struct _VPD_MEDIA_SERIAL_NUMBER_PAGE { 02073 UCHAR DeviceType:5; 02074 UCHAR DeviceTypeQualifier:3; 02075 UCHAR PageCode; 02076 UCHAR Reserved; 02077 UCHAR PageLength; 02078 UCHAR SerialNumber[0]; 02079 } VPD_MEDIA_SERIAL_NUMBER_PAGE, *PVPD_MEDIA_SERIAL_NUMBER_PAGE; 02080 02081 typedef struct _VPD_SERIAL_NUMBER_PAGE { 02082 UCHAR DeviceType:5; 02083 UCHAR DeviceTypeQualifier:3; 02084 UCHAR PageCode; 02085 UCHAR Reserved; 02086 UCHAR PageLength; 02087 UCHAR SerialNumber[0]; 02088 } VPD_SERIAL_NUMBER_PAGE, *PVPD_SERIAL_NUMBER_PAGE; 02089 02090 typedef enum _VPD_CODE_SET { 02091 VpdCodeSetReserved = 0, 02092 VpdCodeSetBinary = 1, 02093 VpdCodeSetAscii = 2, 02094 VpdCodeSetUTF8 = 3 02095 } VPD_CODE_SET, *PVPD_CODE_SET; 02096 02097 typedef enum _VPD_ASSOCIATION { 02098 VpdAssocDevice = 0, 02099 VpdAssocPort = 1, 02100 VpdAssocTarget = 2, 02101 VpdAssocReserved1 = 3, 02102 VpdAssocReserved2 = 4 02103 } VPD_ASSOCIATION, *PVPD_ASSOCIATION; 02104 02105 typedef enum _VPD_IDENTIFIER_TYPE { 02106 VpdIdentifierTypeVendorSpecific = 0, 02107 VpdIdentifierTypeVendorId = 1, 02108 VpdIdentifierTypeEUI64 = 2, 02109 VpdIdentifierTypeFCPHName = 3, 02110 VpdIdentifierTypePortRelative = 4, 02111 VpdIdentifierTypeTargetPortGroup = 5, 02112 VpdIdentifierTypeLogicalUnitGroup = 6, 02113 VpdIdentifierTypeMD5LogicalUnitId = 7, 02114 VpdIdentifierTypeSCSINameString = 8 02115 } VPD_IDENTIFIER_TYPE, *PVPD_IDENTIFIER_TYPE; 02116 02117 typedef struct _VPD_IDENTIFICATION_DESCRIPTOR { 02118 UCHAR CodeSet:4; 02119 UCHAR Reserved:4; 02120 UCHAR IdentifierType:4; 02121 UCHAR Association:2; 02122 UCHAR Reserved2:2; 02123 UCHAR Reserved3; 02124 UCHAR IdentifierLength; 02125 UCHAR Identifier[0]; 02126 } VPD_IDENTIFICATION_DESCRIPTOR, *PVPD_IDENTIFICATION_DESCRIPTOR; 02127 02128 typedef struct _VPD_IDENTIFICATION_PAGE { 02129 UCHAR DeviceType:5; 02130 UCHAR DeviceTypeQualifier:3; 02131 UCHAR PageCode; 02132 UCHAR Reserved; 02133 UCHAR PageLength; 02134 UCHAR Descriptors[0]; 02135 } VPD_IDENTIFICATION_PAGE, *PVPD_IDENTIFICATION_PAGE; 02136 02137 typedef struct _VPD_SUPPORTED_PAGES_PAGE { 02138 UCHAR DeviceType:5; 02139 UCHAR DeviceTypeQualifier:3; 02140 UCHAR PageCode; 02141 UCHAR Reserved; 02142 UCHAR PageLength; 02143 UCHAR SupportedPageList[0]; 02144 } VPD_SUPPORTED_PAGES_PAGE, *PVPD_SUPPORTED_PAGES_PAGE; 02145 02146 typedef struct _PRI_REGISTRATION_LIST { 02147 UCHAR Generation[4]; 02148 UCHAR AdditionalLength[4]; 02149 UCHAR ReservationKeyList[0][8]; 02150 } PRI_REGISTRATION_LIST, *PPRI_REGISTRATION_LIST; 02151 02152 typedef struct _PRI_RESERVATION_DESCRIPTOR { 02153 UCHAR ReservationKey[8]; 02154 UCHAR ScopeSpecificAddress[4]; 02155 UCHAR Reserved; 02156 UCHAR Type:4; 02157 UCHAR Scope:4; 02158 UCHAR Obsolete[2]; 02159 } PRI_RESERVATION_DESCRIPTOR, *PPRI_RESERVATION_DESCRIPTOR; 02160 02161 typedef struct _PRI_RESERVATION_LIST { 02162 UCHAR Generation[4]; 02163 UCHAR AdditionalLength[4]; 02164 PRI_RESERVATION_DESCRIPTOR Reservations[0]; 02165 } PRI_RESERVATION_LIST, *PPRI_RESERVATION_LIST; 02166 02167 typedef struct _PRO_PARAMETER_LIST { 02168 UCHAR ReservationKey[8]; 02169 UCHAR ServiceActionReservationKey[8]; 02170 UCHAR ScopeSpecificAddress[4]; 02171 UCHAR ActivatePersistThroughPowerLoss:1; 02172 UCHAR Reserved1:7; 02173 UCHAR Reserved2; 02174 UCHAR Obsolete[2]; 02175 } PRO_PARAMETER_LIST, *PPRO_PARAMETER_LIST; 02176 02177 typedef struct _SENSE_DATA { 02178 UCHAR ErrorCode:7; 02179 UCHAR Valid:1; 02180 UCHAR SegmentNumber; 02181 UCHAR SenseKey:4; 02182 UCHAR Reserved:1; 02183 UCHAR IncorrectLength:1; 02184 UCHAR EndOfMedia:1; 02185 UCHAR FileMark:1; 02186 UCHAR Information[4]; 02187 UCHAR AdditionalSenseLength; 02188 UCHAR CommandSpecificInformation[4]; 02189 UCHAR AdditionalSenseCode; 02190 UCHAR AdditionalSenseCodeQualifier; 02191 UCHAR FieldReplaceableUnitCode; 02192 UCHAR SenseKeySpecific[3]; 02193 } SENSE_DATA, *PSENSE_DATA; 02194 02195 /* Read Capacity Data. Returned in Big Endian format */ 02196 typedef struct _READ_CAPACITY_DATA { 02197 ULONG LogicalBlockAddress; 02198 ULONG BytesPerBlock; 02199 } READ_CAPACITY_DATA, *PREAD_CAPACITY_DATA; 02200 02201 typedef struct _READ_CAPACITY_DATA_EX { 02202 LARGE_INTEGER LogicalBlockAddress; 02203 ULONG BytesPerBlock; 02204 } READ_CAPACITY_DATA_EX, *PREAD_CAPACITY_DATA_EX; 02205 02206 /* Read Block Limits Data. Returned in Big Endian format */ 02207 typedef struct _READ_BLOCK_LIMITS { 02208 UCHAR Reserved; 02209 UCHAR BlockMaximumSize[3]; 02210 UCHAR BlockMinimumSize[2]; 02211 } READ_BLOCK_LIMITS_DATA, *PREAD_BLOCK_LIMITS_DATA; 02212 02213 typedef struct _READ_BUFFER_CAPACITY_DATA { 02214 UCHAR DataLength[2]; 02215 UCHAR Reserved1; 02216 UCHAR BlockDataReturned:1; 02217 UCHAR Reserved4:7; 02218 UCHAR TotalBufferSize[4]; 02219 UCHAR AvailableBufferSize[4]; 02220 } READ_BUFFER_CAPACITY_DATA, *PREAD_BUFFER_CAPACITY_DATA; 02221 02222 typedef struct _MODE_PARAMETER_HEADER { 02223 UCHAR ModeDataLength; 02224 UCHAR MediumType; 02225 UCHAR DeviceSpecificParameter; 02226 UCHAR BlockDescriptorLength; 02227 } MODE_PARAMETER_HEADER, *PMODE_PARAMETER_HEADER; 02228 02229 typedef struct _MODE_PARAMETER_HEADER10 { 02230 UCHAR ModeDataLength[2]; 02231 UCHAR MediumType; 02232 UCHAR DeviceSpecificParameter; 02233 UCHAR Reserved[2]; 02234 UCHAR BlockDescriptorLength[2]; 02235 } MODE_PARAMETER_HEADER10, *PMODE_PARAMETER_HEADER10; 02236 02237 typedef struct _MODE_PARAMETER_BLOCK { 02238 UCHAR DensityCode; 02239 UCHAR NumberOfBlocks[3]; 02240 UCHAR Reserved; 02241 UCHAR BlockLength[3]; 02242 } MODE_PARAMETER_BLOCK, *PMODE_PARAMETER_BLOCK; 02243 02244 typedef struct _MODE_DISCONNECT_PAGE { 02245 UCHAR PageCode:6; 02246 UCHAR Reserved:1; 02247 UCHAR PageSavable:1; 02248 UCHAR PageLength; 02249 UCHAR BufferFullRatio; 02250 UCHAR BufferEmptyRatio; 02251 UCHAR BusInactivityLimit[2]; 02252 UCHAR BusDisconnectTime[2]; 02253 UCHAR BusConnectTime[2]; 02254 UCHAR MaximumBurstSize[2]; 02255 UCHAR DataTransferDisconnect:2; 02256 UCHAR Reserved2[3]; 02257 } MODE_DISCONNECT_PAGE, *PMODE_DISCONNECT_PAGE; 02258 02259 typedef struct _MODE_CACHING_PAGE { 02260 UCHAR PageCode:6; 02261 UCHAR Reserved:1; 02262 UCHAR PageSavable:1; 02263 UCHAR PageLength; 02264 UCHAR ReadDisableCache:1; 02265 UCHAR MultiplicationFactor:1; 02266 UCHAR WriteCacheEnable:1; 02267 UCHAR Reserved2:5; 02268 UCHAR WriteRetensionPriority:4; 02269 UCHAR ReadRetensionPriority:4; 02270 UCHAR DisablePrefetchTransfer[2]; 02271 UCHAR MinimumPrefetch[2]; 02272 UCHAR MaximumPrefetch[2]; 02273 UCHAR MaximumPrefetchCeiling[2]; 02274 } MODE_CACHING_PAGE, *PMODE_CACHING_PAGE; 02275 02276 typedef struct _MODE_CDROM_WRITE_PARAMETERS_PAGE2 { 02277 UCHAR PageCode:6; 02278 UCHAR Reserved:1; 02279 UCHAR PageSavable:1; 02280 UCHAR PageLength; 02281 UCHAR WriteType:4; 02282 UCHAR TestWrite:1; 02283 UCHAR LinkSizeValid:1; 02284 UCHAR BufferUnderrunFreeEnabled:1; 02285 UCHAR Reserved2:1; 02286 UCHAR TrackMode:4; 02287 UCHAR Copy:1; 02288 UCHAR FixedPacket:1; 02289 UCHAR MultiSession:2; 02290 UCHAR DataBlockType:4; 02291 UCHAR Reserved3:4; 02292 UCHAR LinkSize; 02293 UCHAR Reserved4; 02294 UCHAR HostApplicationCode:6; 02295 UCHAR Reserved5:2; 02296 UCHAR SessionFormat; 02297 UCHAR Reserved6; 02298 UCHAR PacketSize[4]; 02299 UCHAR AudioPauseLength[2]; 02300 UCHAR MediaCatalogNumber[16]; 02301 UCHAR ISRC[16]; 02302 UCHAR SubHeaderData[4]; 02303 } MODE_CDROM_WRITE_PARAMETERS_PAGE2, *PMODE_CDROM_WRITE_PARAMETERS_PAGE2; 02304 02305 typedef struct _MODE_MRW_PAGE { 02306 UCHAR PageCode:6; 02307 UCHAR Reserved:1; 02308 UCHAR PageSavable:1; 02309 UCHAR PageLength; 02310 UCHAR Reserved1; 02311 UCHAR LbaSpace:1; 02312 UCHAR Reserved2:7; 02313 UCHAR Reserved3[4]; 02314 } MODE_MRW_PAGE, *PMODE_MRW_PAGE; 02315 02316 typedef struct _MODE_FLEXIBLE_DISK_PAGE { 02317 UCHAR PageCode:6; 02318 UCHAR Reserved:1; 02319 UCHAR PageSavable:1; 02320 UCHAR PageLength; 02321 UCHAR TransferRate[2]; 02322 UCHAR NumberOfHeads; 02323 UCHAR SectorsPerTrack; 02324 UCHAR BytesPerSector[2]; 02325 UCHAR NumberOfCylinders[2]; 02326 UCHAR StartWritePrecom[2]; 02327 UCHAR StartReducedCurrent[2]; 02328 UCHAR StepRate[2]; 02329 UCHAR StepPluseWidth; 02330 UCHAR HeadSettleDelay[2]; 02331 UCHAR MotorOnDelay; 02332 UCHAR MotorOffDelay; 02333 UCHAR Reserved2:5; 02334 UCHAR MotorOnAsserted:1; 02335 UCHAR StartSectorNumber:1; 02336 UCHAR TrueReadySignal:1; 02337 UCHAR StepPlusePerCyclynder:4; 02338 UCHAR Reserved3:4; 02339 UCHAR WriteCompenstation; 02340 UCHAR HeadLoadDelay; 02341 UCHAR HeadUnloadDelay; 02342 UCHAR Pin2Usage:4; 02343 UCHAR Pin34Usage:4; 02344 UCHAR Pin1Usage:4; 02345 UCHAR Pin4Usage:4; 02346 UCHAR MediumRotationRate[2]; 02347 UCHAR Reserved4[2]; 02348 } MODE_FLEXIBLE_DISK_PAGE, *PMODE_FLEXIBLE_DISK_PAGE; 02349 02350 typedef struct _MODE_FORMAT_PAGE { 02351 UCHAR PageCode:6; 02352 UCHAR Reserved:1; 02353 UCHAR PageSavable:1; 02354 UCHAR PageLength; 02355 UCHAR TracksPerZone[2]; 02356 UCHAR AlternateSectorsPerZone[2]; 02357 UCHAR AlternateTracksPerZone[2]; 02358 UCHAR AlternateTracksPerLogicalUnit[2]; 02359 UCHAR SectorsPerTrack[2]; 02360 UCHAR BytesPerPhysicalSector[2]; 02361 UCHAR Interleave[2]; 02362 UCHAR TrackSkewFactor[2]; 02363 UCHAR CylinderSkewFactor[2]; 02364 UCHAR Reserved2:4; 02365 UCHAR SurfaceFirst:1; 02366 UCHAR RemovableMedia:1; 02367 UCHAR HardSectorFormating:1; 02368 UCHAR SoftSectorFormating:1; 02369 UCHAR Reserved3[3]; 02370 } MODE_FORMAT_PAGE, *PMODE_FORMAT_PAGE; 02371 02372 typedef struct _MODE_RIGID_GEOMETRY_PAGE { 02373 UCHAR PageCode:6; 02374 UCHAR Reserved:1; 02375 UCHAR PageSavable:1; 02376 UCHAR PageLength; 02377 UCHAR NumberOfCylinders[3]; 02378 UCHAR NumberOfHeads; 02379 UCHAR StartWritePrecom[3]; 02380 UCHAR StartReducedCurrent[3]; 02381 UCHAR DriveStepRate[2]; 02382 UCHAR LandZoneCyclinder[3]; 02383 UCHAR RotationalPositionLock:2; 02384 UCHAR Reserved2:6; 02385 UCHAR RotationOffset; 02386 UCHAR Reserved3; 02387 UCHAR RoataionRate[2]; 02388 UCHAR Reserved4[2]; 02389 } MODE_RIGID_GEOMETRY_PAGE, *PMODE_RIGID_GEOMETRY_PAGE; 02390 02391 typedef struct _MODE_READ_WRITE_RECOVERY_PAGE { 02392 UCHAR PageCode:6; 02393 UCHAR Reserved1:1; 02394 UCHAR PSBit:1; 02395 UCHAR PageLength; 02396 UCHAR DCRBit:1; 02397 UCHAR DTEBit:1; 02398 UCHAR PERBit:1; 02399 UCHAR EERBit:1; 02400 UCHAR RCBit:1; 02401 UCHAR TBBit:1; 02402 UCHAR ARRE:1; 02403 UCHAR AWRE:1; 02404 UCHAR ReadRetryCount; 02405 UCHAR Reserved4[4]; 02406 UCHAR WriteRetryCount; 02407 UCHAR Reserved5[3]; 02408 } MODE_READ_WRITE_RECOVERY_PAGE, *PMODE_READ_WRITE_RECOVERY_PAGE; 02409 02410 typedef struct _MODE_READ_RECOVERY_PAGE { 02411 UCHAR PageCode:6; 02412 UCHAR Reserved1:1; 02413 UCHAR PSBit:1; 02414 UCHAR PageLength; 02415 UCHAR DCRBit:1; 02416 UCHAR DTEBit:1; 02417 UCHAR PERBit:1; 02418 UCHAR Reserved2:1; 02419 UCHAR RCBit:1; 02420 UCHAR TBBit:1; 02421 UCHAR Reserved3:2; 02422 UCHAR ReadRetryCount; 02423 UCHAR Reserved4[4]; 02424 } MODE_READ_RECOVERY_PAGE, *PMODE_READ_RECOVERY_PAGE; 02425 02426 typedef struct _MODE_INFO_EXCEPTIONS { 02427 UCHAR PageCode:6; 02428 UCHAR Reserved1:1; 02429 UCHAR PSBit:1; 02430 UCHAR PageLength; 02431 _ANONYMOUS_UNION union { 02432 UCHAR Flags; 02433 _ANONYMOUS_STRUCT struct { 02434 UCHAR LogErr:1; 02435 UCHAR Reserved2:1; 02436 UCHAR Test:1; 02437 UCHAR Dexcpt:1; 02438 UCHAR Reserved3:3; 02439 UCHAR Perf:1; 02440 } DUMMYSTRUCTNAME; 02441 } DUMMYUNIONNAME; 02442 UCHAR ReportMethod:4; 02443 UCHAR Reserved4:4; 02444 UCHAR IntervalTimer[4]; 02445 UCHAR ReportCount[4]; 02446 } MODE_INFO_EXCEPTIONS, *PMODE_INFO_EXCEPTIONS; 02447 02448 typedef struct _POWER_CONDITION_PAGE { 02449 UCHAR PageCode:6; 02450 UCHAR Reserved:1; 02451 UCHAR PSBit:1; 02452 UCHAR PageLength; 02453 UCHAR Reserved2; 02454 UCHAR Standby:1; 02455 UCHAR Idle:1; 02456 UCHAR Reserved3:6; 02457 UCHAR IdleTimer[4]; 02458 UCHAR StandbyTimer[4]; 02459 } POWER_CONDITION_PAGE, *PPOWER_CONDITION_PAGE; 02460 02461 typedef struct _CDDA_OUTPUT_PORT { 02462 UCHAR ChannelSelection:4; 02463 UCHAR Reserved:4; 02464 UCHAR Volume; 02465 } CDDA_OUTPUT_PORT, *PCDDA_OUTPUT_PORT; 02466 02467 typedef struct _CDAUDIO_CONTROL_PAGE { 02468 UCHAR PageCode:6; 02469 UCHAR Reserved:1; 02470 UCHAR PSBit:1; 02471 UCHAR PageLength; 02472 UCHAR Reserved2:1; 02473 UCHAR StopOnTrackCrossing:1; 02474 UCHAR Immediate:1; 02475 UCHAR Reserved3:5; 02476 UCHAR Reserved4[3]; 02477 UCHAR Obsolete[2]; 02478 CDDA_OUTPUT_PORT CDDAOutputPorts[4]; 02479 } CDAUDIO_CONTROL_PAGE, *PCDAUDIO_CONTROL_PAGE; 02480 02481 typedef struct _CDVD_FEATURE_SET_PAGE { 02482 UCHAR PageCode:6; 02483 UCHAR Reserved:1; 02484 UCHAR PSBit:1; 02485 UCHAR PageLength; 02486 UCHAR CDAudio[2]; 02487 UCHAR EmbeddedChanger[2]; 02488 UCHAR PacketSMART[2]; 02489 UCHAR PersistantPrevent[2]; 02490 UCHAR EventStatusNotification[2]; 02491 UCHAR DigitalOutput[2]; 02492 UCHAR CDSequentialRecordable[2]; 02493 UCHAR DVDSequentialRecordable[2]; 02494 UCHAR RandomRecordable[2]; 02495 UCHAR KeyExchange[2]; 02496 UCHAR Reserved2[2]; 02497 } CDVD_FEATURE_SET_PAGE, *PCDVD_FEATURE_SET_PAGE; 02498 02499 typedef struct _CDVD_INACTIVITY_TIMEOUT_PAGE { 02500 UCHAR PageCode:6; 02501 UCHAR Reserved:1; 02502 UCHAR PSBit:1; 02503 UCHAR PageLength; 02504 UCHAR Reserved2[2]; 02505 UCHAR SWPP:1; 02506 UCHAR DISP:1; 02507 UCHAR Reserved3:6; 02508 UCHAR Reserved4; 02509 UCHAR GroupOneMinimumTimeout[2]; 02510 UCHAR GroupTwoMinimumTimeout[2]; 02511 } CDVD_INACTIVITY_TIMEOUT_PAGE, *PCDVD_INACTIVITY_TIMEOUT_PAGE; 02512 02513 typedef struct _CDVD_CAPABILITIES_PAGE { 02514 UCHAR PageCode:6; 02515 UCHAR Reserved:1; 02516 UCHAR PSBit:1; 02517 UCHAR PageLength; 02518 UCHAR CDRRead:1; 02519 UCHAR CDERead:1; 02520 UCHAR Method2:1; 02521 UCHAR DVDROMRead:1; 02522 UCHAR DVDRRead:1; 02523 UCHAR DVDRAMRead:1; 02524 UCHAR Reserved2:2; 02525 UCHAR CDRWrite:1; 02526 UCHAR CDEWrite:1; 02527 UCHAR TestWrite:1; 02528 UCHAR Reserved3:1; 02529 UCHAR DVDRWrite:1; 02530 UCHAR DVDRAMWrite:1; 02531 UCHAR Reserved4:2; 02532 UCHAR AudioPlay:1; 02533 UCHAR Composite:1; 02534 UCHAR DigitalPortOne:1; 02535 UCHAR DigitalPortTwo:1; 02536 UCHAR Mode2Form1:1; 02537 UCHAR Mode2Form2:1; 02538 UCHAR MultiSession:1; 02539 UCHAR BufferUnderrunFree:1; 02540 UCHAR CDDA:1; 02541 UCHAR CDDAAccurate:1; 02542 UCHAR RWSupported:1; 02543 UCHAR RWDeinterleaved:1; 02544 UCHAR C2Pointers:1; 02545 UCHAR ISRC:1; 02546 UCHAR UPC:1; 02547 UCHAR ReadBarCodeCapable:1; 02548 UCHAR Lock:1; 02549 UCHAR LockState:1; 02550 UCHAR PreventJumper:1; 02551 UCHAR Eject:1; 02552 UCHAR Reserved6:1; 02553 UCHAR LoadingMechanismType:3; 02554 UCHAR SeparateVolume:1; 02555 UCHAR SeperateChannelMute:1; 02556 UCHAR SupportsDiskPresent:1; 02557 UCHAR SWSlotSelection:1; 02558 UCHAR SideChangeCapable:1; 02559 UCHAR RWInLeadInReadable:1; 02560 UCHAR Reserved7:2; 02561 _ANONYMOUS_UNION union { 02562 UCHAR ReadSpeedMaximum[2]; 02563 UCHAR ObsoleteReserved[2]; 02564 } DUMMYUNIONNAME; 02565 UCHAR NumberVolumeLevels[2]; 02566 UCHAR BufferSize[2]; 02567 _ANONYMOUS_UNION union { 02568 UCHAR ReadSpeedCurrent[2]; 02569 UCHAR ObsoleteReserved2[2]; 02570 } DUMMYUNIONNAME2; 02571 UCHAR ObsoleteReserved3; 02572 UCHAR Reserved8:1; 02573 UCHAR BCK:1; 02574 UCHAR RCK:1; 02575 UCHAR LSBF:1; 02576 UCHAR Length:2; 02577 UCHAR Reserved9:2; 02578 _ANONYMOUS_UNION union { 02579 UCHAR WriteSpeedMaximum[2]; 02580 UCHAR ObsoleteReserved4[2]; 02581 } DUMMYUNIONNAME3; 02582 _ANONYMOUS_UNION union { 02583 UCHAR WriteSpeedCurrent[2]; 02584 UCHAR ObsoleteReserved11[2]; 02585 } DUMMYUNIONNAME4; 02586 _ANONYMOUS_UNION union { 02587 UCHAR CopyManagementRevision[2]; 02588 UCHAR Reserved10[2]; 02589 } DUMMYUNIONNAME5; 02590 } CDVD_CAPABILITIES_PAGE, *PCDVD_CAPABILITIES_PAGE; 02591 02592 typedef struct _LUN_LIST { 02593 UCHAR LunListLength[4]; 02594 UCHAR Reserved[4]; 02595 UCHAR Lun[0][8]; 02596 } LUN_LIST, *PLUN_LIST; 02597 02598 typedef struct _MODE_PARM_READ_WRITE { 02599 MODE_PARAMETER_HEADER ParameterListHeader; 02600 MODE_PARAMETER_BLOCK ParameterListBlock; 02601 } MODE_PARM_READ_WRITE_DATA, *PMODE_PARM_READ_WRITE_DATA; 02602 02603 typedef struct _PORT_OUTPUT { 02604 UCHAR ChannelSelection; 02605 UCHAR Volume; 02606 } PORT_OUTPUT, *PPORT_OUTPUT; 02607 02608 typedef struct _AUDIO_OUTPUT { 02609 UCHAR CodePage; 02610 UCHAR ParameterLength; 02611 UCHAR Immediate; 02612 UCHAR Reserved[2]; 02613 UCHAR LbaFormat; 02614 UCHAR LogicalBlocksPerSecond[2]; 02615 PORT_OUTPUT PortOutput[4]; 02616 } AUDIO_OUTPUT, *PAUDIO_OUTPUT; 02617 02618 /* Atapi 2.5 changers */ 02619 typedef struct _MECHANICAL_STATUS_INFORMATION_HEADER { 02620 UCHAR CurrentSlot:5; 02621 UCHAR ChangerState:2; 02622 UCHAR Fault:1; 02623 UCHAR Reserved:5; 02624 UCHAR MechanismState:3; 02625 UCHAR CurrentLogicalBlockAddress[3]; 02626 UCHAR NumberAvailableSlots; 02627 UCHAR SlotTableLength[2]; 02628 } MECHANICAL_STATUS_INFORMATION_HEADER, *PMECHANICAL_STATUS_INFORMATION_HEADER; 02629 02630 typedef struct _SLOT_TABLE_INFORMATION { 02631 UCHAR DiscChanged:1; 02632 UCHAR Reserved:6; 02633 UCHAR DiscPresent:1; 02634 UCHAR Reserved2[3]; 02635 } SLOT_TABLE_INFORMATION, *PSLOT_TABLE_INFORMATION; 02636 02637 typedef struct _MECHANICAL_STATUS { 02638 MECHANICAL_STATUS_INFORMATION_HEADER MechanicalStatusHeader; 02639 SLOT_TABLE_INFORMATION SlotTableInfo[1]; 02640 } MECHANICAL_STATUS, *PMECHANICAL_STATUS; 02641 02642 /* Tape definitions */ 02643 typedef struct _TAPE_POSITION_DATA { 02644 UCHAR Reserved1:2; 02645 UCHAR BlockPositionUnsupported:1; 02646 UCHAR Reserved2:3; 02647 UCHAR EndOfPartition:1; 02648 UCHAR BeginningOfPartition:1; 02649 UCHAR PartitionNumber; 02650 USHORT Reserved3; 02651 UCHAR FirstBlock[4]; 02652 UCHAR LastBlock[4]; 02653 UCHAR Reserved4; 02654 UCHAR NumberOfBlocks[3]; 02655 UCHAR NumberOfBytes[4]; 02656 } TAPE_POSITION_DATA, *PTAPE_POSITION_DATA; 02657 02658 /* This structure is used to convert little endian ULONGs 02659 to SCSI CDB big endians values. */ 02660 typedef union _EIGHT_BYTE { 02661 _ANONYMOUS_STRUCT struct { 02662 UCHAR Byte0; 02663 UCHAR Byte1; 02664 UCHAR Byte2; 02665 UCHAR Byte3; 02666 UCHAR Byte4; 02667 UCHAR Byte5; 02668 UCHAR Byte6; 02669 UCHAR Byte7; 02670 } DUMMYSTRUCTNAME; 02671 ULONGLONG AsULongLong; 02672 } EIGHT_BYTE, *PEIGHT_BYTE; 02673 02674 typedef union _FOUR_BYTE { 02675 _ANONYMOUS_STRUCT struct { 02676 UCHAR Byte0; 02677 UCHAR Byte1; 02678 UCHAR Byte2; 02679 UCHAR Byte3; 02680 } DUMMYSTRUCTNAME; 02681 ULONG AsULong; 02682 } FOUR_BYTE, *PFOUR_BYTE; 02683 02684 typedef union _TWO_BYTE { 02685 _ANONYMOUS_STRUCT struct { 02686 UCHAR Byte0; 02687 UCHAR Byte1; 02688 } DUMMYSTRUCTNAME; 02689 USHORT AsUShort; 02690 } TWO_BYTE, *PTWO_BYTE; 02691 02692 /* Byte reversing macro for converting between 02693 big- and little-endian formats */ 02694 #define REVERSE_BYTES_QUAD(Destination, Source) { \ 02695 PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \ 02696 PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \ 02697 _val1->Byte7 = _val2->Byte0; \ 02698 _val1->Byte6 = _val2->Byte1; \ 02699 _val1->Byte5 = _val2->Byte2; \ 02700 _val1->Byte4 = _val2->Byte3; \ 02701 _val1->Byte3 = _val2->Byte4; \ 02702 _val1->Byte2 = _val2->Byte5; \ 02703 _val1->Byte1 = _val2->Byte6; \ 02704 _val1->Byte0 = _val2->Byte7; \ 02705 } 02706 02707 #define REVERSE_BYTES(Destination, Source) { \ 02708 PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \ 02709 PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \ 02710 _val1->Byte3 = _val2->Byte0; \ 02711 _val1->Byte2 = _val2->Byte1; \ 02712 _val1->Byte1 = _val2->Byte2; \ 02713 _val1->Byte0 = _val2->Byte3; \ 02714 } 02715 02716 #define REVERSE_BYTES_SHORT(Destination, Source) { \ 02717 PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \ 02718 PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \ 02719 _val1->Byte1 = _val2->Byte0; \ 02720 _val1->Byte0 = _val2->Byte1; \ 02721 } 02722 02723 #define REVERSE_SHORT(Short) { \ 02724 UCHAR _val; \ 02725 PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \ 02726 _val = _val2->Byte0; \ 02727 _val2->Byte0 = _val2->Byte1; \ 02728 _val2->Byte1 = _val; \ 02729 } 02730 02731 #define REVERSE_LONG(Long) { \ 02732 UCHAR _val; \ 02733 PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \ 02734 _val = _val2->Byte3; \ 02735 _val2->Byte3 = _val2->Byte0; \ 02736 _val2->Byte0 = _val; \ 02737 _val = _val2->Byte2; \ 02738 _val2->Byte2 = _val2->Byte1; \ 02739 _val2->Byte1 = _val; \ 02740 } 02741 02742 #define WHICH_BIT(Data, Bit) { \ 02743 UCHAR _val; \ 02744 for (_val = 0; _val < 32; _val++) { \ 02745 if (((Data) >> _val) == 1) { \ 02746 break; \ 02747 } \ 02748 } \ 02749 ASSERT(_val != 32); \ 02750 (Bit) = _val; \ 02751 } 02752 02753 /* FIXME : This structure doesn't exist in the official header */ 02754 typedef struct _MODE_CDROM_WRITE_PARAMETERS_PAGE { 02755 UCHAR PageLength; 02756 UCHAR WriteType:4; 02757 UCHAR TestWrite:1; 02758 UCHAR LinkSizeValid:1; 02759 UCHAR BufferUnderrunFreeEnabled:1; 02760 UCHAR Reserved2:1; 02761 UCHAR TrackMode:4; 02762 UCHAR Copy:1; 02763 UCHAR FixedPacket:1; 02764 UCHAR MultiSession:2; 02765 UCHAR DataBlockType:4; 02766 UCHAR Reserved3:4; 02767 UCHAR LinkSize; 02768 UCHAR Reserved4; 02769 UCHAR HostApplicationCode:6; 02770 UCHAR Reserved5:2; 02771 UCHAR SessionFormat; 02772 UCHAR Reserved6; 02773 UCHAR PacketSize[4]; 02774 UCHAR AudioPauseLength[2]; 02775 UCHAR Reserved7:7; 02776 UCHAR MediaCatalogNumberValid:1; 02777 UCHAR MediaCatalogNumber[13]; 02778 UCHAR MediaCatalogNumberZero; 02779 UCHAR MediaCatalogNumberAFrame; 02780 UCHAR Reserved8:7; 02781 UCHAR ISRCValid:1; 02782 UCHAR ISRCCountry[2]; 02783 UCHAR ISRCOwner[3]; 02784 UCHAR ISRCRecordingYear[2]; 02785 UCHAR ISRCSerialNumber[5]; 02786 UCHAR ISRCZero; 02787 UCHAR ISRCAFrame; 02788 UCHAR ISRCReserved; 02789 UCHAR SubHeaderData[4]; 02790 } MODE_CDROM_WRITE_PARAMETERS_PAGE, *PMODE_CDROM_WRITE_PARAMETERS_PAGE; 02791 02792 #ifdef __cplusplus 02793 } 02794 #endif 02795 02796 #endif /* _NTSCSI_ */ Generated on Sun May 27 2012 04:28:28 for ReactOS by
1.7.6.1
|