ReactOS  0.4.15-dev-439-g292f67a
scsi.h
Go to the documentation of this file.
1 /*
2  * scsi.h
3  *
4  * SCSI port and class interface.
5  *
6  * This file is part of the w32api package.
7  *
8  * Contributors:
9  * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10  *
11  * THIS SOFTWARE IS NOT COPYRIGHTED
12  *
13  * This source code is offered for use in the public domain. You may
14  * use, modify or distribute it freely.
15  *
16  * This code is distributed in the hope that it will be useful but
17  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18  * DISCLAIMED. This includes but is not limited to warranties of
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20  *
21  */
22 
23 #ifndef _NTSCSI_
24 #define _NTSCSI_
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 #ifndef _NTSCSI_USER_MODE_
31 #include "srb.h"
32 #endif
33 
34 #define NOTIFICATION_OPERATIONAL_CHANGE_CLASS_MASK 0x02
35 #define NOTIFICATION_POWER_MANAGEMENT_CLASS_MASK 0x04
36 #define NOTIFICATION_EXTERNAL_REQUEST_CLASS_MASK 0x08
37 #define NOTIFICATION_MEDIA_STATUS_CLASS_MASK 0x10
38 #define NOTIFICATION_MULTI_HOST_CLASS_MASK 0x20
39 #define NOTIFICATION_DEVICE_BUSY_CLASS_MASK 0x40
40 
41 
42 #define NOTIFICATION_NO_CLASS_EVENTS 0x0
43 #define NOTIFICATION_OPERATIONAL_CHANGE_CLASS_EVENTS 0x1
44 #define NOTIFICATION_POWER_MANAGEMENT_CLASS_EVENTS 0x2
45 #define NOTIFICATION_EXTERNAL_REQUEST_CLASS_EVENTS 0x3
46 #define NOTIFICATION_MEDIA_STATUS_CLASS_EVENTS 0x4
47 #define NOTIFICATION_MULTI_HOST_CLASS_EVENTS 0x5
48 #define NOTIFICATION_DEVICE_BUSY_CLASS_EVENTS 0x6
49 
50 #define NOTIFICATION_OPERATIONAL_EVENT_NO_CHANGE 0x0
51 #define NOTIFICATION_OPERATIONAL_EVENT_CHANGE_REQUESTED 0x1
52 #define NOTIFICATION_OPERATIONAL_EVENT_CHANGE_OCCURRED 0x2
53 
54 #define NOTIFICATION_OPERATIONAL_STATUS_AVAILABLE 0x0
55 #define NOTIFICATION_OPERATIONAL_STATUS_TEMPORARY_BUSY 0x1
56 #define NOTIFICATION_OPERATIONAL_STATUS_EXTENDED_BUSY 0x2
57 
58 #define NOTIFICATION_OPERATIONAL_OPCODE_NONE 0x0
59 #define NOTIFICATION_OPERATIONAL_OPCODE_FEATURE_CHANGE 0x1
60 #define NOTIFICATION_OPERATIONAL_OPCODE_FEATURE_ADDED 0x2
61 #define NOTIFICATION_OPERATIONAL_OPCODE_UNIT_RESET 0x3
62 #define NOTIFICATION_OPERATIONAL_OPCODE_FIRMWARE_CHANGED 0x4
63 #define NOTIFICATION_OPERATIONAL_OPCODE_INQUIRY_CHANGED 0x5
64 
65 #define NOTIFICATION_POWER_EVENT_NO_CHANGE 0x0
66 #define NOTIFICATION_POWER_EVENT_CHANGE_SUCCEEDED 0x1
67 #define NOTIFICATION_POWER_EVENT_CHANGE_FAILED 0x2
68 
69 #define NOTIFICATION_POWER_STATUS_ACTIVE 0x1
70 #define NOTIFICATION_POWER_STATUS_IDLE 0x2
71 #define NOTIFICATION_POWER_STATUS_STANDBY 0x3
72 #define NOTIFICATION_POWER_STATUS_SLEEP 0x4
73 
74 #define NOTIFICATION_MEDIA_EVENT_NO_EVENT 0x0
75 #define NOTIFICATION_EXTERNAL_EVENT_NO_CHANGE 0x0
76 #define NOTIFICATION_EXTERNAL_EVENT_BUTTON_DOWN 0x1
77 #define NOTIFICATION_EXTERNAL_EVENT_BUTTON_UP 0x2
78 #define NOTIFICATION_EXTERNAL_EVENT_EXTERNAL 0x3
79 
80 #define NOTIFICATION_EXTERNAL_STATUS_READY 0x0
81 #define NOTIFICATION_EXTERNAL_STATUS_PREVENT 0x1
82 
83 #define NOTIFICATION_EXTERNAL_REQUEST_NONE 0x0000
84 #define NOTIFICATION_EXTERNAL_REQUEST_QUEUE_OVERRUN 0x0001
85 #define NOTIFICATION_EXTERNAL_REQUEST_PLAY 0x0101
86 #define NOTIFICATION_EXTERNAL_REQUEST_REWIND_BACK 0x0102
87 #define NOTIFICATION_EXTERNAL_REQUEST_FAST_FORWARD 0x0103
88 #define NOTIFICATION_EXTERNAL_REQUEST_PAUSE 0x0104
89 #define NOTIFICATION_EXTERNAL_REQUEST_STOP 0x0106
90 #define NOTIFICATION_EXTERNAL_REQUEST_ASCII_LOW 0x0200
91 #define NOTIFICATION_EXTERNAL_REQUEST_ASCII_HIGH 0x02ff
92 
93 #define NOTIFICATION_MEDIA_EVENT_NO_CHANGE 0x0
94 #define NOTIFICATION_MEDIA_EVENT_EJECT_REQUEST 0x1
95 #define NOTIFICATION_MEDIA_EVENT_NEW_MEDIA 0x2
96 #define NOTIFICATION_MEDIA_EVENT_MEDIA_REMOVAL 0x3
97 #define NOTIFICATION_MEDIA_EVENT_MEDIA_CHANGE 0x4
98 
99 #define NOTIFICATION_BUSY_EVENT_NO_EVENT 0x0
100 #define NOTIFICATION_MULTI_HOST_EVENT_NO_CHANGE 0x0
101 #define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_REQUEST 0x1
102 #define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_GRANT 0x2
103 #define NOTIFICATION_MULTI_HOST_EVENT_CONTROL_RELEASE 0x3
104 
105 #define NOTIFICATION_MULTI_HOST_STATUS_READY 0x0
106 #define NOTIFICATION_MULTI_HOST_STATUS_PREVENT 0x1
107 
108 #define NOTIFICATION_MULTI_HOST_PRIORITY_NO_REQUESTS 0x0
109 #define NOTIFICATION_MULTI_HOST_PRIORITY_LOW 0x1
110 #define NOTIFICATION_MULTI_HOST_PRIORITY_MEDIUM 0x2
111 #define NOTIFICATION_MULTI_HOST_PRIORITY_HIGH 0x3
112 
113 #define NOTIFICATION_BUSY_EVENT_NO_EVENT 0x0
114 #define NOTIFICATION_BUSY_EVENT_NO_CHANGE 0x0
115 #define NOTIFICATION_BUSY_EVENT_BUSY 0x1
116 
117 #define NOTIFICATION_BUSY_STATUS_NO_EVENT 0x0
118 #define NOTIFICATION_BUSY_STATUS_POWER 0x1
119 #define NOTIFICATION_BUSY_STATUS_IMMEDIATE 0x2
120 #define NOTIFICATION_BUSY_STATUS_DEFERRED 0x3
121 
122 #define DVD_FORMAT_LEAD_IN 0x00
123 #define DVD_FORMAT_COPYRIGHT 0x01
124 #define DVD_FORMAT_DISK_KEY 0x02
125 #define DVD_FORMAT_BCA 0x03
126 #define DVD_FORMAT_MANUFACTURING 0x04
127 
128 #define DVD_REPORT_AGID 0x00
129 #define DVD_CHALLENGE_KEY 0x01
130 #define DVD_KEY_1 0x02
131 #define DVD_KEY_2 0x03
132 #define DVD_TITLE_KEY 0x04
133 #define DVD_REPORT_ASF 0x05
134 #define DVD_INVALIDATE_AGID 0x3F
135 
136 #define BLANK_FULL 0x0
137 #define BLANK_MINIMAL 0x1
138 #define BLANK_TRACK 0x2
139 #define BLANK_UNRESERVE_TRACK 0x3
140 #define BLANK_TAIL 0x4
141 #define BLANK_UNCLOSE_SESSION 0x5
142 #define BLANK_SESSION 0x6
143 
144 #define CD_EXPECTED_SECTOR_ANY 0x0
145 #define CD_EXPECTED_SECTOR_CDDA 0x1
146 #define CD_EXPECTED_SECTOR_MODE1 0x2
147 #define CD_EXPECTED_SECTOR_MODE2 0x3
148 #define CD_EXPECTED_SECTOR_MODE2_FORM1 0x4
149 #define CD_EXPECTED_SECTOR_MODE2_FORM2 0x5
150 
151 #define DISK_STATUS_EMPTY 0x00
152 #define DISK_STATUS_INCOMPLETE 0x01
153 #define DISK_STATUS_COMPLETE 0x02
154 #define DISK_STATUS_OTHERS 0x03
155 
156 #define LAST_SESSION_EMPTY 0x00
157 #define LAST_SESSION_INCOMPLETE 0x01
158 #define LAST_SESSION_RESERVED_DAMAGED 0x02
159 #define LAST_SESSION_COMPLETE 0x03
160 
161 #define DISK_TYPE_CDDA 0x00
162 #define DISK_TYPE_CDI 0x10
163 #define DISK_TYPE_XA 0x20
164 #define DISK_TYPE_UNDEFINED 0xFF
165 
166 #define DISC_BGFORMAT_STATE_NONE 0x0
167 #define DISC_BGFORMAT_STATE_INCOMPLETE 0x1
168 #define DISC_BGFORMAT_STATE_RUNNING 0x2
169 #define DISC_BGFORMAT_STATE_COMPLETE 0x3
170 
171 #define DATA_BLOCK_MODE0 0x0
172 #define DATA_BLOCK_MODE1 0x1
173 #define DATA_BLOCK_MODE2 0x2
174 
175 /* READ_TOC formats */
176 #define READ_TOC_FORMAT_TOC 0x00
177 #define READ_TOC_FORMAT_SESSION 0x01
178 #define READ_TOC_FORMAT_FULL_TOC 0x02
179 #define READ_TOC_FORMAT_PMA 0x03
180 #define READ_TOC_FORMAT_ATIP 0x04
181 
182 #define CDB6GENERIC_LENGTH 6
183 #define CDB10GENERIC_LENGTH 10
184 #define CDB12GENERIC_LENGTH 12
185 
186 #define SETBITON 1
187 #define SETBITOFF 0
188 
189 /* Mode Sense/Select page constants */
190 #define MODE_PAGE_VENDOR_SPECIFIC 0x00
191 #define MODE_PAGE_ERROR_RECOVERY 0x01
192 #define MODE_PAGE_DISCONNECT 0x02
193 #define MODE_PAGE_FORMAT_DEVICE 0x03
194 #define MODE_PAGE_MRW 0x03
195 #define MODE_PAGE_RIGID_GEOMETRY 0x04
196 #define MODE_PAGE_FLEXIBILE 0x05
197 #define MODE_PAGE_WRITE_PARAMETERS 0x05
198 #define MODE_PAGE_VERIFY_ERROR 0x07
199 #define MODE_PAGE_CACHING 0x08
200 #define MODE_PAGE_PERIPHERAL 0x09
201 #define MODE_PAGE_CONTROL 0x0A
202 #define MODE_PAGE_MEDIUM_TYPES 0x0B
203 #define MODE_PAGE_NOTCH_PARTITION 0x0C
204 #define MODE_PAGE_CD_AUDIO_CONTROL 0x0E
205 #define MODE_PAGE_DATA_COMPRESS 0x0F
206 #define MODE_PAGE_DEVICE_CONFIG 0x10
207 #define MODE_PAGE_XOR_CONTROL 0x10
208 #define MODE_PAGE_MEDIUM_PARTITION 0x11
209 #define MODE_PAGE_ENCLOSURE_SERVICES_MANAGEMENT 0x14
210 #define MODE_PAGE_EXTENDED 0x15
211 #define MODE_PAGE_EXTENDED_DEVICE_SPECIFIC 0x16
212 #define MODE_PAGE_CDVD_FEATURE_SET 0x18
213 #define MODE_PAGE_PROTOCOL_SPECIFIC_LUN 0x18
214 #define MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19
215 #define MODE_PAGE_POWER_CONDITION 0x1A
216 #define MODE_PAGE_LUN_MAPPING 0x1B
217 #define MODE_PAGE_FAULT_REPORTING 0x1C
218 #define MODE_PAGE_CDVD_INACTIVITY 0x1D
219 #define MODE_PAGE_ELEMENT_ADDRESS 0x1D
220 #define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E
221 #define MODE_PAGE_DEVICE_CAPABILITIES 0x1F
222 #define MODE_PAGE_CAPABILITIES 0x2A
223 
224 #define MODE_SENSE_RETURN_ALL 0x3f
225 
226 #define MODE_SENSE_CURRENT_VALUES 0x00
227 #define MODE_SENSE_CHANGEABLE_VALUES 0x40
228 #define MODE_SENSE_DEFAULT_VAULES 0x80
229 #define MODE_SENSE_SAVED_VALUES 0xc0
230 
231 /* SCSI CDB operation codes */
232 #define SCSIOP_TEST_UNIT_READY 0x00
233 #define SCSIOP_REZERO_UNIT 0x01
234 #define SCSIOP_REWIND 0x01
235 #define SCSIOP_REQUEST_BLOCK_ADDR 0x02
236 #define SCSIOP_REQUEST_SENSE 0x03
237 #define SCSIOP_FORMAT_UNIT 0x04
238 #define SCSIOP_READ_BLOCK_LIMITS 0x05
239 #define SCSIOP_REASSIGN_BLOCKS 0x07
240 #define SCSIOP_INIT_ELEMENT_STATUS 0x07
241 #define SCSIOP_READ6 0x08
242 #define SCSIOP_RECEIVE 0x08
243 #define SCSIOP_WRITE6 0x0A
244 #define SCSIOP_PRINT 0x0A
245 #define SCSIOP_SEND 0x0A
246 #define SCSIOP_SEEK6 0x0B
247 #define SCSIOP_TRACK_SELECT 0x0B
248 #define SCSIOP_SLEW_PRINT 0x0B
249 #define SCSIOP_SET_CAPACITY 0x0B
250 #define SCSIOP_SEEK_BLOCK 0x0C
251 #define SCSIOP_PARTITION 0x0D
252 #define SCSIOP_READ_REVERSE 0x0F
253 #define SCSIOP_WRITE_FILEMARKS 0x10
254 #define SCSIOP_FLUSH_BUFFER 0x10
255 #define SCSIOP_SPACE 0x11
256 #define SCSIOP_INQUIRY 0x12
257 #define SCSIOP_VERIFY6 0x13
258 #define SCSIOP_RECOVER_BUF_DATA 0x14
259 #define SCSIOP_MODE_SELECT 0x15
260 #define SCSIOP_RESERVE_UNIT 0x16
261 #define SCSIOP_RELEASE_UNIT 0x17
262 #define SCSIOP_COPY 0x18
263 #define SCSIOP_ERASE 0x19
264 #define SCSIOP_MODE_SENSE 0x1A
265 #define SCSIOP_START_STOP_UNIT 0x1B
266 #define SCSIOP_STOP_PRINT 0x1B
267 #define SCSIOP_LOAD_UNLOAD 0x1B
268 #define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C
269 #define SCSIOP_SEND_DIAGNOSTIC 0x1D
270 #define SCSIOP_MEDIUM_REMOVAL 0x1E
271 
272 #define SCSIOP_READ_FORMATTED_CAPACITY 0x23
273 #define SCSIOP_READ_CAPACITY 0x25
274 #define SCSIOP_READ 0x28
275 #define SCSIOP_WRITE 0x2A
276 #define SCSIOP_SEEK 0x2B
277 #define SCSIOP_LOCATE 0x2B
278 #define SCSIOP_POSITION_TO_ELEMENT 0x2B
279 #define SCSIOP_WRITE_VERIFY 0x2E
280 #define SCSIOP_VERIFY 0x2F
281 #define SCSIOP_SEARCH_DATA_HIGH 0x30
282 #define SCSIOP_SEARCH_DATA_EQUAL 0x31
283 #define SCSIOP_SEARCH_DATA_LOW 0x32
284 #define SCSIOP_SET_LIMITS 0x33
285 #define SCSIOP_READ_POSITION 0x34
286 #define SCSIOP_SYNCHRONIZE_CACHE 0x35
287 #define SCSIOP_COMPARE 0x39
288 #define SCSIOP_COPY_COMPARE 0x3A
289 #define SCSIOP_WRITE_DATA_BUFF 0x3B
290 #define SCSIOP_READ_DATA_BUFF 0x3C
291 #define SCSIOP_WRITE_LONG 0x3F
292 #define SCSIOP_CHANGE_DEFINITION 0x40
293 #define SCSIOP_WRITE_SAME 0x41
294 #define SCSIOP_READ_SUB_CHANNEL 0x42
295 #define SCSIOP_READ_TOC 0x43
296 #define SCSIOP_READ_HEADER 0x44
297 #define SCSIOP_REPORT_DENSITY_SUPPORT 0x44
298 #define SCSIOP_PLAY_AUDIO 0x45
299 #define SCSIOP_GET_CONFIGURATION 0x46
300 #define SCSIOP_PLAY_AUDIO_MSF 0x47
301 #define SCSIOP_PLAY_TRACK_INDEX 0x48
302 #define SCSIOP_PLAY_TRACK_RELATIVE 0x49
303 #define SCSIOP_GET_EVENT_STATUS 0x4A
304 #define SCSIOP_PAUSE_RESUME 0x4B
305 #define SCSIOP_LOG_SELECT 0x4C
306 #define SCSIOP_LOG_SENSE 0x4D
307 #define SCSIOP_STOP_PLAY_SCAN 0x4E
308 #define SCSIOP_XDWRITE 0x50
309 #define SCSIOP_XPWRITE 0x51
310 #define SCSIOP_READ_DISK_INFORMATION 0x51
311 #define SCSIOP_READ_DISC_INFORMATION 0x51
312 #define SCSIOP_READ_TRACK_INFORMATION 0x52
313 #define SCSIOP_XDWRITE_READ 0x53
314 #define SCSIOP_RESERVE_TRACK_RZONE 0x53
315 #define SCSIOP_SEND_OPC_INFORMATION 0x54
316 #define SCSIOP_MODE_SELECT10 0x55
317 #define SCSIOP_RESERVE_UNIT10 0x56
318 #define SCSIOP_RESERVE_ELEMENT 0x56
319 #define SCSIOP_RELEASE_UNIT10 0x57
320 #define SCSIOP_RELEASE_ELEMENT 0x57
321 #define SCSIOP_REPAIR_TRACK 0x58
322 #define SCSIOP_MODE_SENSE10 0x5A
323 #define SCSIOP_CLOSE_TRACK_SESSION 0x5B
324 #define SCSIOP_READ_BUFFER_CAPACITY 0x5C
325 #define SCSIOP_SEND_CUE_SHEET 0x5D
326 #define SCSIOP_PERSISTENT_RESERVE_IN 0x5E
327 #define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F
328 
329 #define SCSIOP_REPORT_LUNS 0xA0
330 #define SCSIOP_BLANK 0xA1
331 #define SCSIOP_ATA_PASSTHROUGH12 0xA1
332 #define SCSIOP_SEND_EVENT 0xA2
333 #define SCSIOP_SEND_KEY 0xA3
334 #define SCSIOP_MAINTENANCE_IN 0xA3
335 #define SCSIOP_REPORT_KEY 0xA4
336 #define SCSIOP_MAINTENANCE_OUT 0xA4
337 #define SCSIOP_MOVE_MEDIUM 0xA5
338 #define SCSIOP_LOAD_UNLOAD_SLOT 0xA6
339 #define SCSIOP_EXCHANGE_MEDIUM 0xA6
340 #define SCSIOP_SET_READ_AHEAD 0xA7
341 #define SCSIOP_MOVE_MEDIUM_ATTACHED 0xA7
342 #define SCSIOP_READ12 0xA8
343 #define SCSIOP_GET_MESSAGE 0xA8
344 #define SCSIOP_SERVICE_ACTION_OUT12 0xA9
345 #define SCSIOP_WRITE12 0xAA
346 #define SCSIOP_SEND_MESSAGE 0xAB
347 #define SCSIOP_SERVICE_ACTION_IN12 0xAB
348 #define SCSIOP_GET_PERFORMANCE 0xAC
349 #define SCSIOP_READ_DVD_STRUCTURE 0xAD
350 #define SCSIOP_WRITE_VERIFY12 0xAE
351 #define SCSIOP_VERIFY12 0xAF
352 #define SCSIOP_SEARCH_DATA_HIGH12 0xB0
353 #define SCSIOP_SEARCH_DATA_EQUAL12 0xB1
354 #define SCSIOP_SEARCH_DATA_LOW12 0xB2
355 #define SCSIOP_SET_LIMITS12 0xB3
356 #define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4
357 #define SCSIOP_REQUEST_VOL_ELEMENT 0xB5
358 #define SCSIOP_SEND_VOLUME_TAG 0xB6
359 #define SCSIOP_SET_STREAMING 0xB6
360 #define SCSIOP_READ_DEFECT_DATA 0xB7
361 #define SCSIOP_READ_ELEMENT_STATUS 0xB8
362 #define SCSIOP_READ_CD_MSF 0xB9
363 #define SCSIOP_SCAN_CD 0xBA
364 #define SCSIOP_REDUNDANCY_GROUP_IN 0xBA
365 #define SCSIOP_SET_CD_SPEED 0xBB
366 #define SCSIOP_REDUNDANCY_GROUP_OUT 0xBB
367 #define SCSIOP_PLAY_CD 0xBC
368 #define SCSIOP_SPARE_IN 0xBC
369 #define SCSIOP_MECHANISM_STATUS 0xBD
370 #define SCSIOP_SPARE_OUT 0xBD
371 #define SCSIOP_READ_CD 0xBE
372 #define SCSIOP_VOLUME_SET_IN 0xBE
373 #define SCSIOP_SEND_DVD_STRUCTURE 0xBF
374 #define SCSIOP_VOLUME_SET_OUT 0xBF
375 #define SCSIOP_INIT_ELEMENT_RANGE 0xE7
376 
377 #define SCSIOP_XDWRITE_EXTENDED16 0x80
378 #define SCSIOP_WRITE_FILEMARKS16 0x80
379 #define SCSIOP_REBUILD16 0x81
380 #define SCSIOP_READ_REVERSE16 0x81
381 #define SCSIOP_REGENERATE16 0x82
382 #define SCSIOP_EXTENDED_COPY 0x83
383 #define SCSIOP_RECEIVE_COPY_RESULTS 0x84
384 #define SCSIOP_ATA_PASSTHROUGH16 0x85
385 #define SCSIOP_ACCESS_CONTROL_IN 0x86
386 #define SCSIOP_ACCESS_CONTROL_OUT 0x87
387 #define SCSIOP_READ16 0x88
388 #define SCSIOP_WRITE16 0x8A
389 #define SCSIOP_READ_ATTRIBUTES 0x8C
390 #define SCSIOP_WRITE_ATTRIBUTES 0x8D
391 #define SCSIOP_WRITE_VERIFY16 0x8E
392 #define SCSIOP_VERIFY16 0x8F
393 #define SCSIOP_PREFETCH16 0x90
394 #define SCSIOP_SYNCHRONIZE_CACHE16 0x91
395 #define SCSIOP_SPACE16 0x91
396 #define SCSIOP_LOCK_UNLOCK_CACHE16 0x92
397 #define SCSIOP_LOCATE16 0x92
398 #define SCSIOP_WRITE_SAME16 0x93
399 #define SCSIOP_ERASE16 0x93
400 #define SCSIOP_READ_CAPACITY16 0x9E
401 #define SCSIOP_SERVICE_ACTION_IN16 0x9E
402 #define SCSIOP_SERVICE_ACTION_OUT16 0x9F
403 
404 #define CDB_RETURN_ON_COMPLETION 0
405 #define CDB_RETURN_IMMEDIATE 1
406 
407 #define CDB_FORCE_MEDIA_ACCESS 0x08
408 
409 #define SCSIOP_DENON_EJECT_DISC 0xE6
410 #define SCSIOP_DENON_STOP_AUDIO 0xE7
411 #define SCSIOP_DENON_PLAY_AUDIO 0xE8
412 #define SCSIOP_DENON_READ_TOC 0xE9
413 #define SCSIOP_DENON_READ_SUBCODE 0xEB
414 
415 #define SCSIMESS_ABORT 0x06
416 #define SCSIMESS_ABORT_WITH_TAG 0x0D
417 #define SCSIMESS_BUS_DEVICE_RESET 0X0C
418 #define SCSIMESS_CLEAR_QUEUE 0X0E
419 #define SCSIMESS_COMMAND_COMPLETE 0X00
420 #define SCSIMESS_DISCONNECT 0X04
421 #define SCSIMESS_EXTENDED_MESSAGE 0X01
422 #define SCSIMESS_IDENTIFY 0X80
423 #define SCSIMESS_IDENTIFY_WITH_DISCON 0XC0
424 #define SCSIMESS_IGNORE_WIDE_RESIDUE 0X23
425 #define SCSIMESS_INITIATE_RECOVERY 0X0F
426 #define SCSIMESS_INIT_DETECTED_ERROR 0X05
427 #define SCSIMESS_LINK_CMD_COMP 0X0A
428 #define SCSIMESS_LINK_CMD_COMP_W_FLAG 0X0B
429 #define SCSIMESS_MESS_PARITY_ERROR 0X09
430 #define SCSIMESS_MESSAGE_REJECT 0X07
431 #define SCSIMESS_NO_OPERATION 0X08
432 #define SCSIMESS_HEAD_OF_QUEUE_TAG 0X21
433 #define SCSIMESS_ORDERED_QUEUE_TAG 0X22
434 #define SCSIMESS_SIMPLE_QUEUE_TAG 0X20
435 #define SCSIMESS_RELEASE_RECOVERY 0X10
436 #define SCSIMESS_RESTORE_POINTERS 0X03
437 #define SCSIMESS_SAVE_DATA_POINTER 0X02
438 #define SCSIMESS_TERMINATE_IO_PROCESS 0X11
439 
440 #define SCSIMESS_MODIFY_DATA_POINTER 0X00
441 #define SCSIMESS_SYNCHRONOUS_DATA_REQ 0X01
442 #define SCSIMESS_WIDE_DATA_REQUEST 0X03
443 
444 #define SCSIMESS_MODIFY_DATA_LENGTH 5
445 #define SCSIMESS_SYNCH_DATA_LENGTH 3
446 #define SCSIMESS_WIDE_DATA_LENGTH 2
447 
448 #define CDB_INQUIRY_EVPD 0x01
449 
450 #define LUN0_FORMAT_SAVING_DEFECT_LIST 0
451 #define USE_DEFAULTMSB 0
452 #define USE_DEFAULTLSB 0
453 
454 #define START_UNIT_CODE 0x01
455 #define STOP_UNIT_CODE 0x00
456 
457 /* INQUIRYDATA.DeviceType constants */
458 #define DIRECT_ACCESS_DEVICE 0x00
459 #define SEQUENTIAL_ACCESS_DEVICE 0x01
460 #define PRINTER_DEVICE 0x02
461 #define PROCESSOR_DEVICE 0x03
462 #define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04
463 #define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05
464 #define SCANNER_DEVICE 0x06
465 #define OPTICAL_DEVICE 0x07
466 #define MEDIUM_CHANGER 0x08
467 #define COMMUNICATION_DEVICE 0x09
468 #define ARRAY_CONTROLLER_DEVICE 0x0C
469 #define SCSI_ENCLOSURE_DEVICE 0x0D
470 #define REDUCED_BLOCK_DEVICE 0x0E
471 #define OPTICAL_CARD_READER_WRITER_DEVICE 0x0F
472 #define BRIDGE_CONTROLLER_DEVICE 0x10
473 #define OBJECT_BASED_STORAGE_DEVICE 0x11
474 #define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F
475 
476 #define DEVICE_QUALIFIER_ACTIVE 0x00
477 #define DEVICE_QUALIFIER_NOT_ACTIVE 0x01
478 #define DEVICE_QUALIFIER_NOT_SUPPORTED 0x03
479 
480 /* INQUIRYDATA.DeviceTypeQualifier constants */
481 #define DEVICE_CONNECTED 0x00
482 
483 #define SCSISTAT_GOOD 0x00
484 #define SCSISTAT_CHECK_CONDITION 0x02
485 #define SCSISTAT_CONDITION_MET 0x04
486 #define SCSISTAT_BUSY 0x08
487 #define SCSISTAT_INTERMEDIATE 0x10
488 #define SCSISTAT_INTERMEDIATE_COND_MET 0x14
489 #define SCSISTAT_RESERVATION_CONFLICT 0x18
490 #define SCSISTAT_COMMAND_TERMINATED 0x22
491 #define SCSISTAT_QUEUE_FULL 0x28
492 
493 #define VPD_MAX_BUFFER_SIZE 0xff
494 
495 #define VPD_SUPPORTED_PAGES 0x00
496 #define VPD_SERIAL_NUMBER 0x80
497 #define VPD_DEVICE_IDENTIFIERS 0x83
498 #define VPD_MEDIA_SERIAL_NUMBER 0x84
499 #define VPD_SOFTWARE_INTERFACE_IDENTIFIERS 0x84
500 #define VPD_NETWORK_MANAGEMENT_ADDRESSES 0x85
501 #define VPD_EXTENDED_INQUIRY_DATA 0x86
502 #define VPD_MODE_PAGE_POLICY 0x87
503 #define VPD_SCSI_PORTS 0x88
504 
505 #define RESERVATION_ACTION_READ_KEYS 0x00
506 #define RESERVATION_ACTION_READ_RESERVATIONS 0x01
507 
508 #define RESERVATION_ACTION_REGISTER 0x00
509 #define RESERVATION_ACTION_RESERVE 0x01
510 #define RESERVATION_ACTION_RELEASE 0x02
511 #define RESERVATION_ACTION_CLEAR 0x03
512 #define RESERVATION_ACTION_PREEMPT 0x04
513 #define RESERVATION_ACTION_PREEMPT_ABORT 0x05
514 #define RESERVATION_ACTION_REGISTER_IGNORE_EXISTING 0x06
515 
516 #define RESERVATION_SCOPE_LU 0x00
517 #define RESERVATION_SCOPE_ELEMENT 0x02
518 
519 #define RESERVATION_TYPE_WRITE_EXCLUSIVE 0x01
520 #define RESERVATION_TYPE_EXCLUSIVE 0x03
521 #define RESERVATION_TYPE_WRITE_EXCLUSIVE_REGISTRANTS 0x05
522 #define RESERVATION_TYPE_EXCLUSIVE_REGISTRANTS 0x06
523 
524 #define SENSE_BUFFER_SIZE 18
525 
526 #define MAX_SENSE_BUFFER_SIZE 255
527 
528 #define MAX_ADDITIONAL_SENSE_BYTES (MAX_SENSE_BUFFER_SIZE - SENSE_BUFFER_SIZE)
529 
530 /* Sense codes */
531 #define SCSI_SENSE_NO_SENSE 0x00
532 #define SCSI_SENSE_RECOVERED_ERROR 0x01
533 #define SCSI_SENSE_NOT_READY 0x02
534 #define SCSI_SENSE_MEDIUM_ERROR 0x03
535 #define SCSI_SENSE_HARDWARE_ERROR 0x04
536 #define SCSI_SENSE_ILLEGAL_REQUEST 0x05
537 #define SCSI_SENSE_UNIT_ATTENTION 0x06
538 #define SCSI_SENSE_DATA_PROTECT 0x07
539 #define SCSI_SENSE_BLANK_CHECK 0x08
540 #define SCSI_SENSE_UNIQUE 0x09
541 #define SCSI_SENSE_COPY_ABORTED 0x0A
542 #define SCSI_SENSE_ABORTED_COMMAND 0x0B
543 #define SCSI_SENSE_EQUAL 0x0C
544 #define SCSI_SENSE_VOL_OVERFLOW 0x0D
545 #define SCSI_SENSE_MISCOMPARE 0x0E
546 #define SCSI_SENSE_RESERVED 0x0F
547 
548 /* Additional tape bit */
549 #define SCSI_ILLEGAL_LENGTH 0x20
550 #define SCSI_EOM 0x40
551 #define SCSI_FILE_MARK 0x80
552 
553 /* Additional Sense codes */
554 #define SCSI_ADSENSE_NO_SENSE 0x00
555 #define SCSI_ADSENSE_NO_SEEK_COMPLETE 0x02
556 #define SCSI_ADSENSE_LUN_NOT_READY 0x04
557 #define SCSI_ADSENSE_LUN_COMMUNICATION 0x08
558 #define SCSI_ADSENSE_WRITE_ERROR 0x0C
559 #define SCSI_ADSENSE_TRACK_ERROR 0x14
560 #define SCSI_ADSENSE_SEEK_ERROR 0x15
561 #define SCSI_ADSENSE_REC_DATA_NOECC 0x17
562 #define SCSI_ADSENSE_REC_DATA_ECC 0x18
563 #define SCSI_ADSENSE_PARAMETER_LIST_LENGTH 0x1A
564 #define SCSI_ADSENSE_ILLEGAL_COMMAND 0x20
565 #define SCSI_ADSENSE_ILLEGAL_BLOCK 0x21
566 #define SCSI_ADSENSE_INVALID_CDB 0x24
567 #define SCSI_ADSENSE_INVALID_LUN 0x25
568 #define SCSI_ADSENSE_INVALID_FIELD_PARAMETER_LIST 0x26
569 #define SCSI_ADSENSE_WRITE_PROTECT 0x27
570 #define SCSI_ADSENSE_MEDIUM_CHANGED 0x28
571 #define SCSI_ADSENSE_BUS_RESET 0x29
572 #define SCSI_ADSENSE_PARAMETERS_CHANGED 0x2A
573 #define SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION 0x2E
574 #define SCSI_ADSENSE_INVALID_MEDIA 0x30
575 #define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE 0x3a
576 #define SCSI_ADSENSE_POSITION_ERROR 0x3b
577 #define SCSI_ADSENSE_OPERATING_CONDITIONS_CHANGED 0x3f
578 #define SCSI_ADSENSE_OPERATOR_REQUEST 0x5a
579 #define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x5d
580 #define SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK 0x64
581 #define SCSI_ADSENSE_COPY_PROTECTION_FAILURE 0x6f
582 #define SCSI_ADSENSE_POWER_CALIBRATION_ERROR 0x73
583 #define SCSI_ADSENSE_VENDOR_UNIQUE 0x80
584 #define SCSI_ADSENSE_MUSIC_AREA 0xA0
585 #define SCSI_ADSENSE_DATA_AREA 0xA1
586 #define SCSI_ADSENSE_VOLUME_OVERFLOW 0xA7
587 
588 #define SCSI_ADWRITE_PROTECT SCSI_ADSENSE_WRITE_PROTECT
589 #define SCSI_FAILURE_PREDICTION_THRESHOLD_EXCEEDED SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED
590 
591 #define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE 0x00
592 #define SCSI_SENSEQ_BECOMING_READY 0x01
593 #define SCSI_SENSEQ_INIT_COMMAND_REQUIRED 0x02
594 #define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED 0x03
595 #define SCSI_SENSEQ_FORMAT_IN_PROGRESS 0x04
596 #define SCSI_SENSEQ_REBUILD_IN_PROGRESS 0x05
597 #define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS 0x06
598 #define SCSI_SENSEQ_OPERATION_IN_PROGRESS 0x07
599 #define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS 0x08
600 #define SCSI_SENSEQ_LOSS_OF_STREAMING 0x09
601 #define SCSI_SENSEQ_PADDING_BLOCKS_ADDED 0x0A
602 
603 #define SCSI_SENSEQ_COMM_FAILURE 0x00
604 #define SCSI_SENSEQ_COMM_TIMEOUT 0x01
605 #define SCSI_SENSEQ_COMM_PARITY_ERROR 0x02
606 #define SCSI_SESNEQ_COMM_CRC_ERROR 0x03
607 #define SCSI_SENSEQ_UNREACHABLE_TARGET 0x04
608 
609 #define SCSI_SENSEQ_FILEMARK_DETECTED 0x01
610 #define SCSI_SENSEQ_END_OF_MEDIA_DETECTED 0x02
611 #define SCSI_SENSEQ_SETMARK_DETECTED 0x03
612 #define SCSI_SENSEQ_BEGINNING_OF_MEDIA_DETECTED 0x04
613 
614 #define SCSI_SENSEQ_ILLEGAL_ELEMENT_ADDR 0x01
615 
616 #define SCSI_SENSEQ_DESTINATION_FULL 0x0d
617 #define SCSI_SENSEQ_SOURCE_EMPTY 0x0e
618 
619 #define SCSI_SENSEQ_INCOMPATIBLE_MEDIA_INSTALLED 0x00
620 #define SCSI_SENSEQ_UNKNOWN_FORMAT 0x01
621 #define SCSI_SENSEQ_INCOMPATIBLE_FORMAT 0x02
622 #define SCSI_SENSEQ_CLEANING_CARTRIDGE_INSTALLED 0x03
623 
624 #define SCSI_SENSEQ_TARGET_OPERATING_CONDITIONS_CHANGED 0x00
625 #define SCSI_SENSEQ_MICROCODE_CHANGED 0x01
626 #define SCSI_SENSEQ_OPERATING_DEFINITION_CHANGED 0x02
627 #define SCSI_SENSEQ_INQUIRY_DATA_CHANGED 0x03
628 #define SCSI_SENSEQ_COMPONENT_DEVICE_ATTACHED 0x04
629 #define SCSI_SENSEQ_DEVICE_IDENTIFIER_CHANGED 0x05
630 #define SCSI_SENSEQ_REDUNDANCY_GROUP_MODIFIED 0x06
631 #define SCSI_SENSEQ_REDUNDANCY_GROUP_DELETED 0x07
632 #define SCSI_SENSEQ_SPARE_MODIFIED 0x08
633 #define SCSI_SENSEQ_SPARE_DELETED 0x09
634 #define SCSI_SENSEQ_VOLUME_SET_MODIFIED 0x0A
635 #define SCSI_SENSEQ_VOLUME_SET_DELETED 0x0B
636 #define SCSI_SENSEQ_VOLUME_SET_DEASSIGNED 0x0C
637 #define SCSI_SENSEQ_VOLUME_SET_REASSIGNED 0x0D
638 #define SCSI_SENSEQ_REPORTED_LUNS_DATA_CHANGED 0x0E
639 #define SCSI_SENSEQ_ECHO_BUFFER_OVERWRITTEN 0x0F
640 #define SCSI_SENSEQ_MEDIUM_LOADABLE 0x10
641 #define SCSI_SENSEQ_MEDIUM_AUXILIARY_MEMORY_ACCESSIBLE 0x11
642 
643 #define SCSI_SENSEQ_STATE_CHANGE_INPUT 0x00
644 #define SCSI_SENSEQ_MEDIUM_REMOVAL 0x01
645 #define SCSI_SENSEQ_WRITE_PROTECT_ENABLE 0x02
646 #define SCSI_SENSEQ_WRITE_PROTECT_DISABLE 0x03
647 
648 #define SCSI_SENSEQ_AUTHENTICATION_FAILURE 0x00
649 #define SCSI_SENSEQ_KEY_NOT_PRESENT 0x01
650 #define SCSI_SENSEQ_KEY_NOT_ESTABLISHED 0x02
651 #define SCSI_SENSEQ_READ_OF_SCRAMBLED_SECTOR_WITHOUT_AUTHENTICATION 0x03
652 #define SCSI_SENSEQ_MEDIA_CODE_MISMATCHED_TO_LOGICAL_UNIT 0x04
653 #define SCSI_SENSEQ_LOGICAL_UNIT_RESET_COUNT_ERROR 0x05
654 
655 #define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ALMOST_FULL 0x01
656 #define SCSI_SENSEQ_POWER_CALIBRATION_AREA_FULL 0x02
657 #define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ERROR 0x03
658 #define SCSI_SENSEQ_PMA_RMA_UPDATE_FAILURE 0x04
659 #define SCSI_SENSEQ_PMA_RMA_IS_FULL 0x05
660 #define SCSI_SENSEQ_PMA_RMA_ALMOST_FULL 0x06
661 
662 #define FILE_DEVICE_SCSI 0x0000001b
663 
664 #define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011)
665 #define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012)
666 #define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013)
667 
668 /* SMART support in ATAPI */
669 #define IOCTL_SCSI_MINIPORT_SMART_VERSION ((FILE_DEVICE_SCSI << 16) + 0x0500)
670 #define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501)
671 #define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS ((FILE_DEVICE_SCSI << 16) + 0x0502)
672 #define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS ((FILE_DEVICE_SCSI << 16) + 0x0503)
673 #define IOCTL_SCSI_MINIPORT_ENABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0504)
674 #define IOCTL_SCSI_MINIPORT_DISABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0505)
675 #define IOCTL_SCSI_MINIPORT_RETURN_STATUS ((FILE_DEVICE_SCSI << 16) + 0x0506)
676 #define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE ((FILE_DEVICE_SCSI << 16) + 0x0507)
677 #define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES ((FILE_DEVICE_SCSI << 16) + 0x0508)
678 #define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS ((FILE_DEVICE_SCSI << 16) + 0x0509)
679 #define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE ((FILE_DEVICE_SCSI << 16) + 0x050a)
680 #define IOCTL_SCSI_MINIPORT_READ_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050b)
681 #define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050c)
682 
683 /* CLUSTER support */
684 #define IOCTL_SCSI_MINIPORT_NOT_QUORUM_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0520)
685 #define IOCTL_SCSI_MINIPORT_NOT_CLUSTER_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0521)
686 
687 #define MODE_FD_SINGLE_SIDE 0x01
688 #define MODE_FD_DOUBLE_SIDE 0x02
689 #define MODE_FD_MAXIMUM_TYPE 0x1E
690 #define MODE_DSP_FUA_SUPPORTED 0x10
691 #define MODE_DSP_WRITE_PROTECT 0x80
692 
693 #define CDDA_CHANNEL_MUTED 0x0
694 #define CDDA_CHANNEL_ZERO 0x1
695 #define CDDA_CHANNEL_ONE 0x2
696 #define CDDA_CHANNEL_TWO 0x4
697 #define CDDA_CHANNEL_THREE 0x8
698 
699 #define CDVD_LMT_CADDY 0
700 #define CDVD_LMT_TRAY 1
701 #define CDVD_LMT_POPUP 2
702 #define CDVD_LMT_RESERVED1 3
703 #define CDVD_LMT_CHANGER_INDIVIDUAL 4
704 #define CDVD_LMT_CHANGER_CARTRIDGE 5
705 #define CDVD_LMT_RESERVED2 6
706 #define CDVD_LMT_RESERVED3 7
707 
708 #define LOADING_MECHANISM_CADDY 0x00
709 #define LOADING_MECHANISM_TRAY 0x01
710 #define LOADING_MECHANISM_POPUP 0x02
711 #define LOADING_MECHANISM_INDIVIDUAL_CHANGER 0x04
712 #define LOADING_MECHANISM_CARTRIDGE_CHANGER 0x05
713 
714 #define MODE_BLOCK_DESC_LENGTH 8
715 #define MODE_HEADER_LENGTH 4
716 #define MODE_HEADER_LENGTH10 8
717 
718 /* CDROM audio control */
719 #define CDB_AUDIO_PAUSE 0x00
720 #define CDB_AUDIO_RESUME 0x01
721 #define CDB_DEVICE_START 0x11
722 #define CDB_DEVICE_STOP 0x10
723 #define CDB_EJECT_MEDIA 0x10
724 #define CDB_LOAD_MEDIA 0x01
725 #define CDB_SUBCHANNEL_HEADER 0x00
726 #define CDB_SUBCHANNEL_BLOCK 0x01
727 
728 #define CDROM_AUDIO_CONTROL_PAGE 0x0E
729 #define MODE_SELECT_IMMEDIATE 0x04
730 #define MODE_SELECT_PFBIT 0x10
731 
732 #define CDB_USE_MSF 0x01
733 
734 /* Multisession CDROMs */
735 #define GET_LAST_SESSION 0x01
736 #define GET_SESSION_DATA 0x02
737 
738 typedef union _CDB {
739  struct _CDB6GENERIC {
750  struct _CDB6READWRITE {
757  UCHAR Control;
759  struct _CDB6INQUIRY {
761  UCHAR Reserved1:5;
763  UCHAR PageCode;
766  UCHAR Control;
768  struct _CDB6INQUIRY3 {
778  struct _CDB6VERIFY {
788  struct _CDB6FORMAT {
797  struct _CDB10 {
800  UCHAR Reserved1:2;
811  UCHAR Control;
812  } CDB10, *PCDB10;
813  struct _CDB12 {
824  } CDB12, *PCDB12;
825  struct _CDB16 {
835  } CDB16, *PCDB16;
836  struct _PAUSE_RESUME {
838  UCHAR Reserved1:5;
840  UCHAR Reserved2[6];
841  UCHAR Action;
842  UCHAR Control;
844  struct _READ_TOC {
846  UCHAR Reserved0:1;
847  UCHAR Msf:1;
848  UCHAR Reserved1:3;
851  UCHAR Reserved2:4;
855  UCHAR Control:6;
856  UCHAR Format:2;
857  } READ_TOC, *PREAD_TOC;
894  struct _REPAIR_TRACK {
903  struct _CLOSE_TRACK {
915  struct _READ_BUFFER_CAPACITY {
918  UCHAR Reserved1:7;
923  struct _SEND_CUE_SHEET {
927  UCHAR Control;
929  struct _READ_HEADER {
931  UCHAR Reserved1:1;
932  UCHAR Msf:1;
933  UCHAR Reserved2:3;
934  UCHAR Lun:3;
938  UCHAR Control;
940  struct _PLAY_AUDIO {
949  struct _PLAY_AUDIO_MSF {
951  UCHAR Reserved1:5;
960  UCHAR Control;
962  struct _BLANK_MEDIA {
964  UCHAR BlankType:3;
965  UCHAR Reserved1:1;
967  UCHAR Reserved2:3;
972  struct _PLAY_CD {
978  _ANONYMOUS_UNION union {
979  struct _LBA {
982  } LBA;
983  struct _MSF {
992  } MSF;
993  } DUMMYUNIONNAME;
998  UCHAR Reserved2:3;
1001  } PLAY_CD, *PPLAY_CD;
1002  struct _SCAN_CD {
1014  } SCAN_CD, *PSCAN_CD;
1022  struct _SUBCHANNEL {
1024  UCHAR Reserved0:1;
1025  UCHAR Msf:1;
1026  UCHAR Reserved1:3;
1028  UCHAR Reserved2:6;
1029  UCHAR SubQ:1;
1030  UCHAR Reserved3:1;
1031  UCHAR Format;
1032  UCHAR Reserved4[2];
1035  UCHAR Control;
1036  } SUBCHANNEL, *PSUBCHANNEL;
1037  struct _READ_CD {
1040  UCHAR Reserved0:1;
1046  UCHAR ErrorFlags:2;
1047  UCHAR IncludeEDC:1;
1049  UCHAR HeaderCode:2;
1052  UCHAR Reserved3:5;
1053  UCHAR Control;
1054  } READ_CD, *PREAD_CD;
1055  struct _READ_CD_MSF {
1058  UCHAR Reserved1:1;
1061  UCHAR Reserved2;
1068  UCHAR Reserved3;
1069  UCHAR Reserved4:1;
1070  UCHAR ErrorFlags:2;
1071  UCHAR IncludeEDC:1;
1073  UCHAR HeaderCode:2;
1077  UCHAR Control;
1079  struct _PLXTR_READ_CDDA {
1081  UCHAR Reserved0:5;
1091  UCHAR SubCode;
1092  UCHAR Control;
1094  struct _NEC_READ_CDDA {
1096  UCHAR Reserved0;
1101  UCHAR Reserved1;
1104  UCHAR Control;
1106  struct _MODE_SENSE {
1108  UCHAR Reserved1:3;
1109  UCHAR Dbd:1;
1110  UCHAR Reserved2:1;
1112  UCHAR PageCode:6;
1113  UCHAR Pc:2;
1114  UCHAR Reserved3;
1116  UCHAR Control;
1117  } MODE_SENSE, *PMODE_SENSE;
1118  struct _MODE_SENSE10 {
1120  UCHAR Reserved1:3;
1121  UCHAR Dbd:1;
1122  UCHAR Reserved2:1;
1124  UCHAR PageCode:6;
1125  UCHAR Pc:2;
1126  UCHAR Reserved3[4];
1128  UCHAR Control;
1130  struct _MODE_SELECT {
1132  UCHAR SPBit:1;
1133  UCHAR Reserved1:3;
1134  UCHAR PFBit:1;
1136  UCHAR Reserved2[2];
1138  UCHAR Control;
1140  struct _MODE_SELECT10 {
1142  UCHAR SPBit:1;
1143  UCHAR Reserved1:3;
1144  UCHAR PFBit:1;
1146  UCHAR Reserved2[5];
1148  UCHAR Control;
1150  struct _LOCATE {
1162  } LOCATE, *PLOCATE;
1163  struct _LOGSENSE {
1165  UCHAR SPBit:1;
1166  UCHAR PPCBit:1;
1167  UCHAR Reserved1:3;
1169  UCHAR PageCode:6;
1170  UCHAR PCBit:2;
1171  UCHAR Reserved2;
1172  UCHAR Reserved3;
1175  UCHAR Control;
1176  } LOGSENSE, *PLOGSENSE;
1177  struct _LOGSELECT {
1188  } LOGSELECT, *PLOGSELECT;
1189  struct _PRINT {
1195  } PRINT, *PPRINT;
1196  struct _SEEK {
1198  UCHAR Reserved1:5;
1201  UCHAR Reserved2[3];
1202  UCHAR Control;
1203  } SEEK, *PSEEK;
1204  struct _ERASE {
1206  UCHAR Long:1;
1207  UCHAR Immediate:1;
1208  UCHAR Reserved1:3;
1210  UCHAR Reserved2[3];
1211  UCHAR Control;
1212  } ERASE, *PERASE;
1213  struct _START_STOP {
1215  UCHAR Immediate:1;
1216  UCHAR Reserved1:4;
1218  UCHAR Reserved2[2];
1219  UCHAR Start:1;
1220  UCHAR LoadEject:1;
1221  UCHAR Reserved3:6;
1222  UCHAR Control;
1223  } START_STOP, *PSTART_STOP;
1224  struct _MEDIA_REMOVAL {
1226  UCHAR Reserved1:5;
1228  UCHAR Reserved2[2];
1229  UCHAR Prevent:1;
1232  UCHAR Control;
1234  struct _SEEK_BLOCK {
1243  } SEEK_BLOCK, *PSEEK_BLOCK;
1253  struct _PARTITION {
1260  } PARTITION, *PPARTITION;
1278  union {
1280  struct {
1283  UCHAR Reserved:4;
1285  } Fields;
1286  } Byte6;
1339  struct _MOVE_MEDIUM {
1402  struct _LOAD_UNLOAD {
1404  UCHAR Immediate:1;
1405  UCHAR Reserved1:4;
1407  UCHAR Reserved2[2];
1408  UCHAR Start:1;
1409  UCHAR LoadEject:1;
1410  UCHAR Reserved3:6;
1411  UCHAR Reserved4[3];
1412  UCHAR Slot;
1413  UCHAR Reserved5[3];
1415  struct _MECH_STATUS {
1421  UCHAR Reserved2[1];
1457  } GET_PERFORMANCE;
1458  struct _READ_DVD_STRUCTURE {
1460  UCHAR Reserved1:5;
1461  UCHAR Lun:3;
1462  UCHAR RMDBlockNumber[4];
1464  UCHAR Format;
1466  UCHAR Reserved3:6;
1467  UCHAR AGID:2;
1468  UCHAR Control;
1470  struct _SET_STREAMING {
1474  UCHAR Control;
1475  } SET_STREAMING;
1486  struct _SEND_KEY {
1488  UCHAR Reserved1:5;
1489  UCHAR Lun:3;
1490  UCHAR Reserved2[6];
1492  UCHAR KeyFormat:6;
1493  UCHAR AGID:2;
1494  UCHAR Control;
1495  } SEND_KEY, *PSEND_KEY;
1496  struct _REPORT_KEY {
1498  UCHAR Reserved1:5;
1499  UCHAR Lun:3;
1501  UCHAR Reserved2[2];
1503  UCHAR KeyFormat:6;
1504  UCHAR AGID:2;
1505  UCHAR Control;
1506  } REPORT_KEY, *PREPORT_KEY;
1507  struct _SET_READ_AHEAD {
1509  UCHAR Reserved1:5;
1511  UCHAR TriggerLBA[4];
1512  UCHAR ReadAheadLBA[4];
1514  UCHAR Control;
1524  struct _REPORT_LUNS {
1526  UCHAR Reserved1[5];
1528  UCHAR Reserved2[1];
1529  UCHAR Control;
1549  struct _GET_CONFIGURATION {
1556  UCHAR Control;
1558  struct _SET_CD_SPEED {
1560  _ANONYMOUS_UNION union {
1561  UCHAR Reserved1;
1562  _ANONYMOUS_STRUCT struct {
1565  } DUMMYSTRUCTNAME;
1566  } DUMMYUNIONNAME;
1567  UCHAR ReadSpeed[2];
1568  UCHAR WriteSpeed[2];
1572  struct _READ12 {
1584  } READ12;
1585  struct _WRITE12 {
1598  } WRITE12;
1599  struct _READ16 {
1610  } READ16;
1611  struct _WRITE16 {
1622  } WRITE16;
1623  struct _VERIFY16 {
1636  } VERIFY16;
1656  } READ_CAPACITY16;
1659 } CDB, *PCDB;
1660 
1669 
1678 
1685 
1694 
1698  _ANONYMOUS_UNION union {
1701  _ANONYMOUS_STRUCT struct {
1705  } DUMMYSTRUCTNAME;
1706  } DUMMYUNIONNAME;
1710 
1719 
1726 
1732 
1733 typedef struct _CDVD_KEY_HEADER {
1734  UCHAR DataLength[2];
1735  UCHAR Reserved[2];
1738 
1739 typedef struct _CDVD_REPORT_AGID_DATA {
1740  UCHAR Reserved1[3];
1741  UCHAR Reserved2:6;
1742  UCHAR AGID:2;
1744 
1745 typedef struct _CDVD_CHALLENGE_KEY_DATA {
1747  UCHAR Reserved[2];
1749 
1750 typedef struct _CDVD_KEY_DATA {
1751  UCHAR Key[5];
1752  UCHAR Reserved[3];
1754 
1755 typedef struct _CDVD_REPORT_ASF_DATA {
1756  UCHAR Reserved1[3];
1757  UCHAR Success:1;
1758  UCHAR Reserved2:7;
1760 
1761 typedef struct _CDVD_TITLE_KEY_HEADER {
1762  UCHAR DataLength[2];
1763  UCHAR Reserved1[1];
1764  UCHAR Reserved2:3;
1765  UCHAR CGMS:2;
1766  UCHAR CP_SEC:1;
1767  UCHAR CPM:1;
1768  UCHAR Zero:1;
1771 
1772 typedef struct _FORMAT_DESCRIPTOR {
1778 
1779 typedef struct _FORMAT_LIST_HEADER {
1784  UCHAR IP:1;
1785  UCHAR STPF:1;
1786  UCHAR DCRT:1;
1787  UCHAR DPRY:1;
1788  UCHAR FOV:1;
1792 
1800 
1806 
1807 typedef struct _OPC_TABLE_ENTRY {
1811 
1812 typedef struct _DISC_INFORMATION {
1840 
1841 typedef struct _DISK_INFORMATION {
1865 
1866 typedef struct _DATA_BLOCK_HEADER {
1869  _ANONYMOUS_UNION union {
1871  struct {
1872  UCHAR Reserved;
1876  } MSF;
1877  } DUMMYUNIONNAME;
1879 
1880 typedef struct _TRACK_INFORMATION {
1901 
1902 typedef struct _TRACK_INFORMATION2 {
1929 
1930 typedef struct _TRACK_INFORMATION3 {
1958 
1959 typedef struct _PERFORMANCE_DESCRIPTOR {
1973 
1974 typedef struct _SCSI_EXTENDED_MESSAGE {
1978  union _EXTENDED_ARGUMENTS {
1979  struct {
1980  UCHAR Modifier[4];
1981  } Modify;
1982  struct {
1985  } Synchronous;
1986  struct{
1987  UCHAR Width;
1988  } Wide;
1991 
1992 #ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */
1993 #define _INQUIRYDATA_DEFINED
1994 
1995 #define INQUIRYDATABUFFERSIZE 36
1996 
1997 #if (NTDDI_VERSION < NTDDI_WINXP)
1998 typedef struct _INQUIRYDATA {
1999  UCHAR DeviceType:5;
2003  UCHAR Versions;
2005  UCHAR HiSupport:1;
2006  UCHAR NormACA:1;
2007  UCHAR ReservedBit:1;
2008  UCHAR AERC:1;
2010  UCHAR Reserved[2];
2011  UCHAR SoftReset:1;
2012  UCHAR CommandQueue:1;
2013  UCHAR Reserved2:1;
2015  UCHAR Synchronous:1;
2016  UCHAR Wide16Bit:1;
2017  UCHAR Wide32Bit:1;
2019  UCHAR VendorId[8];
2020  UCHAR ProductId[16];
2022  UCHAR VendorSpecific[20];
2023  UCHAR Reserved3[40];
2025 #else
2026 typedef struct _INQUIRYDATA {
2027  UCHAR DeviceType:5;
2031  _ANONYMOUS_UNION union {
2032  UCHAR Versions;
2033  _ANONYMOUS_STRUCT struct {
2034  UCHAR ANSIVersion:3;
2035  UCHAR ECMAVersion:3;
2036  UCHAR ISOVersion:2;
2037  } DUMMYSTRUCTNAME;
2038  } DUMMYUNIONNAME;
2040  UCHAR HiSupport:1;
2041  UCHAR NormACA:1;
2042  UCHAR TerminateTask:1;
2043  UCHAR AERC:1;
2045  UCHAR Reserved;
2046  UCHAR Addr16:1;
2047  UCHAR Addr32:1;
2048  UCHAR AckReqQ:1;
2049  UCHAR MediumChanger:1;
2050  UCHAR MultiPort:1;
2051  UCHAR ReservedBit2:1;
2053  UCHAR ReservedBit3:1;
2054  UCHAR SoftReset:1;
2055  UCHAR CommandQueue:1;
2058  UCHAR Synchronous:1;
2059  UCHAR Wide16Bit:1;
2060  UCHAR Wide32Bit:1;
2062  UCHAR VendorId[8];
2063  UCHAR ProductId[16];
2065  UCHAR VendorSpecific[20];
2066  UCHAR Reserved3[40];
2068 #endif /* (NTDDI_VERSION < NTDDI_WINXP) */
2069 
2070 #endif /* _INQUIRYDATA_DEFINED */
2071 
2080 
2081 typedef struct _VPD_SERIAL_NUMBER_PAGE {
2089 
2090 typedef enum _VPD_CODE_SET {
2096 
2097 typedef enum _VPD_ASSOCIATION {
2104 
2105 typedef enum _VPD_IDENTIFIER_TYPE {
2116 
2127 
2136 
2145 
2146 typedef struct _PRI_REGISTRATION_LIST {
2151 
2160 
2161 typedef struct _PRI_RESERVATION_LIST {
2166 
2167 typedef struct _PRO_PARAMETER_LIST {
2176 
2177 typedef struct _SENSE_DATA {
2178  UCHAR ErrorCode:7;
2179  UCHAR Valid:1;
2181  UCHAR SenseKey:4;
2182  UCHAR Reserved:1;
2184  UCHAR EndOfMedia:1;
2185  UCHAR FileMark:1;
2186  UCHAR Information[4];
2194 
2195 /* Read Capacity Data. Returned in Big Endian format */
2196 typedef struct _READ_CAPACITY_DATA {
2200 
2201 typedef struct _READ_CAPACITY_DATA_EX {
2205 
2206 /* Read Block Limits Data. Returned in Big Endian format */
2207 typedef struct _READ_BLOCK_LIMITS {
2212 
2221 
2222 typedef struct _MODE_PARAMETER_HEADER {
2224  UCHAR MediumType;
2228 
2229 typedef struct _MODE_PARAMETER_HEADER10 {
2230  UCHAR ModeDataLength[2];
2231  UCHAR MediumType;
2233  UCHAR Reserved[2];
2236 
2237 typedef struct _MODE_PARAMETER_BLOCK {
2239  UCHAR NumberOfBlocks[3];
2240  UCHAR Reserved;
2241  UCHAR BlockLength[3];
2243 
2244 typedef struct _MODE_DISCONNECT_PAGE {
2258 
2259 typedef struct _MODE_CACHING_PAGE {
2260  UCHAR PageCode:6;
2262  UCHAR PageSavable:1;
2263  UCHAR PageLength;
2267  UCHAR Reserved2:5;
2275 
2304 
2305 typedef struct _MODE_MRW_PAGE {
2306  UCHAR PageCode:6;
2309  UCHAR PageLength;
2310  UCHAR Reserved1;
2312  UCHAR Reserved2:7;
2313  UCHAR Reserved3[4];
2315 
2349 
2350 typedef struct _MODE_FORMAT_PAGE {
2371 
2390 
2391 typedef struct _MODE_READ_WRITE_RECOVERY_PAGE {
2392  UCHAR PageCode:6;
2393  UCHAR Reserved1:1;
2394  UCHAR PSBit:1;
2395  UCHAR PageLength;
2396  UCHAR DCRBit:1;
2397  UCHAR DTEBit:1;
2398  UCHAR PERBit:1;
2399  UCHAR EERBit:1;
2400  UCHAR RCBit:1;
2401  UCHAR TBBit:1;
2402  UCHAR ARRE:1;
2403  UCHAR AWRE:1;
2405  UCHAR Reserved4[4];
2407  UCHAR Reserved5[3];
2409 
2410 typedef struct _MODE_READ_RECOVERY_PAGE {
2411  UCHAR PageCode:6;
2412  UCHAR Reserved1:1;
2413  UCHAR PSBit:1;
2414  UCHAR PageLength;
2415  UCHAR DCRBit:1;
2416  UCHAR DTEBit:1;
2417  UCHAR PERBit:1;
2418  UCHAR Reserved2:1;
2419  UCHAR RCBit:1;
2420  UCHAR TBBit:1;
2421  UCHAR Reserved3:2;
2423  UCHAR Reserved4[4];
2425 
2426 typedef struct _MODE_INFO_EXCEPTIONS {
2431  _ANONYMOUS_UNION union {
2433  _ANONYMOUS_STRUCT struct {
2440  } DUMMYSTRUCTNAME;
2441  } DUMMYUNIONNAME;
2447 
2448 typedef struct _POWER_CONDITION_PAGE {
2460 
2461 typedef struct _CDDA_OUTPUT_PORT {
2466 
2467 typedef struct _CDAUDIO_CONTROL_PAGE {
2480 
2481 typedef struct _CDVD_FEATURE_SET_PAGE {
2498 
2512 
2513 typedef struct _CDVD_CAPABILITIES_PAGE {
2561  _ANONYMOUS_UNION union {
2564  } DUMMYUNIONNAME;
2567  _ANONYMOUS_UNION union {
2570  } DUMMYUNIONNAME2;
2578  _ANONYMOUS_UNION union {
2581  } DUMMYUNIONNAME3;
2582  _ANONYMOUS_UNION union {
2585  } DUMMYUNIONNAME4;
2586  _ANONYMOUS_UNION union {
2589  } DUMMYUNIONNAME5;
2591 
2592 typedef struct _LUN_LIST {
2595  UCHAR Lun[0][8];
2596 } LUN_LIST, *PLUN_LIST;
2597 
2598 typedef struct _MODE_PARM_READ_WRITE {
2602 
2603 typedef struct _PORT_OUTPUT {
2607 
2608 typedef struct _AUDIO_OUTPUT {
2617 
2618 /* Atapi 2.5 changers */
2620  UCHAR CurrentSlot:5;
2621  UCHAR ChangerState:2;
2622  UCHAR Fault:1;
2623  UCHAR Reserved:5;
2629 
2630 typedef struct _SLOT_TABLE_INFORMATION {
2631  UCHAR DiscChanged:1;
2632  UCHAR Reserved:6;
2633  UCHAR DiscPresent:1;
2634  UCHAR Reserved2[3];
2636 
2637 typedef struct _MECHANICAL_STATUS {
2641 
2642 /* Tape definitions */
2643 typedef struct _TAPE_POSITION_DATA {
2657 
2658 /* This structure is used to convert little endian ULONGs
2659  to SCSI CDB big endians values. */
2660 typedef union _EIGHT_BYTE {
2661  _ANONYMOUS_STRUCT struct {
2670  } DUMMYSTRUCTNAME;
2673 
2674 typedef union _FOUR_BYTE {
2675  _ANONYMOUS_STRUCT struct {
2676  UCHAR Byte0;
2677  UCHAR Byte1;
2678  UCHAR Byte2;
2679  UCHAR Byte3;
2680  } DUMMYSTRUCTNAME;
2682 } FOUR_BYTE, *PFOUR_BYTE;
2683 
2684 typedef union _TWO_BYTE {
2685  _ANONYMOUS_STRUCT struct {
2688  } DUMMYSTRUCTNAME;
2690 } TWO_BYTE, *PTWO_BYTE;
2691 
2692 /* Byte reversing macro for converting between
2693  big- and little-endian formats */
2694 #define REVERSE_BYTES_QUAD(Destination, Source) { \
2695  PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \
2696  PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \
2697  _val1->Byte7 = _val2->Byte0; \
2698  _val1->Byte6 = _val2->Byte1; \
2699  _val1->Byte5 = _val2->Byte2; \
2700  _val1->Byte4 = _val2->Byte3; \
2701  _val1->Byte3 = _val2->Byte4; \
2702  _val1->Byte2 = _val2->Byte5; \
2703  _val1->Byte1 = _val2->Byte6; \
2704  _val1->Byte0 = _val2->Byte7; \
2705 }
2706 
2707 #define REVERSE_BYTES(Destination, Source) { \
2708  PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \
2709  PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \
2710  _val1->Byte3 = _val2->Byte0; \
2711  _val1->Byte2 = _val2->Byte1; \
2712  _val1->Byte1 = _val2->Byte2; \
2713  _val1->Byte0 = _val2->Byte3; \
2714 }
2715 
2716 #define REVERSE_BYTES_SHORT(Destination, Source) { \
2717  PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \
2718  PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \
2719  _val1->Byte1 = _val2->Byte0; \
2720  _val1->Byte0 = _val2->Byte1; \
2721 }
2722 
2723 #define REVERSE_SHORT(Short) { \
2724  UCHAR _val; \
2725  PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \
2726  _val = _val2->Byte0; \
2727  _val2->Byte0 = _val2->Byte1; \
2728  _val2->Byte1 = _val; \
2729 }
2730 
2731 #define REVERSE_LONG(Long) { \
2732  UCHAR _val; \
2733  PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \
2734  _val = _val2->Byte3; \
2735  _val2->Byte3 = _val2->Byte0; \
2736  _val2->Byte0 = _val; \
2737  _val = _val2->Byte2; \
2738  _val2->Byte2 = _val2->Byte1; \
2739  _val2->Byte1 = _val; \
2740 }
2741 
2742 #define WHICH_BIT(Data, Bit) { \
2743  UCHAR _val; \
2744  for (_val = 0; _val < 32; _val++) { \
2745  if (((Data) >> _val) == 1) { \
2746  break; \
2747  } \
2748  } \
2749  ASSERT(_val != 32); \
2750  (Bit) = _val; \
2751 }
2752 
2753 /* FIXME : This structure doesn't exist in the official header */
2791 
2792 #ifdef __cplusplus
2793 }
2794 #endif
2795 
2796 #endif /* _NTSCSI_ */
UCHAR ReadCompatibilityLba[4]
Definition: scsi.h:1956
UCHAR AllocationLength
Definition: scsi.h:775
UCHAR FieldReplaceableUnitCode
Definition: cdrw_hw.h:1177
UCHAR Byte0
Definition: tools.h:16
UCHAR PersistantPrevent[2]
Definition: scsi.h:2489
PRI_RESERVATION_DESCRIPTOR Reservations[0]
Definition: scsi.h:2164
UCHAR LogicalUnitNumber
Definition: scsi.h:1217
struct _READ_CAPACITY_DATA READ_CAPACITY_DATA
UCHAR ScopeSpecificAddress[4]
Definition: scsi.h:2170
struct _VPD_IDENTIFICATION_PAGE * PVPD_IDENTIFICATION_PAGE
struct _MODE_FORMAT_PAGE MODE_FORMAT_PAGE
UCHAR Reserved2
Definition: cdrw_hw.h:1126
struct _CDVD_CAPABILITIES_PAGE CDVD_CAPABILITIES_PAGE
UCHAR VerifyProtect
Definition: scsi.h:1630
UCHAR NumberOfBytes[4]
Definition: scsi.h:2655
MODE_PARAMETER_HEADER ParameterListHeader
Definition: cdrw_hw.h:2536
struct _CDB::_SEND_DVD_STRUCTURE * PSEND_DVD_STRUCTURE
struct _CDB::_POSITION_TO_ELEMENT * PPOSITION_TO_ELEMENT
UCHAR StartReducedCurrent[2]
Definition: scsi.h:2327
struct _CDB::_READ_ELEMENT_STATUS READ_ELEMENT_STATUS
UCHAR Reserved1
Definition: scsi.h:1884
UCHAR TrackNumber
Definition: scsi.h:1882
struct _NOTIFICATION_POWER_STATUS * PNOTIFICATION_POWER_STATUS
struct _PRI_RESERVATION_DESCRIPTOR PRI_RESERVATION_DESCRIPTOR
union _TWO_BYTE TWO_BYTE
UCHAR LogicalUnitNumber
Definition: scsi.h:1111
struct _CDB::_MODE_SELECT10 MODE_SELECT10
UCHAR Reserved2[2]
Definition: cdrw_hw.h:672
struct _VPD_SUPPORTED_PAGES_PAGE * PVPD_SUPPORTED_PAGES_PAGE
struct _VPD_SERIAL_NUMBER_PAGE * PVPD_SERIAL_NUMBER_PAGE
struct _MODE_FLEXIBLE_DISK_PAGE MODE_FLEXIBLE_DISK_PAGE
UCHAR SenseKey
Definition: cdrw_hw.h:1167
UCHAR Reserved2[2]
Definition: cdrw_hw.h:447
UCHAR BusConnectTime[2]
Definition: scsi.h:2253
_ANONYMOUS_UNION union _DATA_BLOCK_HEADER::@2147 DUMMYUNIONNAME
UCHAR Descriptors[0]
Definition: scsi.h:2134
struct _VPD_SUPPORTED_PAGES_PAGE VPD_SUPPORTED_PAGES_PAGE
union _CDB * PCDB
struct _CDB::_POSITION_TO_ELEMENT POSITION_TO_ELEMENT
UCHAR Control
Definition: cdrw_hw.h:166
struct _MODE_READ_WRITE_RECOVERY_PAGE MODE_READ_WRITE_RECOVERY_PAGE
UCHAR LogicalUnitNumber
Definition: scsi.h:1354
ULONG AsUlong[4]
Definition: scsi.h:1657
struct _NOTIFICATION_OPERATIONAL_STATUS * PNOTIFICATION_OPERATIONAL_STATUS
UCHAR NumberOfSessionsLsb
Definition: scsi.h:1819
UCHAR LogicalUnitNumber
Definition: scsi.h:1027
struct _CDB::_CDB6GENERIC * PCDB6GENERIC
UCHAR IntervalTimer[4]
Definition: scsi.h:2444
UCHAR Control
Definition: cdrw_hw.h:285
UCHAR Reserved1
Definition: scsi.h:1846
UCHAR Erasable
Definition: scsi.h:1816
UCHAR OperationCode
Definition: scsi.h:1624
UCHAR TrackStartAddress[4]
Definition: scsi.h:1896
UCHAR Reserved1
Definition: scsi.h:1601
UCHAR CommandSpecificInformation[4]
Definition: cdrw_hw.h:1174
struct _VPD_IDENTIFICATION_DESCRIPTOR VPD_IDENTIFICATION_DESCRIPTOR
struct _CDB::_LOAD_UNLOAD LOAD_UNLOAD
UCHAR DisablePageOut
Definition: scsi.h:1577
UCHAR TransferLength[4]
Definition: scsi.h:1580
struct _CDB::_READ_POSITION READ_POSITION
UCHAR TrackStartAddress[4]
Definition: scsi.h:1947
UCHAR Reserved2[3]
Definition: cdrw_hw.h:163
UCHAR LogicalUnitNumber
Definition: scsi.h:1227
UCHAR ProductRevisionLevel[4]
Definition: cdrw_hw.h:1134
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:1158
UCHAR Reserved2
Definition: scsi.h:1628
struct _READ_DVD_STRUCTURES_HEADER * PREAD_DVD_STRUCTURES_HEADER
UCHAR Reserved2
Definition: scsi.h:945
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2160 DUMMYUNIONNAME5
UCHAR SectorsPerTrack[2]
Definition: scsi.h:2359
UCHAR LogicalUnitNumber
Definition: scsi.h:791
struct _VPD_MEDIA_SERIAL_NUMBER_PAGE * PVPD_MEDIA_SERIAL_NUMBER_PAGE
UCHAR Immediate
Definition: scsi.h:1236
UCHAR BytesPerSector[2]
Definition: scsi.h:2324
UCHAR SeperateChannelMute
Definition: scsi.h:2555
UCHAR CMSF
Definition: scsi.h:975
UCHAR Reserved2
Definition: scsi.h:1851
struct _CDB::_PERSISTENT_RESERVE_IN PERSISTENT_RESERVE_IN
UCHAR VerificationLength[3]
Definition: scsi.h:785
UCHAR TransferLength[3]
Definition: scsi.h:1267
UCHAR WriteCacheEnable
Definition: cdrw_hw.h:2779
UCHAR DataLength[2]
Definition: cdrw_hw.h:3581
UCHAR Reserved4[3]
Definition: scsi.h:912
UCHAR SessionNumberMsb
Definition: scsi.h:1954
UCHAR Control
Definition: scsi.h:1000
struct _CDVD_REPORT_AGID_DATA * PCDVD_REPORT_AGID_DATA
union _FOUR_BYTE * PFOUR_BYTE
UCHAR MrwStatus
Definition: scsi.h:1822
struct _TRACK_INFORMATION TRACK_INFORMATION
UCHAR Port2
Definition: scsi.h:997
struct _CDB::_NEC_READ_CDDA NEC_READ_CDDA
struct _MODE_DISCONNECT_PAGE * PMODE_DISCONNECT_PAGE
UCHAR Byte2
Definition: scsi.h:2664
UCHAR RotationalPositionLock
Definition: scsi.h:2383
UCHAR InterleaveLsb
Definition: scsi.h:794
struct _SENSE_DATA * PSENSE_DATA
UCHAR ByteCompare
Definition: scsi.h:781
struct _CDVD_KEY_DATA * PCDVD_KEY_DATA
struct _CDB::_MEDIA_REMOVAL MEDIA_REMOVAL
UCHAR TrackStartAddress[4]
Definition: scsi.h:1919
UCHAR PCRBit
Definition: scsi.h:1180
struct _CDB::_READ_CD * PREAD_CD
UCHAR LogicalUnitNumber
Definition: scsi.h:1192
UCHAR EmbeddedChanger[2]
Definition: scsi.h:2487
UCHAR LogicalBlockByte2
Definition: scsi.h:1085
UCHAR StartingM
Definition: scsi.h:1062
UCHAR ReservedTrack
Definition: scsi.h:1915
struct _CDVD_REPORT_AGID_DATA CDVD_REPORT_AGID_DATA
struct _CDB::_READ_BUFFER_CAPACITY * PREAD_BUFFER_CAPACITY
UCHAR WriteSize[4]
Definition: scsi.h:1970
struct _FORMAT_DESCRIPTOR * PFORMAT_DESCRIPTOR
struct _READ_BLOCK_LIMITS READ_BLOCK_LIMITS_DATA
UCHAR LogicalUnitNumber
Definition: scsi.h:819
UCHAR Streaming
Definition: scsi.h:1608
UCHAR LogicalBlock[8]
Definition: scsi.h:1631
union _CDB::_SPACE_TAPE_MARKS::@2141 Byte6
UCHAR WriteSpeed[2]
Definition: cdrw_hw.h:598
OPC_TABLE_ENTRY OPCTable[1]
Definition: scsi.h:1838
struct _CDB::_REPORT_KEY REPORT_KEY
union _TWO_BYTE * PTWO_BYTE
UCHAR Byte3
Definition: scsi.h:2665
struct _SLOT_TABLE_INFORMATION * PSLOT_TABLE_INFORMATION
UCHAR Control
Definition: scsi.h:1259
struct _CDB::_ERASE ERASE
union _EIGHT_BYTE EIGHT_BYTE
UCHAR ResponseDataFormat
Definition: cdrw_hw.h:1121
struct _CDB::_SEEK * PSEEK
UCHAR Control
Definition: cdrw_hw.h:664
#define _ANONYMOUS_UNION
Definition: ntbasedef.h:30
struct _READ_CAPACITY_DATA_EX READ_CAPACITY_DATA_EX
UCHAR AllocationLength[4]
Definition: scsi.h:700
UCHAR IdleTimer[4]
Definition: scsi.h:2457
struct _CDB::_SEND_VOLUME_TAG * PSEND_VOLUME_TAG
UCHAR FReserved2
Definition: cdrw_hw.h:107
struct _SENSE_DATA SENSE_DATA
struct _CDB::_READ_TRACK_INFORMATION READ_TRACK_INFORMATION
UCHAR OperationCode
Definition: cdrw_hw.h:312
UCHAR Reserved2
Definition: scsi.h:774
UCHAR BlockVerify
Definition: scsi.h:1627
struct _SLOT_TABLE_INFORMATION SLOT_TABLE_INFORMATION
UCHAR Reserved1
Definition: scsi.h:942
struct _CDB::_GET_CONFIGURATION GET_CONFIGURATION
struct _CDB::_PERSISTENT_RESERVE_OUT * PPERSISTENT_RESERVE_OUT
UCHAR FixedPacket
Definition: scsi.h:1912
struct _MODE_INFO_EXCEPTIONS * PMODE_INFO_EXCEPTIONS
UCHAR ParameterListLength[2]
Definition: scsi.h:1482
UCHAR WriteRotationControl
Definition: scsi.h:1963
UCHAR TriggerLBA[4]
Definition: cdrw_hw.h:741
UCHAR Obsolete[2]
Definition: scsi.h:2477
struct _MODE_PARAMETER_HEADER10 MODE_PARAMETER_HEADER10
UCHAR DiscType
Definition: scsi.h:1828
UCHAR SessionNumberMsb
Definition: scsi.h:1926
UCHAR Erasable
Definition: scsi.h:1845
enum _VPD_IDENTIFIER_TYPE VPD_IDENTIFIER_TYPE
CDDA_OUTPUT_PORT CDDAOutputPorts[4]
Definition: scsi.h:2478
UCHAR OperationCode
Definition: scsi.h:740
UCHAR SegmentNumber
Definition: cdrw_hw.h:1166
Definition: cdrw_hw.h:28
UCHAR NextWritableAddress[4]
Definition: scsi.h:1920
UCHAR Reserved1
Definition: scsi.h:1575
UCHAR TransportElementAddress[2]
Definition: scsi.h:1343
UCHAR PlayLength[2]
Definition: scsi.h:946
struct _CDB::_RESERVE_TRACK_RZONE * PRESERVE_TRACK_RZONE
UCHAR StartingAddress[4]
Definition: scsi.h:1008
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
UCHAR Reserved2
Definition: scsi.h:991
UCHAR IncludeUserData
Definition: cdrw_hw.h:278
struct _MODE_PARAMETER_HEADER MODE_PARAMETER_HEADER
UCHAR Reserved2
Definition: cdrw_hw.h:3189
struct _CDB::_CDB6FORMAT CDB6FORMAT
struct _CDB::_READ12 READ12
UCHAR ParameterListLength[2]
Definition: scsi.h:1386
UCHAR OperationCode
Definition: scsi.h:941
UCHAR StartingFeature[2]
Definition: scsi.h:1553
struct _CDB::_READ_POSITION * PREAD_POSITION
UCHAR Reserved1
Definition: scsi.h:974
UCHAR BufferFullRatio
Definition: scsi.h:2249
enum _VPD_ASSOCIATION * PVPD_ASSOCIATION
union _CDB CDB
UCHAR CPBit
Definition: scsi.h:1153
UCHAR LogicalUnitNumber
Definition: scsi.h:1209
UCHAR Reserved2[7]
Definition: scsi.h:1019
UCHAR OperationCode
Definition: scsi.h:769
UCHAR SubChannelSelection
Definition: cdrw_hw.h:258
UCHAR Reserved
Definition: scsi.h:1183
UCHAR OperationCode
Definition: cdrw_hw.h:634
struct _MODE_CDROM_WRITE_PARAMETERS_PAGE2 * PMODE_CDROM_WRITE_PARAMETERS_PAGE2
struct _CDB::_REPORT_LUNS REPORT_LUNS
struct _CDB::_PLXTR_READ_CDDA PLXTR_READ_CDDA