ReactOS 0.4.16-dev-1946-g52006dd
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
27extern "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#define NOTIFICATION_BUSY_EVENT_LO_CHANGE 0x2
117
118#define NOTIFICATION_BUSY_STATUS_NO_EVENT 0x0
119#define NOTIFICATION_BUSY_STATUS_POWER 0x1
120#define NOTIFICATION_BUSY_STATUS_IMMEDIATE 0x2
121#define NOTIFICATION_BUSY_STATUS_DEFERRED 0x3
122
123#define DVD_FORMAT_LEAD_IN 0x00
124#define DVD_FORMAT_COPYRIGHT 0x01
125#define DVD_FORMAT_DISK_KEY 0x02
126#define DVD_FORMAT_BCA 0x03
127#define DVD_FORMAT_MANUFACTURING 0x04
128
129#define DVD_REPORT_AGID 0x00
130#define DVD_CHALLENGE_KEY 0x01
131#define DVD_KEY_1 0x02
132#define DVD_KEY_2 0x03
133#define DVD_TITLE_KEY 0x04
134#define DVD_REPORT_ASF 0x05
135#define DVD_INVALIDATE_AGID 0x3F
136
137#define BLANK_FULL 0x0
138#define BLANK_MINIMAL 0x1
139#define BLANK_TRACK 0x2
140#define BLANK_UNRESERVE_TRACK 0x3
141#define BLANK_TAIL 0x4
142#define BLANK_UNCLOSE_SESSION 0x5
143#define BLANK_SESSION 0x6
144
145#define CD_EXPECTED_SECTOR_ANY 0x0
146#define CD_EXPECTED_SECTOR_CDDA 0x1
147#define CD_EXPECTED_SECTOR_MODE1 0x2
148#define CD_EXPECTED_SECTOR_MODE2 0x3
149#define CD_EXPECTED_SECTOR_MODE2_FORM1 0x4
150#define CD_EXPECTED_SECTOR_MODE2_FORM2 0x5
151
152#define DISK_STATUS_EMPTY 0x00
153#define DISK_STATUS_INCOMPLETE 0x01
154#define DISK_STATUS_COMPLETE 0x02
155#define DISK_STATUS_OTHERS 0x03
156
157#define LAST_SESSION_EMPTY 0x00
158#define LAST_SESSION_INCOMPLETE 0x01
159#define LAST_SESSION_RESERVED_DAMAGED 0x02
160#define LAST_SESSION_COMPLETE 0x03
161
162#define DISK_TYPE_CDDA 0x00
163#define DISK_TYPE_CDI 0x10
164#define DISK_TYPE_XA 0x20
165#define DISK_TYPE_UNDEFINED 0xFF
166
167#define DISC_BGFORMAT_STATE_NONE 0x0
168#define DISC_BGFORMAT_STATE_INCOMPLETE 0x1
169#define DISC_BGFORMAT_STATE_RUNNING 0x2
170#define DISC_BGFORMAT_STATE_COMPLETE 0x3
171
172#define DATA_BLOCK_MODE0 0x0
173#define DATA_BLOCK_MODE1 0x1
174#define DATA_BLOCK_MODE2 0x2
175
176/* READ_TOC formats */
177#define READ_TOC_FORMAT_TOC 0x00
178#define READ_TOC_FORMAT_SESSION 0x01
179#define READ_TOC_FORMAT_FULL_TOC 0x02
180#define READ_TOC_FORMAT_PMA 0x03
181#define READ_TOC_FORMAT_ATIP 0x04
182
183#define CDB6GENERIC_LENGTH 6
184#define CDB10GENERIC_LENGTH 10
185#define CDB12GENERIC_LENGTH 12
186
187#define SETBITON 1
188#define SETBITOFF 0
189
190/* Mode Sense/Select page constants */
191#define MODE_PAGE_VENDOR_SPECIFIC 0x00
192#define MODE_PAGE_ERROR_RECOVERY 0x01
193#define MODE_PAGE_DISCONNECT 0x02
194#define MODE_PAGE_FORMAT_DEVICE 0x03
195#define MODE_PAGE_MRW 0x03
196#define MODE_PAGE_RIGID_GEOMETRY 0x04
197#define MODE_PAGE_FLEXIBILE 0x05
198#define MODE_PAGE_WRITE_PARAMETERS 0x05
199#define MODE_PAGE_VERIFY_ERROR 0x07
200#define MODE_PAGE_CACHING 0x08
201#define MODE_PAGE_PERIPHERAL 0x09
202#define MODE_PAGE_CONTROL 0x0A
203#define MODE_PAGE_MEDIUM_TYPES 0x0B
204#define MODE_PAGE_NOTCH_PARTITION 0x0C
205#define MODE_PAGE_CD_AUDIO_CONTROL 0x0E
206#define MODE_PAGE_DATA_COMPRESS 0x0F
207#define MODE_PAGE_DEVICE_CONFIG 0x10
208#define MODE_PAGE_XOR_CONTROL 0x10
209#define MODE_PAGE_MEDIUM_PARTITION 0x11
210#define MODE_PAGE_ENCLOSURE_SERVICES_MANAGEMENT 0x14
211#define MODE_PAGE_EXTENDED 0x15
212#define MODE_PAGE_EXTENDED_DEVICE_SPECIFIC 0x16
213#define MODE_PAGE_CDVD_FEATURE_SET 0x18
214#define MODE_PAGE_PROTOCOL_SPECIFIC_LUN 0x18
215#define MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19
216#define MODE_PAGE_POWER_CONDITION 0x1A
217#define MODE_PAGE_LUN_MAPPING 0x1B
218#define MODE_PAGE_FAULT_REPORTING 0x1C
219#define MODE_PAGE_CDVD_INACTIVITY 0x1D
220#define MODE_PAGE_ELEMENT_ADDRESS 0x1D
221#define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E
222#define MODE_PAGE_DEVICE_CAPABILITIES 0x1F
223#define MODE_PAGE_CAPABILITIES 0x2A
224
225#define MODE_SENSE_RETURN_ALL 0x3f
226
227#define MODE_SENSE_CURRENT_VALUES 0x00
228#define MODE_SENSE_CHANGEABLE_VALUES 0x40
229#define MODE_SENSE_DEFAULT_VAULES 0x80
230#define MODE_SENSE_SAVED_VALUES 0xc0
231
232/* SCSI CDB operation codes */
233#define SCSIOP_TEST_UNIT_READY 0x00
234#define SCSIOP_REZERO_UNIT 0x01
235#define SCSIOP_REWIND 0x01
236#define SCSIOP_REQUEST_BLOCK_ADDR 0x02
237#define SCSIOP_REQUEST_SENSE 0x03
238#define SCSIOP_FORMAT_UNIT 0x04
239#define SCSIOP_READ_BLOCK_LIMITS 0x05
240#define SCSIOP_REASSIGN_BLOCKS 0x07
241#define SCSIOP_INIT_ELEMENT_STATUS 0x07
242#define SCSIOP_READ6 0x08
243#define SCSIOP_RECEIVE 0x08
244#define SCSIOP_WRITE6 0x0A
245#define SCSIOP_PRINT 0x0A
246#define SCSIOP_SEND 0x0A
247#define SCSIOP_SEEK6 0x0B
248#define SCSIOP_TRACK_SELECT 0x0B
249#define SCSIOP_SLEW_PRINT 0x0B
250#define SCSIOP_SET_CAPACITY 0x0B
251#define SCSIOP_SEEK_BLOCK 0x0C
252#define SCSIOP_PARTITION 0x0D
253#define SCSIOP_READ_REVERSE 0x0F
254#define SCSIOP_WRITE_FILEMARKS 0x10
255#define SCSIOP_FLUSH_BUFFER 0x10
256#define SCSIOP_SPACE 0x11
257#define SCSIOP_INQUIRY 0x12
258#define SCSIOP_VERIFY6 0x13
259#define SCSIOP_RECOVER_BUF_DATA 0x14
260#define SCSIOP_MODE_SELECT 0x15
261#define SCSIOP_RESERVE_UNIT 0x16
262#define SCSIOP_RELEASE_UNIT 0x17
263#define SCSIOP_COPY 0x18
264#define SCSIOP_ERASE 0x19
265#define SCSIOP_MODE_SENSE 0x1A
266#define SCSIOP_START_STOP_UNIT 0x1B
267#define SCSIOP_STOP_PRINT 0x1B
268#define SCSIOP_LOAD_UNLOAD 0x1B
269#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C
270#define SCSIOP_SEND_DIAGNOSTIC 0x1D
271#define SCSIOP_MEDIUM_REMOVAL 0x1E
272
273#define SCSIOP_READ_FORMATTED_CAPACITY 0x23
274#define SCSIOP_READ_CAPACITY 0x25
275#define SCSIOP_READ 0x28
276#define SCSIOP_WRITE 0x2A
277#define SCSIOP_SEEK 0x2B
278#define SCSIOP_LOCATE 0x2B
279#define SCSIOP_POSITION_TO_ELEMENT 0x2B
280#define SCSIOP_WRITE_VERIFY 0x2E
281#define SCSIOP_VERIFY 0x2F
282#define SCSIOP_SEARCH_DATA_HIGH 0x30
283#define SCSIOP_SEARCH_DATA_EQUAL 0x31
284#define SCSIOP_SEARCH_DATA_LOW 0x32
285#define SCSIOP_SET_LIMITS 0x33
286#define SCSIOP_READ_POSITION 0x34
287#define SCSIOP_SYNCHRONIZE_CACHE 0x35
288#define SCSIOP_COMPARE 0x39
289#define SCSIOP_COPY_COMPARE 0x3A
290#define SCSIOP_WRITE_DATA_BUFF 0x3B
291#define SCSIOP_READ_DATA_BUFF 0x3C
292#define SCSIOP_WRITE_LONG 0x3F
293#define SCSIOP_CHANGE_DEFINITION 0x40
294#define SCSIOP_WRITE_SAME 0x41
295#define SCSIOP_READ_SUB_CHANNEL 0x42
296#define SCSIOP_UNMAP 0x42
297#define SCSIOP_READ_TOC 0x43
298#define SCSIOP_READ_HEADER 0x44
299#define SCSIOP_REPORT_DENSITY_SUPPORT 0x44
300#define SCSIOP_PLAY_AUDIO 0x45
301#define SCSIOP_GET_CONFIGURATION 0x46
302#define SCSIOP_PLAY_AUDIO_MSF 0x47
303#define SCSIOP_PLAY_TRACK_INDEX 0x48
304#define SCSIOP_SANITIZE 0x48
305#define SCSIOP_PLAY_TRACK_RELATIVE 0x49
306#define SCSIOP_GET_EVENT_STATUS 0x4A
307#define SCSIOP_PAUSE_RESUME 0x4B
308#define SCSIOP_LOG_SELECT 0x4C
309#define SCSIOP_LOG_SENSE 0x4D
310#define SCSIOP_STOP_PLAY_SCAN 0x4E
311#define SCSIOP_XDWRITE 0x50
312#define SCSIOP_XPWRITE 0x51
313#define SCSIOP_READ_DISK_INFORMATION 0x51
314#define SCSIOP_READ_DISC_INFORMATION 0x51
315#define SCSIOP_READ_TRACK_INFORMATION 0x52
316#define SCSIOP_XDWRITE_READ 0x53
317#define SCSIOP_RESERVE_TRACK_RZONE 0x53
318#define SCSIOP_SEND_OPC_INFORMATION 0x54
319#define SCSIOP_MODE_SELECT10 0x55
320#define SCSIOP_RESERVE_UNIT10 0x56
321#define SCSIOP_RESERVE_ELEMENT 0x56
322#define SCSIOP_RELEASE_UNIT10 0x57
323#define SCSIOP_RELEASE_ELEMENT 0x57
324#define SCSIOP_REPAIR_TRACK 0x58
325#define SCSIOP_MODE_SENSE10 0x5A
326#define SCSIOP_CLOSE_TRACK_SESSION 0x5B
327#define SCSIOP_READ_BUFFER_CAPACITY 0x5C
328#define SCSIOP_SEND_CUE_SHEET 0x5D
329#define SCSIOP_PERSISTENT_RESERVE_IN 0x5E
330#define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F
331
332#define SCSIOP_OPERATION32 0x7F
333
334#define SCSIOP_XDWRITE_EXTENDED16 0x80
335#define SCSIOP_WRITE_FILEMARKS16 0x80
336#define SCSIOP_REBUILD16 0x81
337#define SCSIOP_READ_REVERSE16 0x81
338#define SCSIOP_REGENERATE16 0x82
339#define SCSIOP_EXTENDED_COPY 0x83
340#define SCSIOP_POPULATE_TOKEN 0x83
341#define SCSIOP_WRITE_USING_TOKEN 0x83
342#define SCSIOP_RECEIVE_COPY_RESULTS 0x84
343#define SCSIOP_RECEIVE_ROD_TOKEN_INFORMATION 0x84
344#define SCSIOP_ATA_PASSTHROUGH16 0x85
345#define SCSIOP_ACCESS_CONTROL_IN 0x86
346#define SCSIOP_ACCESS_CONTROL_OUT 0x87
347#define SCSIOP_READ16 0x88
348#define SCSIOP_COMPARE_AND_WRITE 0x89
349#define SCSIOP_WRITE16 0x8A
350#define SCSIOP_READ_ATTRIBUTES 0x8C
351#define SCSIOP_WRITE_ATTRIBUTES 0x8D
352#define SCSIOP_WRITE_VERIFY16 0x8E
353#define SCSIOP_VERIFY16 0x8F
354#define SCSIOP_PREFETCH16 0x90
355#define SCSIOP_SYNCHRONIZE_CACHE16 0x91
356#define SCSIOP_SPACE16 0x91
357#define SCSIOP_LOCK_UNLOCK_CACHE16 0x92
358#define SCSIOP_LOCATE16 0x92
359#define SCSIOP_WRITE_SAME16 0x93
360#define SCSIOP_ERASE16 0x93
361#define SCSIOP_ZBC_OUT 0x94
362#define SCSIOP_ZBC_IN 0x95
363#define SCSIOP_READ_DATA_BUFF16 0x9B
364#define SCSIOP_READ_CAPACITY16 0x9E
365#define SCSIOP_GET_LBA_STATUS 0x9E
366#define SCSIOP_GET_PHYSICAL_ELEMENT_STATUS 0x9E
367#define SCSIOP_REMOVE_ELEMENT_AND_TRUNCATE 0x9E
368#define SCSIOP_SERVICE_ACTION_IN16 0x9E
369#define SCSIOP_SERVICE_ACTION_OUT16 0x9F
370
371#define SCSIOP_REPORT_LUNS 0xA0
372#define SCSIOP_BLANK 0xA1
373#define SCSIOP_ATA_PASSTHROUGH12 0xA1
374#define SCSIOP_SEND_EVENT 0xA2
375#define SCSIOP_SECURITY_PROTOCOL_IN 0xA2
376#define SCSIOP_SEND_KEY 0xA3
377#define SCSIOP_MAINTENANCE_IN 0xA3
378#define SCSIOP_REPORT_KEY 0xA4
379#define SCSIOP_MAINTENANCE_OUT 0xA4
380#define SCSIOP_MOVE_MEDIUM 0xA5
381#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6
382#define SCSIOP_EXCHANGE_MEDIUM 0xA6
383#define SCSIOP_SET_READ_AHEAD 0xA7
384#define SCSIOP_MOVE_MEDIUM_ATTACHED 0xA7
385#define SCSIOP_READ12 0xA8
386#define SCSIOP_GET_MESSAGE 0xA8
387#define SCSIOP_SERVICE_ACTION_OUT12 0xA9
388#define SCSIOP_WRITE12 0xAA
389#define SCSIOP_SEND_MESSAGE 0xAB
390#define SCSIOP_SERVICE_ACTION_IN12 0xAB
391#define SCSIOP_GET_PERFORMANCE 0xAC
392#define SCSIOP_READ_DVD_STRUCTURE 0xAD
393#define SCSIOP_WRITE_VERIFY12 0xAE
394#define SCSIOP_VERIFY12 0xAF
395#define SCSIOP_SEARCH_DATA_HIGH12 0xB0
396#define SCSIOP_SEARCH_DATA_EQUAL12 0xB1
397#define SCSIOP_SEARCH_DATA_LOW12 0xB2
398#define SCSIOP_SET_LIMITS12 0xB3
399#define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4
400#define SCSIOP_REQUEST_VOL_ELEMENT 0xB5
401#define SCSIOP_SECURITY_PROTOCOL_OUT 0xB5
402#define SCSIOP_SEND_VOLUME_TAG 0xB6
403#define SCSIOP_SET_STREAMING 0xB6
404#define SCSIOP_READ_DEFECT_DATA 0xB7
405#define SCSIOP_READ_ELEMENT_STATUS 0xB8
406#define SCSIOP_READ_CD_MSF 0xB9
407#define SCSIOP_SCAN_CD 0xBA
408#define SCSIOP_REDUNDANCY_GROUP_IN 0xBA
409#define SCSIOP_SET_CD_SPEED 0xBB
410#define SCSIOP_REDUNDANCY_GROUP_OUT 0xBB
411#define SCSIOP_PLAY_CD 0xBC
412#define SCSIOP_SPARE_IN 0xBC
413#define SCSIOP_MECHANISM_STATUS 0xBD
414#define SCSIOP_SPARE_OUT 0xBD
415#define SCSIOP_READ_CD 0xBE
416#define SCSIOP_VOLUME_SET_IN 0xBE
417#define SCSIOP_SEND_DVD_STRUCTURE 0xBF
418#define SCSIOP_VOLUME_SET_OUT 0xBF
419#define SCSIOP_INIT_ELEMENT_RANGE 0xE7
420
421// SCSI operation parameters
422
423// SCSIOP_SANITIZE (0x48)
424
425#define SERVICE_ACTION_OVERWRITE 0x01
426#define SERVICE_ACTION_BLOCK_ERASE 0x02
427#define SERVICE_ACTION_CRYPTO_ERASE 0x03
428#define SERVICE_ACTION_EXIT_FAILURE 0x1f
429
430// SCSIOP_OPERATION32 (0x7F)
431
432#define SERVICE_ACTION_XDWRITE 0x0004
433#define SERVICE_ACTION_XPWRITE 0x0006
434#define SERVICE_ACTION_XDWRITEREAD 0x0007
435#define SERVICE_ACTION_WRITE 0x000B
436#define SERVICE_ACTION_WRITE_VERIFY 0x000C
437#define SERVICE_ACTION_WRITE_SAME 0x000D
438#define SERVICE_ACTION_ORWRITE 0x000E
439
440// SCSIOP_POPULATE_TOKEN, SCSIOP_WRITE_USING_TOKEN (0x83)
441
442#define SERVICE_ACTION_POPULATE_TOKEN 0x10
443#define SERVICE_ACTION_WRITE_USING_TOKEN 0x11
444
445// SCSIOP_RECEIVE_ROD_TOKEN_INFORMATION (0x84)
446
447#define SERVICE_ACTION_RECEIVE_TOKEN_INFORMATION 0x07
448
449// SCSIOP_ZBC_OUT (0x94)
450
451#define SERVICE_ACTION_CLOSE_ZONE 0x01
452#define SERVICE_ACTION_FINISH_ZONE 0x02
453#define SERVICE_ACTION_OPEN_ZONE 0x03
454#define SERVICE_ACTION_RESET_WRITE_POINTER 0x04
455
456// SCSIOP_ZBC_IN (0x95)
457
458#define SERVICE_ACTION_REPORT_ZONES 0x00
459
460#define REPORT_ZONES_OPTION_LIST_ALL_ZONES 0x00
461#define REPORT_ZONES_OPTION_LIST_EMPTY_ZONES 0x01
462#define REPORT_ZONES_OPTION_LIST_IMPLICITLY_OPENED_ZONES 0x02
463#define REPORT_ZONES_OPTION_LIST_EXPLICITLY_OPENED_ZONES 0x03
464#define REPORT_ZONES_OPTION_LIST_CLOSED_ZONES 0x04
465#define REPORT_ZONES_OPTION_LIST_FULL_ZONES 0x05
466#define REPORT_ZONES_OPTION_LIST_READ_ONLY_ZONES 0x06
467#define REPORT_ZONES_OPTION_LIST_OFFLINE_ZONES 0x07
468#define REPORT_ZONES_OPTION_LIST_RWP_ZONES 0x10
469#define REPORT_ZONES_OPTION_LIST_NON_SEQUENTIAL_WRITE_RESOURCES_ACTIVE_ZONES 0x11
470#define REPORT_ZONES_OPTION_LIST_NOT_WRITE_POINTER_ZONES 0x3F
471
472// SCSIOP_SERVICE_ACTION_IN16 (0x9E)
473
474#define SERVICE_ACTION_READ_CAPACITY16 0x10
475#define SERVICE_ACTION_GET_LBA_STATUS 0x12
476#define SERVICE_ACTION_GET_PHYSICAL_ELEMENT_STATUS 0x17
477#define SERVICE_ACTION_REMOVE_ELEMENT_AND_TRUNCATE 0x18
478
479// SCSIOP_MAINTENANCE_IN (0xA3)
480
481#define SERVICE_ACTION_REPORT_TIMESTAMP 0x0F
482
483// SCSIOP_MAINTENANCE_OUT (0xA4)
484
485#define SERVICE_ACTION_SET_TIMESTAMP 0x0F
486
487#define CDB_RETURN_ON_COMPLETION 0
488#define CDB_RETURN_IMMEDIATE 1
489
490#define CDB_FORCE_MEDIA_ACCESS 0x08
491
492#define SCSIOP_DENON_EJECT_DISC 0xE6
493#define SCSIOP_DENON_STOP_AUDIO 0xE7
494#define SCSIOP_DENON_PLAY_AUDIO 0xE8
495#define SCSIOP_DENON_READ_TOC 0xE9
496#define SCSIOP_DENON_READ_SUBCODE 0xEB
497
498#define SCSIMESS_ABORT 0x06
499#define SCSIMESS_ABORT_WITH_TAG 0x0D
500#define SCSIMESS_BUS_DEVICE_RESET 0X0C
501#define SCSIMESS_CLEAR_QUEUE 0X0E
502#define SCSIMESS_COMMAND_COMPLETE 0X00
503#define SCSIMESS_DISCONNECT 0X04
504#define SCSIMESS_EXTENDED_MESSAGE 0X01
505#define SCSIMESS_IDENTIFY 0X80
506#define SCSIMESS_IDENTIFY_WITH_DISCON 0XC0
507#define SCSIMESS_IGNORE_WIDE_RESIDUE 0X23
508#define SCSIMESS_INITIATE_RECOVERY 0X0F
509#define SCSIMESS_INIT_DETECTED_ERROR 0X05
510#define SCSIMESS_LINK_CMD_COMP 0X0A
511#define SCSIMESS_LINK_CMD_COMP_W_FLAG 0X0B
512#define SCSIMESS_MESS_PARITY_ERROR 0X09
513#define SCSIMESS_MESSAGE_REJECT 0X07
514#define SCSIMESS_NO_OPERATION 0X08
515#define SCSIMESS_HEAD_OF_QUEUE_TAG 0X21
516#define SCSIMESS_ORDERED_QUEUE_TAG 0X22
517#define SCSIMESS_SIMPLE_QUEUE_TAG 0X20
518#define SCSIMESS_RELEASE_RECOVERY 0X10
519#define SCSIMESS_RESTORE_POINTERS 0X03
520#define SCSIMESS_SAVE_DATA_POINTER 0X02
521#define SCSIMESS_TERMINATE_IO_PROCESS 0X11
522
523#define SCSIMESS_MODIFY_DATA_POINTER 0X00
524#define SCSIMESS_SYNCHRONOUS_DATA_REQ 0X01
525#define SCSIMESS_WIDE_DATA_REQUEST 0X03
526
527#define SCSIMESS_MODIFY_DATA_LENGTH 5
528#define SCSIMESS_SYNCH_DATA_LENGTH 3
529#define SCSIMESS_WIDE_DATA_LENGTH 2
530
531#define CDB_INQUIRY_EVPD 0x01
532
533#define LUN0_FORMAT_SAVING_DEFECT_LIST 0
534#define USE_DEFAULTMSB 0
535#define USE_DEFAULTLSB 0
536
537#define START_UNIT_CODE 0x01
538#define STOP_UNIT_CODE 0x00
539
540/* INQUIRYDATA.DeviceType constants */
541#define DIRECT_ACCESS_DEVICE 0x00
542#define SEQUENTIAL_ACCESS_DEVICE 0x01
543#define PRINTER_DEVICE 0x02
544#define PROCESSOR_DEVICE 0x03
545#define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04
546#define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05
547#define SCANNER_DEVICE 0x06
548#define OPTICAL_DEVICE 0x07
549#define MEDIUM_CHANGER 0x08
550#define COMMUNICATION_DEVICE 0x09
551#define ARRAY_CONTROLLER_DEVICE 0x0C
552#define SCSI_ENCLOSURE_DEVICE 0x0D
553#define REDUCED_BLOCK_DEVICE 0x0E
554#define OPTICAL_CARD_READER_WRITER_DEVICE 0x0F
555#define BRIDGE_CONTROLLER_DEVICE 0x10
556#define OBJECT_BASED_STORAGE_DEVICE 0x11
557#define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F
558
559#define DEVICE_QUALIFIER_ACTIVE 0x00
560#define DEVICE_QUALIFIER_NOT_ACTIVE 0x01
561#define DEVICE_QUALIFIER_NOT_SUPPORTED 0x03
562
563/* INQUIRYDATA.DeviceTypeQualifier constants */
564#define DEVICE_CONNECTED 0x00
565
566#define SCSISTAT_GOOD 0x00
567#define SCSISTAT_CHECK_CONDITION 0x02
568#define SCSISTAT_CONDITION_MET 0x04
569#define SCSISTAT_BUSY 0x08
570#define SCSISTAT_INTERMEDIATE 0x10
571#define SCSISTAT_INTERMEDIATE_COND_MET 0x14
572#define SCSISTAT_RESERVATION_CONFLICT 0x18
573#define SCSISTAT_COMMAND_TERMINATED 0x22
574#define SCSISTAT_QUEUE_FULL 0x28
575
576#define RESERVATION_ACTION_READ_KEYS 0x00
577#define RESERVATION_ACTION_READ_RESERVATIONS 0x01
578
579#define RESERVATION_ACTION_REGISTER 0x00
580#define RESERVATION_ACTION_RESERVE 0x01
581#define RESERVATION_ACTION_RELEASE 0x02
582#define RESERVATION_ACTION_CLEAR 0x03
583#define RESERVATION_ACTION_PREEMPT 0x04
584#define RESERVATION_ACTION_PREEMPT_ABORT 0x05
585#define RESERVATION_ACTION_REGISTER_IGNORE_EXISTING 0x06
586
587#define RESERVATION_SCOPE_LU 0x00
588#define RESERVATION_SCOPE_ELEMENT 0x02
589
590#define RESERVATION_TYPE_WRITE_EXCLUSIVE 0x01
591#define RESERVATION_TYPE_EXCLUSIVE 0x03
592#define RESERVATION_TYPE_WRITE_EXCLUSIVE_REGISTRANTS 0x05
593#define RESERVATION_TYPE_EXCLUSIVE_REGISTRANTS 0x06
594
595#define SENSE_BUFFER_SIZE sizeof(SENSE_DATA)
596#define SENSE_BUFFER_SIZE_EX sizeof(SENSE_DATA_EX)
597
598#define MAX_SENSE_BUFFER_SIZE 255
599
600#define MAX_ADDITIONAL_SENSE_BYTES (MAX_SENSE_BUFFER_SIZE - SENSE_BUFFER_SIZE)
601#define MAX_ADDITIONAL_SENSE_BYTES_EX (MAX_SENSE_BUFFER_SIZE - SENSE_BUFFER_SIZE_EX)
602
603/* Sense codes */
604#define SCSI_SENSE_NO_SENSE 0x00
605#define SCSI_SENSE_RECOVERED_ERROR 0x01
606#define SCSI_SENSE_NOT_READY 0x02
607#define SCSI_SENSE_MEDIUM_ERROR 0x03
608#define SCSI_SENSE_HARDWARE_ERROR 0x04
609#define SCSI_SENSE_ILLEGAL_REQUEST 0x05
610#define SCSI_SENSE_UNIT_ATTENTION 0x06
611#define SCSI_SENSE_DATA_PROTECT 0x07
612#define SCSI_SENSE_BLANK_CHECK 0x08
613#define SCSI_SENSE_UNIQUE 0x09
614#define SCSI_SENSE_COPY_ABORTED 0x0A
615#define SCSI_SENSE_ABORTED_COMMAND 0x0B
616#define SCSI_SENSE_EQUAL 0x0C
617#define SCSI_SENSE_VOL_OVERFLOW 0x0D
618#define SCSI_SENSE_MISCOMPARE 0x0E
619#define SCSI_SENSE_RESERVED 0x0F
620
621// Sense Error Codes
622
623#define SCSI_SENSE_ERRORCODE_FIXED_CURRENT 0x70
624#define SCSI_SENSE_ERRORCODE_FIXED_DEFERRED 0x71
625#define SCSI_SENSE_ERRORCODE_DESCRIPTOR_CURRENT 0x72
626#define SCSI_SENSE_ERRORCODE_DESCRIPTOR_DEFERRED 0x73
627
628// Sense Descriptor Types
629
630#define SCSI_SENSE_DESCRIPTOR_TYPE_INFORMATION 0x00
631#define SCSI_SENSE_DESCRIPTOR_TYPE_COMMAND_SPECIFIC 0x01
632#define SCSI_SENSE_DESCRIPTOR_TYPE_SENSE_KEY_SPECIFIC 0x02
633#define SCSI_SENSE_DESCRIPTOR_TYPE_FIELD_REPLACEABLE_UNIT 0x03
634#define SCSI_SENSE_DESCRIPTOR_TYPE_STREAM_COMMAND 0x04
635#define SCSI_SENSE_DESCRIPTOR_TYPE_BLOCK_COMMAND 0x05
636#define SCSI_SENSE_DESCRIPTOR_TYPE_OSD_OBJECT_IDENTIFICATION 0x06
637#define SCSI_SENSE_DESCRIPTOR_TYPE_OSD_RESPONSE_INTEGRITY_CHECK 0x07
638#define SCSI_SENSE_DESCRIPTOR_TYPE_OSD_ATTRIBUTE_IDENTIFICATION 0x08
639#define SCSI_SENSE_DESCRIPTOR_TYPE_ATA_STATUS_RETURN 0x09
640#define SCSI_SENSE_DESCRIPTOR_TYPE_PROGRESS_INDICATION 0x0A
641#define SCSI_SENSE_DESCRIPTOR_TYPE_USER_DATA_SEGMENT_REFERRAL 0x0B
642
643/* Additional tape bit */
644#define SCSI_ILLEGAL_LENGTH 0x20
645#define SCSI_EOM 0x40
646#define SCSI_FILE_MARK 0x80
647
648/* Additional Sense codes */
649#define SCSI_ADSENSE_NO_SENSE 0x00
650#define SCSI_ADSENSE_NO_SEEK_COMPLETE 0x02
651#define SCSI_ADSENSE_WRITE 0x03
652#define SCSI_ADSENSE_LUN_NOT_READY 0x04
653#define SCSI_ADSENSE_LUN_COMMUNICATION 0x08
654#define SCSI_ADSENSE_SERVO_ERROR 0x09
655#define SCSI_ADSENSE_WARNING 0x0B
656#define SCSI_ADSENSE_WRITE_ERROR 0x0C
657#define SCSI_ADSENSE_COPY_TARGET_DEVICE_ERROR 0x0D
658#define SCSI_ADSENSE_UNRECOVERED_ERROR 0x11
659#define SCSI_ADSENSE_TRACK_ERROR 0x14
660#define SCSI_ADSENSE_SEEK_ERROR 0x15
661#define SCSI_ADSENSE_REC_DATA_NOECC 0x17
662#define SCSI_ADSENSE_REC_DATA_ECC 0x18
663#define SCSI_ADSENSE_DEFECT_LIST_ERROR 0x19
664#define SCSI_ADSENSE_PARAMETER_LIST_LENGTH 0x1A
665#define SCSI_ADSENSE_MISCOMPARE_DURING_VERIFY_OPERATION 0x1D
666#define SCSI_ADSENSE_ILLEGAL_COMMAND 0x20
667#define SCSI_ADSENSE_ACCESS_DENIED 0x20
668#define SCSI_ADSENSE_ILLEGAL_BLOCK 0x21
669#define SCSI_ADSENSE_INVALID_TOKEN 0x23
670#define SCSI_ADSENSE_INVALID_CDB 0x24
671#define SCSI_ADSENSE_INVALID_LUN 0x25
672#define SCSI_ADSENSE_INVALID_FIELD_PARAMETER_LIST 0x26
673#define SCSI_ADSENSE_WRITE_PROTECT 0x27
674#define SCSI_ADSENSE_MEDIUM_CHANGED 0x28
675#define SCSI_ADSENSE_BUS_RESET 0x29
676#define SCSI_ADSENSE_PARAMETERS_CHANGED 0x2A
677#define SCSI_ADSENSE_INSUFFICIENT_TIME_FOR_OPERATION 0x2E
678#define SCSI_ADSENSE_INVALID_MEDIA 0x30
679#define SCSI_ADSENSE_DEFECT_LIST 0x32
680#define SCSI_ADSENSE_LB_PROVISIONING 0x38
681#define SCSI_ADSENSE_NO_MEDIA_IN_DEVICE 0x3a
682#define SCSI_ADSENSE_POSITION_ERROR 0x3b
683#define SCSI_ADSENSE_LOGICAL_UNIT_ERROR 0x3e
684#define SCSI_ADSENSE_OPERATING_CONDITIONS_CHANGED 0x3f
685#define SCSI_ADSENSE_DATA_PATH_FAILURE 0x41
686#define SCSI_ADSENSE_POWER_ON_SELF_TEST_FAILURE 0x42
687#define SCSI_ADSENSE_INTERNAL_TARGET_FAILURE 0x44
688#define SCSI_ADSENSE_DATA_TRANSFER_ERROR 0x4b
689#define SCSI_ADSENSE_LUN_FAILED_SELF_CONFIGURATION 0x4c
690#define SCSI_ADSENSE_RESOURCE_FAILURE 0x55
691#define SCSI_ADSENSE_OPERATOR_REQUEST 0x5a
692#define SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x5d
693#define SCSI_ADSENSE_ILLEGAL_MODE_FOR_THIS_TRACK 0x64
694#define SCSI_ADSENSE_COPY_PROTECTION_FAILURE 0x6f
695#define SCSI_ADSENSE_POWER_CALIBRATION_ERROR 0x73
696#define SCSI_ADSENSE_VENDOR_UNIQUE 0x80
697#define SCSI_ADSENSE_MUSIC_AREA 0xA0
698#define SCSI_ADSENSE_DATA_AREA 0xA1
699#define SCSI_ADSENSE_VOLUME_OVERFLOW 0xA7
700
701#define SCSI_ADWRITE_PROTECT SCSI_ADSENSE_WRITE_PROTECT
702#define SCSI_FAILURE_PREDICTION_THRESHOLD_EXCEEDED SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED
703
704// ADSENSE additional qualifiers
705
706// SCSI_ADSENSE_NO_SENSE (0x00)
707
708#define SCSI_SENSEQ_FILEMARK_DETECTED 0x01
709#define SCSI_SENSEQ_END_OF_MEDIA_DETECTED 0x02
710#define SCSI_SENSEQ_SETMARK_DETECTED 0x03
711#define SCSI_SENSEQ_BEGINNING_OF_MEDIA_DETECTED 0x04
712#define SCSI_SENSEQ_OPERATION_IS_IN_PROGRESS 0x16
713
714// SCSI_ADSENSE_WRITE (0x03)
715
716#define SCSI_SENSEQ_PERIPHERAL_DEVICE_WRITE_FAULT 0x00
717#define SCSI_SENSEQ_NO_WRITE_CURRENT 0x01
718#define SCSI_SENSEQ_EXCESSIVE_WRITE_ERRORS 0x02
719
720// SCSI_ADSENSE_LUN_NOT_READY (0x04)
721
722#define SCSI_SENSEQ_CAUSE_NOT_REPORTABLE 0x00
723#define SCSI_SENSEQ_BECOMING_READY 0x01
724#define SCSI_SENSEQ_INIT_COMMAND_REQUIRED 0x02
725#define SCSI_SENSEQ_MANUAL_INTERVENTION_REQUIRED 0x03
726#define SCSI_SENSEQ_FORMAT_IN_PROGRESS 0x04
727#define SCSI_SENSEQ_REBUILD_IN_PROGRESS 0x05
728#define SCSI_SENSEQ_RECALCULATION_IN_PROGRESS 0x06
729#define SCSI_SENSEQ_OPERATION_IN_PROGRESS 0x07
730#define SCSI_SENSEQ_LONG_WRITE_IN_PROGRESS 0x08
731#define SCSI_SENSEQ_SPACE_ALLOC_IN_PROGRESS 0x14
732
733// SCSI_ADSENSE_LUN_COMMUNICATION (0x08)
734
735#define SCSI_SENSEQ_COMM_FAILURE 0x00
736#define SCSI_SENSEQ_COMM_TIMEOUT 0x01
737#define SCSI_SENSEQ_COMM_PARITY_ERROR 0x02
738#define SCSI_SESNEQ_COMM_CRC_ERROR 0x03
739#define SCSI_SENSEQ_UNREACHABLE_TARGET 0x04
740
741// SCSI_ADSENSE_SERVO_ERROR (0x09)
742
743#define SCSI_SENSEQ_TRACK_FOLLOWING_ERROR 0x00
744#define SCSI_SENSEQ_TRACKING_SERVO_FAILURE 0x01
745#define SCSI_SENSEQ_FOCUS_SERVO_FAILURE 0x02
746#define SCSI_SENSEQ_SPINDLE_SERVO_FAILURE 0x03
747#define SCSI_SENSEQ_HEAD_SELECT_FAULT 0x04
748
749// SCSI_ADSENSE_WARNING (0x0B)
750
751#define SCSI_SENSEQ_POWER_LOSS_EXPECTED 0x08
752
753// SCSI_ADSENSE_WRITE_ERROR (0x0C)
754
755#define SCSI_SENSEQ_LOSS_OF_STREAMING 0x09
756#define SCSI_SENSEQ_PADDING_BLOCKS_ADDED 0x0A
757
758// SCSI_ADSENSE_COPY_TARGET_DEVICE_ERROR (0x0D)
759
760#define SCSI_SENSEQ_NOT_REACHABLE 0x02
761#define SCSI_SENSEQ_DATA_UNDERRUN 0x04
762
763// SCSI_ADSENSE_UNRECOVERED_ERROR (0x11)
764
765#define SCSI_SENSEQ_UNRECOVERED_READ_ERROR 0x00
766
767// SCSI_ADSENSE_SEEK_ERROR (0x15)
768
769#define SCSI_SENSEQ_RANDOM_POSITIONING_ERROR 0x00
770#define SCSI_SENSEQ_MECHANICAL_POSITIONING_ERROR 0x01
771#define SCSI_SENSEQ_POSITIONING_ERROR_DETECTED_BY_READ_OF_MEDIUM 0x02
772
773// SCSI_ADSENSE_DEFECT_LIST_ERROR (0x19)
774
775#define SCSI_SENSEQ_DEFECT_LIST_ERROR 0x00
776#define SCSI_SENSEQ_DEFECT_LIST_NOT_AVAILABLE 0x01
777#define SCSI_SENSEQ_DEFECT_LIST_ERROR_IN_PRIMARY_LIST 0x02
778#define SCSI_SENSEQ_DEFECT_LIST_ERROR_IN_GROWN_LIST 0x03
779
780// SCSI_ADSENSE_ACCESS_DENIED (0x20)
781
782#define SCSI_SENSEQ_NO_ACCESS_RIGHTS 0x02
783
784// SCSI_ADSENSE_ILLEGAL_BLOCK (0x21)
785
786#define SCSI_SENSEQ_LOGICAL_ADDRESS_OUT_OF_RANGE 0x00
787#define SCSI_SENSEQ_ILLEGAL_ELEMENT_ADDR 0x01
788#define SCSI_SENSEQ_INVALID_WRITE_ADDRESS 0x02
789#define SCSI_SENSEQ_INVALID_WRITE_CROSSING_LAYER_JUMP 0x03
790#define SCSI_SENSEQ_UNALIGNED_WRITE 0x04
791#define SCSI_SENSEQ_WRITE_BOUNDARY_VIOLATION 0x05
792#define SCSI_SENSEQ_READ_INVALID_DATA 0x06
793#define SCSI_SENSEQ_READ_BOUNDARY_VIOLATION 0x07
794#define SCSI_SENSEQ_MISALIGNED_WRITE 0x08
795
796// SCSI_ADSENSE_INVALID_FIELD_PARAMETER_LIST (0x26)
797
798#define SCSI_SENSEQ_INVALID_RELEASE_OF_PERSISTENT_RESERVATION 0x04
799#define SCSI_SENSEQ_TOO_MANY_SEGMENT_DESCRIPTORS 0x08
800
801// SCSI_ADSENSE_WRITE_PROTECT (0x27)
802
803#define SCSI_SENSEQ_SPACE_ALLOC_FAILED_WRITE_PROTECT 0x07
804
805// SCSI_ADSENSE_PARAMETERS_CHANGED (0x2A)
806
807#define SCSI_SENSEQ_CAPACITY_DATA_CHANGED 0x09
808
809// SCSI_ADSENSE_POSITION_ERROR (0x3b)
810
811#define SCSI_SENSEQ_DESTINATION_FULL 0x0d
812#define SCSI_SENSEQ_SOURCE_EMPTY 0x0e
813
814// SCSI_ADSENSE_INVALID_MEDIA (0x30)
815
816#define SCSI_SENSEQ_INCOMPATIBLE_MEDIA_INSTALLED 0x00
817#define SCSI_SENSEQ_UNKNOWN_FORMAT 0x01
818#define SCSI_SENSEQ_INCOMPATIBLE_FORMAT 0x02
819#define SCSI_SENSEQ_CLEANING_CARTRIDGE_INSTALLED 0x03
820
821// SCSI_ADSENSE_DEFECT_LIST (0x32)
822
823#define SCSI_SENSEQ_NO_DEFECT_SPARE_LOCATION_AVAILABLE 0x00
824#define SCSI_SENSEQ_DEFECT_LIST_UPDATE_FAILURE 0x01
825
826// SCSI_ADSENSE_LB_PROVISIONING (0x38)
827
828#define SCSI_SENSEQ_SOFT_THRESHOLD_REACHED 0x07
829
830// SCSI_ADSENSE_LOGICAL_UNIT_ERROR (0x3e)
831
832#define SCSI_SENSEQ_LOGICAL_UNIT_HAS_NOT_SELF_CONFIGURED_YET 0x00
833#define SCSI_SENSEQ_LOGICAL_UNIT_FAILURE 0x01
834#define SCSI_SENSEQ_TIMEOUT_ON_LOGICAL_UNIT 0x02
835#define SCSI_SENSEQ_LOGICAL_UNIT_FAILED_SELF_TEST 0x03
836#define SCSI_SENSEQ_LOGICAL_UNIT_FAILED_TO_UPDATE_SELF_TEST_LOG 0x04
837
838// SCSI_ADSENSE_OPERATING_CONDITIONS_CHANGED (0x3f)
839
840#define SCSI_SENSEQ_TARGET_OPERATING_CONDITIONS_CHANGED 0x00
841#define SCSI_SENSEQ_MICROCODE_CHANGED 0x01
842#define SCSI_SENSEQ_OPERATING_DEFINITION_CHANGED 0x02
843#define SCSI_SENSEQ_INQUIRY_DATA_CHANGED 0x03
844#define SCSI_SENSEQ_COMPONENT_DEVICE_ATTACHED 0x04
845#define SCSI_SENSEQ_DEVICE_IDENTIFIER_CHANGED 0x05
846#define SCSI_SENSEQ_REDUNDANCY_GROUP_MODIFIED 0x06
847#define SCSI_SENSEQ_REDUNDANCY_GROUP_DELETED 0x07
848#define SCSI_SENSEQ_SPARE_MODIFIED 0x08
849#define SCSI_SENSEQ_SPARE_DELETED 0x09
850#define SCSI_SENSEQ_VOLUME_SET_MODIFIED 0x0A
851#define SCSI_SENSEQ_VOLUME_SET_DELETED 0x0B
852#define SCSI_SENSEQ_VOLUME_SET_DEASSIGNED 0x0C
853#define SCSI_SENSEQ_VOLUME_SET_REASSIGNED 0x0D
854#define SCSI_SENSEQ_REPORTED_LUNS_DATA_CHANGED 0x0E
855#define SCSI_SENSEQ_ECHO_BUFFER_OVERWRITTEN 0x0F
856#define SCSI_SENSEQ_MEDIUM_LOADABLE 0x10
857#define SCSI_SENSEQ_MEDIUM_AUXILIARY_MEMORY_ACCESSIBLE 0x11
858
859// SCSI_ADSENSE_INTERNAL_TARGET_FAILURE (0x44)
860
861#define SCSI_SENSEQ_INTERNAL_TARGET_FAILURE 0x00
862#define SCSI_SENSEQ_PRESISTENT_RESERVATION_INFORMATION_LOST 0x01
863#define SCSI_SENSEQ_ATA_DEVICE_FAILED_SET_FEATURES 0x71
864
865// SCSI_ADSENSE_DATA_TRANSFER_ERROR (0x4b)
866
867#define SCSI_SENSEQ_INITIATOR_RESPONSE_TIMEOUT 0x06
868
869// SCSI_ADSENSE_RESOURCE_FAILURE (0x55)
870
871#define SCSI_SENSEQ_SYSTEM_RESOURCE_FAILURE 0x00
872#define SCSI_SENSEQ_SYSTEM_BUFFER_FULL 0x01
873#define SCSI_SENSEQ_INSUFFICIENT_RESERVATION_RESOURCES 0x02
874#define SCSI_SENSEQ_INSUFFICIENT_RESOURCES 0x03
875
876// SCSI_ADSENSE_OPERATOR_REQUEST (0x5a)
877
878#define SCSI_SENSEQ_STATE_CHANGE_INPUT 0x00
879#define SCSI_SENSEQ_MEDIUM_REMOVAL 0x01
880#define SCSI_SENSEQ_WRITE_PROTECT_ENABLE 0x02
881#define SCSI_SENSEQ_WRITE_PROTECT_DISABLE 0x03
882
883// SCSI_ADSENSE_FAILURE_PREDICTION_THRESHOLD_EXCEEDED (0x5d)
884
885#define SCSI_SENSEQ_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x00
886#define SCSI_SENSEQ_MEDIA_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x01
887#define SCSI_SENSEQ_LUN_FAILURE_PREDICTION_THRESHOLD_EXCEEDED 0x02
888#define SCSI_SENSEQ_SPARE_AREA_EXHAUSTION_PREDICTION_THRESHOLD_EXCEEDED 0x03
889#define SCSI_SENSEQ_GENERAL_HARD_DRIVE_FAILURE 0x10
890#define SCSI_SENSEQ_DRIVE_ERROR_RATE_TOO_HIGH 0x11
891#define SCSI_SENSEQ_DATA_ERROR_RATE_TOO_HIGH 0x12
892#define SCSI_SENSEQ_SEEK_ERROR_RATE_TOO_HIGH 0x13
893#define SCSI_SENSEQ_TOO_MANY_BLOCK_REASSIGNS 0x14
894#define SCSI_SENSEQ_ACCESS_TIMES_TOO_HIGH 0x15
895#define SCSI_SENSEQ_START_UNIT_TIMES_TOO_HIGH 0x16
896#define SCSI_SENSEQ_CHANNEL_PARAMETRICS 0x17
897#define SCSI_SENSEQ_CONTROLLER_DETECTED 0x18
898#define SCSI_SENSEQ_THROUGHPUT_PERFORMANCE 0x19
899#define SCSI_SENSEQ_SEEK_TIME_PERFORMANCE 0x1A
900#define SCSI_SENSEQ_SPIN_UP_RETRY_COUNT 0x1B
901#define SCSI_SENSEQ_DRIVE_CALIBRATION_RETRY_COUNT 0x1C
902#define SCSI_SENSEQ_DATA_CHANNEL_DATA_ERROR_RATE_TOO_HIGH 0x32
903#define SCSI_SENSEQ_SERVO_DATA_ERROR_RATE_TOO_HIGH 0x42
904#define SCSI_SENSEQ_SERVER_SEEK_ERROR_RATE_TOO_HIGH 0x43
905#define SCSI_SENSEQ_FAILURE_PREDICTION_THRESHOLD_EXCEEDED_FALSE 0xFF
906
907// SCSI_ADSENSE_COPY_PROTECTION_FAILURE (0x6f)
908
909#define SCSI_SENSEQ_AUTHENTICATION_FAILURE 0x00
910#define SCSI_SENSEQ_KEY_NOT_PRESENT 0x01
911#define SCSI_SENSEQ_KEY_NOT_ESTABLISHED 0x02
912#define SCSI_SENSEQ_READ_OF_SCRAMBLED_SECTOR_WITHOUT_AUTHENTICATION 0x03
913#define SCSI_SENSEQ_MEDIA_CODE_MISMATCHED_TO_LOGICAL_UNIT 0x04
914#define SCSI_SENSEQ_LOGICAL_UNIT_RESET_COUNT_ERROR 0x05
915
916// SCSI_ADSENSE_POWER_CALIBRATION_ERROR (0x73)
917
918#define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ALMOST_FULL 0x01
919#define SCSI_SENSEQ_POWER_CALIBRATION_AREA_FULL 0x02
920#define SCSI_SENSEQ_POWER_CALIBRATION_AREA_ERROR 0x03
921#define SCSI_SENSEQ_PMA_RMA_UPDATE_FAILURE 0x04
922#define SCSI_SENSEQ_PMA_RMA_IS_FULL 0x05
923#define SCSI_SENSEQ_PMA_RMA_ALMOST_FULL 0x06
924
925#define FILE_DEVICE_SCSI 0x0000001b
926
927#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011)
928#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012)
929#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013)
930
931/* SMART support in ATAPI */
932#define IOCTL_SCSI_MINIPORT_SMART_VERSION ((FILE_DEVICE_SCSI << 16) + 0x0500)
933#define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501)
934#define IOCTL_SCSI_MINIPORT_READ_SMART_ATTRIBS ((FILE_DEVICE_SCSI << 16) + 0x0502)
935#define IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS ((FILE_DEVICE_SCSI << 16) + 0x0503)
936#define IOCTL_SCSI_MINIPORT_ENABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0504)
937#define IOCTL_SCSI_MINIPORT_DISABLE_SMART ((FILE_DEVICE_SCSI << 16) + 0x0505)
938#define IOCTL_SCSI_MINIPORT_RETURN_STATUS ((FILE_DEVICE_SCSI << 16) + 0x0506)
939#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTOSAVE ((FILE_DEVICE_SCSI << 16) + 0x0507)
940#define IOCTL_SCSI_MINIPORT_SAVE_ATTRIBUTE_VALUES ((FILE_DEVICE_SCSI << 16) + 0x0508)
941#define IOCTL_SCSI_MINIPORT_EXECUTE_OFFLINE_DIAGS ((FILE_DEVICE_SCSI << 16) + 0x0509)
942#define IOCTL_SCSI_MINIPORT_ENABLE_DISABLE_AUTO_OFFLINE ((FILE_DEVICE_SCSI << 16) + 0x050a)
943#define IOCTL_SCSI_MINIPORT_READ_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050b)
944#define IOCTL_SCSI_MINIPORT_WRITE_SMART_LOG ((FILE_DEVICE_SCSI << 16) + 0x050c)
945
946/* CLUSTER support */
947#define IOCTL_SCSI_MINIPORT_NOT_QUORUM_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0520)
948#define IOCTL_SCSI_MINIPORT_NOT_CLUSTER_CAPABLE ((FILE_DEVICE_SCSI << 16) + 0x0521)
949
950#define MODE_FD_SINGLE_SIDE 0x01
951#define MODE_FD_DOUBLE_SIDE 0x02
952#define MODE_FD_MAXIMUM_TYPE 0x1E
953#define MODE_DSP_FUA_SUPPORTED 0x10
954#define MODE_DSP_WRITE_PROTECT 0x80
955
956#define CDDA_CHANNEL_MUTED 0x0
957#define CDDA_CHANNEL_ZERO 0x1
958#define CDDA_CHANNEL_ONE 0x2
959#define CDDA_CHANNEL_TWO 0x4
960#define CDDA_CHANNEL_THREE 0x8
961
962#define CDVD_LMT_CADDY 0
963#define CDVD_LMT_TRAY 1
964#define CDVD_LMT_POPUP 2
965#define CDVD_LMT_RESERVED1 3
966#define CDVD_LMT_CHANGER_INDIVIDUAL 4
967#define CDVD_LMT_CHANGER_CARTRIDGE 5
968#define CDVD_LMT_RESERVED2 6
969#define CDVD_LMT_RESERVED3 7
970
971#define LOADING_MECHANISM_CADDY 0x00
972#define LOADING_MECHANISM_TRAY 0x01
973#define LOADING_MECHANISM_POPUP 0x02
974#define LOADING_MECHANISM_INDIVIDUAL_CHANGER 0x04
975#define LOADING_MECHANISM_CARTRIDGE_CHANGER 0x05
976
977#define MODE_BLOCK_DESC_LENGTH 8
978#define MODE_HEADER_LENGTH 4
979#define MODE_HEADER_LENGTH10 8
980
981/* CDROM audio control */
982#define CDB_AUDIO_PAUSE 0x00
983#define CDB_AUDIO_RESUME 0x01
984#define CDB_DEVICE_START 0x11
985#define CDB_DEVICE_STOP 0x10
986#define CDB_EJECT_MEDIA 0x10
987#define CDB_LOAD_MEDIA 0x01
988#define CDB_SUBCHANNEL_HEADER 0x00
989#define CDB_SUBCHANNEL_BLOCK 0x01
990
991#define CDROM_AUDIO_CONTROL_PAGE 0x0E
992#define MODE_SELECT_IMMEDIATE 0x04
993#define MODE_SELECT_PFBIT 0x10
994
995#define CDB_USE_MSF 0x01
996
997/* Multisession CDROMs */
998#define GET_LAST_SESSION 0x01
999#define GET_SESSION_DATA 0x02
1000
1001typedef union _CDB {
1013 struct _CDB6READWRITE {
1020 UCHAR Control;
1022 struct _CDB6INQUIRY {
1024 UCHAR Reserved1:5;
1029 UCHAR Control;
1051 struct _CDB6FORMAT {
1060 struct _CDB10 {
1063 UCHAR Reserved1:2;
1074 UCHAR Control;
1075 } CDB10, *PCDB10;
1076 struct _CDB12 {
1087 } CDB12, *PCDB12;
1088 struct _CDB16 {
1099 struct _PAUSE_RESUME {
1101 UCHAR Reserved1:5;
1103 UCHAR Reserved2[6];
1104 UCHAR Action;
1105 UCHAR Control;
1107 struct _READ_TOC {
1109 UCHAR Reserved0:1;
1110 UCHAR Msf:1;
1111 UCHAR Reserved1:3;
1114 UCHAR Reserved2:4;
1118 UCHAR Control:6;
1119 UCHAR Format:2;
1120 } READ_TOC, *PREAD_TOC;
1178 struct _READ_BUFFER_CAPACITY {
1181 UCHAR Reserved1:7;
1186 struct _SEND_CUE_SHEET {
1190 UCHAR Control;
1192 struct _READ_HEADER {
1194 UCHAR Reserved1:1;
1195 UCHAR Msf:1;
1196 UCHAR Reserved2:3;
1197 UCHAR Lun:3;
1201 UCHAR Control;
1212 struct _PLAY_AUDIO_MSF {
1214 UCHAR Reserved1:5;
1223 UCHAR Control;
1225 struct _BLANK_MEDIA {
1227 UCHAR BlankType:3;
1228 UCHAR Reserved1:1;
1230 UCHAR Reserved2:3;
1235 struct _PLAY_CD {
1241 _ANONYMOUS_UNION union {
1242 struct _LBA {
1243 UCHAR StartingBlockAddress[4];
1244 UCHAR PlayLength[4];
1246 struct _MSF {
1261 UCHAR Reserved2:3;
1265 struct _SCAN_CD {
1285 struct _SUBCHANNEL {
1287 UCHAR Reserved0:1;
1288 UCHAR Msf:1;
1289 UCHAR Reserved1:3;
1291 UCHAR Reserved2:6;
1292 UCHAR SubQ:1;
1293 UCHAR Reserved3:1;
1294 UCHAR Format;
1295 UCHAR Reserved4[2];
1298 UCHAR Control;
1300 struct _READ_CD {
1303 UCHAR Reserved0:1;
1309 UCHAR ErrorFlags:2;
1310 UCHAR IncludeEDC:1;
1312 UCHAR HeaderCode:2;
1315 UCHAR Reserved3:5;
1316 UCHAR Control;
1317 } READ_CD, *PREAD_CD;
1318 struct _READ_CD_MSF {
1321 UCHAR Reserved1:1;
1332 UCHAR Reserved4:1;
1333 UCHAR ErrorFlags:2;
1334 UCHAR IncludeEDC:1;
1336 UCHAR HeaderCode:2;
1340 UCHAR Control;
1342 struct _PLXTR_READ_CDDA {
1344 UCHAR Reserved0:5;
1354 UCHAR SubCode;
1355 UCHAR Control;
1357 struct _NEC_READ_CDDA {
1367 UCHAR Control;
1369#if (NTDDI_VERSION >= NTDDI_WIN8)
1370 struct _MODE_SENSE {
1372 UCHAR Reserved1:3;
1373 UCHAR Dbd:1;
1374 UCHAR Reserved2:4;
1375 UCHAR PageCode:6;
1376 UCHAR Pc:2;
1379 UCHAR Control;
1380 } MODE_SENSE;
1381 struct _MODE_SENSE10 {
1383 UCHAR Reserved1:3;
1384 UCHAR Dbd:1;
1386 UCHAR Reserved2:3;
1387 UCHAR PageCode:6;
1388 UCHAR Pc:2;
1390 UCHAR Reserved3[3];
1392 UCHAR Control;
1393 } MODE_SENSE10;
1394#else
1395 struct _MODE_SENSE {
1397 UCHAR Reserved1:3;
1398 UCHAR Dbd:1;
1399 UCHAR Reserved2:1;
1401 UCHAR PageCode:6;
1402 UCHAR Pc:2;
1405 UCHAR Control;
1407 struct _MODE_SENSE10 {
1409 UCHAR Reserved1:3;
1410 UCHAR Dbd:1;
1411 UCHAR Reserved2:1;
1413 UCHAR PageCode:6;
1414 UCHAR Pc:2;
1415 UCHAR Reserved3[4];
1417 UCHAR Control;
1419#endif
1420 struct _MODE_SELECT {
1422 UCHAR SPBit:1;
1423 UCHAR Reserved1:3;
1424 UCHAR PFBit:1;
1426 UCHAR Reserved2[2];
1428 UCHAR Control;
1430 struct _MODE_SELECT10 {
1432 UCHAR SPBit:1;
1433 UCHAR Reserved1:3;
1434 UCHAR PFBit:1;
1436 UCHAR Reserved2[5];
1438 UCHAR Control;
1440 struct _LOCATE {
1453 struct _LOGSENSE {
1455 UCHAR SPBit:1;
1456 UCHAR PPCBit:1;
1457 UCHAR Reserved1:3;
1459 UCHAR PageCode:6;
1460 UCHAR PCBit:2;
1465 UCHAR Control;
1466 } LOGSENSE, *PLOGSENSE;
1467 struct _LOGSELECT {
1479 struct _PRINT {
1486 struct _SEEK {
1488 UCHAR Reserved1:5;
1491 UCHAR Reserved2[3];
1492 UCHAR Control;
1493 } SEEK, *PSEEK;
1494 struct _ERASE {
1496 UCHAR Long:1;
1497 UCHAR Immediate:1;
1498 UCHAR Reserved1:3;
1500 UCHAR Reserved2[3];
1501 UCHAR Control;
1502 } ERASE, *PERASE;
1503 struct _START_STOP {
1505 UCHAR Immediate:1;
1506 UCHAR Reserved1:4;
1508 UCHAR Reserved2[2];
1509 UCHAR Start:1;
1510 UCHAR LoadEject:1;
1511 UCHAR Reserved3:6;
1512 UCHAR Control;
1514 struct _MEDIA_REMOVAL {
1516 UCHAR Reserved1:5;
1518 UCHAR Reserved2[2];
1519 UCHAR Prevent:1;
1522 UCHAR Control;
1543 struct _PARTITION {
1568 union {
1570 struct {
1573 UCHAR Reserved:4;
1692 struct _LOAD_UNLOAD {
1694 UCHAR Immediate:1;
1695 UCHAR Reserved1:4;
1697 UCHAR Reserved2[2];
1698 UCHAR Start:1;
1699 UCHAR LoadEject:1;
1700 UCHAR Reserved3:6;
1701 UCHAR Reserved4[3];
1702 UCHAR Slot;
1703 UCHAR Reserved5[3];
1705 struct _MECH_STATUS {
1711 UCHAR Reserved2[1];
1748 struct _READ_DVD_STRUCTURE {
1750 UCHAR Reserved1:5;
1751 UCHAR Lun:3;
1754 UCHAR Format;
1756 UCHAR Reserved3:6;
1757 UCHAR AGID:2;
1758 UCHAR Control;
1760 struct _SET_STREAMING {
1764 UCHAR Control;
1765 } SET_STREAMING;
1776 struct _SEND_KEY {
1778 UCHAR Reserved1:5;
1779 UCHAR Lun:3;
1780 UCHAR Reserved2[6];
1782 UCHAR KeyFormat:6;
1783 UCHAR AGID:2;
1784 UCHAR Control;
1785 } SEND_KEY, *PSEND_KEY;
1786 struct _REPORT_KEY {
1788 UCHAR Reserved1:5;
1789 UCHAR Lun:3;
1791 UCHAR Reserved2[2];
1793 UCHAR KeyFormat:6;
1794 UCHAR AGID:2;
1795 UCHAR Control;
1797 struct _SET_READ_AHEAD {
1799 UCHAR Reserved1:5;
1801 UCHAR TriggerLBA[4];
1804 UCHAR Control;
1814 struct _REPORT_LUNS {
1816 UCHAR Reserved1[5];
1818 UCHAR Reserved2[1];
1819 UCHAR Control;
1839 struct _GET_CONFIGURATION {
1846 UCHAR Control;
1848 struct _SET_CD_SPEED {
1850 _ANONYMOUS_UNION union {
1852 _ANONYMOUS_STRUCT struct {
1857 UCHAR ReadSpeed[2];
1858 UCHAR WriteSpeed[2];
1862 struct _READ12 {
1875 struct _WRITE12 {
1910 struct _READ16 {
1922 struct _WRITE16 {
1934 struct _VERIFY16 {
2014 struct _UNMAP {
2036
2045
2054
2061
2070
2074 _ANONYMOUS_UNION union {
2077 _ANONYMOUS_STRUCT struct {
2086
2095
2102
2108
2109typedef struct _CDVD_KEY_HEADER {
2110 UCHAR DataLength[2];
2111 UCHAR Reserved[2];
2114
2115typedef struct _CDVD_REPORT_AGID_DATA {
2116 UCHAR Reserved1[3];
2117 UCHAR Reserved2:6;
2118 UCHAR AGID:2;
2120
2121typedef struct _CDVD_CHALLENGE_KEY_DATA {
2123 UCHAR Reserved[2];
2125
2126typedef struct _CDVD_KEY_DATA {
2127 UCHAR Key[5];
2128 UCHAR Reserved[3];
2130
2131typedef struct _CDVD_REPORT_ASF_DATA {
2132 UCHAR Reserved1[3];
2133 UCHAR Success:1;
2134 UCHAR Reserved2:7;
2136
2137typedef struct _CDVD_TITLE_KEY_HEADER {
2138 UCHAR DataLength[2];
2139 UCHAR Reserved1[1];
2140 UCHAR Reserved2:3;
2141 UCHAR CGMS:2;
2142 UCHAR CP_SEC:1;
2143 UCHAR CPM:1;
2144 UCHAR Zero:1;
2147
2148typedef struct _FORMAT_DESCRIPTOR {
2154
2155typedef struct _FORMAT_LIST_HEADER {
2160 UCHAR IP:1;
2161 UCHAR STPF:1;
2162 UCHAR DCRT:1;
2163 UCHAR DPRY:1;
2164 UCHAR FOV:1;
2168
2176
2182
2183typedef struct _OPC_TABLE_ENTRY {
2187
2188typedef struct _DISC_INFORMATION {
2216
2217typedef struct _DISK_INFORMATION {
2241
2242typedef struct _DATA_BLOCK_HEADER {
2245 _ANONYMOUS_UNION union {
2247 struct {
2255
2256typedef struct _TRACK_INFORMATION {
2277
2278typedef struct _TRACK_INFORMATION2 {
2305
2306typedef struct _TRACK_INFORMATION3 {
2334
2349
2350typedef struct _SCSI_EXTENDED_MESSAGE {
2354 union _EXTENDED_ARGUMENTS {
2355 struct {
2356 UCHAR Modifier[4];
2358 struct {
2362 struct{
2363 UCHAR Width;
2367
2368#ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */
2369#define _INQUIRYDATA_DEFINED
2370
2371#define INQUIRYDATABUFFERSIZE 36
2372
2373#if (NTDDI_VERSION < NTDDI_WINXP)
2374typedef struct _INQUIRYDATA {
2375 UCHAR DeviceType:5;
2381 UCHAR HiSupport:1;
2382 UCHAR NormACA:1;
2383 UCHAR ReservedBit:1;
2384 UCHAR AERC:1;
2386 UCHAR Reserved[2];
2387 UCHAR SoftReset:1;
2389 UCHAR Reserved2:1;
2392 UCHAR Wide16Bit:1;
2393 UCHAR Wide32Bit:1;
2395 UCHAR VendorId[8];
2396 UCHAR ProductId[16];
2399 UCHAR Reserved3[40];
2401#else
2402typedef struct _INQUIRYDATA {
2403 UCHAR DeviceType:5;
2407 _ANONYMOUS_UNION union {
2409 _ANONYMOUS_STRUCT struct {
2412 UCHAR ISOVersion:2;
2416 UCHAR HiSupport:1;
2417 UCHAR NormACA:1;
2419 UCHAR AERC:1;
2422 UCHAR Addr16:1;
2423 UCHAR Addr32:1;
2424 UCHAR AckReqQ:1;
2426 UCHAR MultiPort:1;
2430 UCHAR SoftReset:1;
2435 UCHAR Wide16Bit:1;
2436 UCHAR Wide32Bit:1;
2438 UCHAR VendorId[8];
2439 UCHAR ProductId[16];
2442 UCHAR Reserved3[40];
2444#endif /* (NTDDI_VERSION < NTDDI_WINXP) */
2445
2446#endif /* _INQUIRYDATA_DEFINED */
2447
2448#define VPD_MAX_BUFFER_SIZE 0xff
2449
2450#define VPD_SUPPORTED_PAGES 0x00
2451#define VPD_SERIAL_NUMBER 0x80
2452#define VPD_DEVICE_IDENTIFIERS 0x83
2453#define VPD_MEDIA_SERIAL_NUMBER 0x84
2454#define VPD_SOFTWARE_INTERFACE_IDENTIFIERS 0x84
2455#define VPD_NETWORK_MANAGEMENT_ADDRESSES 0x85
2456#define VPD_EXTENDED_INQUIRY_DATA 0x86
2457#define VPD_MODE_PAGE_POLICY 0x87
2458#define VPD_SCSI_PORTS 0x88
2459#define VPD_ATA_INFORMATION 0x89
2460
2461#define VPD_THIRD_PARTY_COPY 0x8F
2462#define VPD_BLOCK_LIMITS 0xB0
2463#define VPD_BLOCK_DEVICE_CHARACTERISTICS 0xB1
2464#define VPD_LOGICAL_BLOCK_PROVISIONING 0xB2
2465#define VPD_ZONED_BLOCK_DEVICE_CHARACTERISTICS 0xB6
2466
2475
2484
2485typedef enum _VPD_CODE_SET {
2489 VpdCodeSetUTF8 = 3
2491
2492typedef enum _VPD_ASSOCIATION {
2499
2511
2522
2531
2546
2547#if (NTDDI_VERSION >= NTDDI_WIN8)
2553#if !defined(__midl)
2555#endif
2557
2568
2569#define BLOCK_DEVICE_TOKEN_LIMITS_DESCRIPTOR_TYPE_WINDOWS 0x00
2570
2571#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
2572
2578 union {
2579 struct {
2589 union {
2590 struct {
2596 };
2598 };
2600 };
2601#if !defined(__midl)
2603#endif
2604 };
2606
2607#define ZONED_CAPABILITIES_NOT_REPORTED 0x0
2608#define ZONED_CAPABILITIES_HOST_AWARE 0x1
2609#define ZONED_CAPABILITIES_DEVICE_MANAGED 0x2
2610
2633
2634#define PROVISIONING_TYPE_UNKNOWN 0x0
2635#define PROVISIONING_TYPE_RESOURCE 0x1
2636#define PROVISIONING_TYPE_THIN 0x2
2637
2654#if !defined(__midl)
2656#endif
2658
2672
2681
2687
2696
2702
2703typedef struct _PRO_PARAMETER_LIST {
2712
2713typedef struct _SENSE_DATA {
2714 UCHAR ErrorCode:7;
2715 UCHAR Valid:1;
2717 UCHAR SenseKey:4;
2718 UCHAR Reserved:1;
2720 UCHAR EndOfMedia:1;
2721 UCHAR FileMark:1;
2722 UCHAR Information[4];
2730
2735
2743
2751
2768
2770
2782
2783typedef union _SENSE_DATA_EX {
2787
2788/* Read Capacity Data. Returned in Big Endian format */
2789typedef struct _READ_CAPACITY_DATA {
2793
2798
2799#define RC_BASIS_LAST_LBA_NOT_SEQUENTIAL_WRITE_REQUIRED_ZONES 0x0
2800#define RC_BASIS_LAST_LBA_ON_LOGICAL_UNIT 0x1
2801
2802typedef struct _READ_CAPACITY16_DATA {
2808 UCHAR Reserved:2;
2817
2825
2831
2832#define LBA_STATUS_MAPPED 0x0
2833#define LBA_STATUS_DEALLOCATED 0x1
2834#define LBA_STATUS_ANCHORED 0x2
2835
2836/* Read Block Limits Data. Returned in Big Endian format */
2837typedef struct _READ_BLOCK_LIMITS {
2842
2851
2852typedef struct _MODE_PARAMETER_HEADER {
2858
2859typedef struct _MODE_PARAMETER_HEADER10 {
2863 UCHAR Reserved[2];
2866
2867typedef struct _MODE_PARAMETER_BLOCK {
2871 UCHAR BlockLength[3];
2873
2888
2889typedef struct _MODE_CACHING_PAGE {
2890 UCHAR PageCode:6;
2897 UCHAR Reserved2:5;
2905
2934
2935typedef struct _MODE_MRW_PAGE {
2936 UCHAR PageCode:6;
2942 UCHAR Reserved2:7;
2943 UCHAR Reserved3[4];
2945
2979
2980typedef struct _MODE_FORMAT_PAGE {
3001
3020
3021typedef struct _MODE_READ_WRITE_RECOVERY_PAGE {
3022 UCHAR PageCode:6;
3023 UCHAR Reserved1:1;
3024 UCHAR PSBit:1;
3026 UCHAR DCRBit:1;
3027 UCHAR DTEBit:1;
3028 UCHAR PERBit:1;
3029 UCHAR EERBit:1;
3030 UCHAR RCBit:1;
3031 UCHAR TBBit:1;
3032 UCHAR ARRE:1;
3033 UCHAR AWRE:1;
3035 UCHAR Reserved4[4];
3037 UCHAR Reserved5[3];
3039
3040typedef struct _MODE_READ_RECOVERY_PAGE {
3041 UCHAR PageCode:6;
3042 UCHAR Reserved1:1;
3043 UCHAR PSBit:1;
3045 UCHAR DCRBit:1;
3046 UCHAR DTEBit:1;
3047 UCHAR PERBit:1;
3048 UCHAR Reserved2:1;
3049 UCHAR RCBit:1;
3050 UCHAR TBBit:1;
3051 UCHAR Reserved3:2;
3053 UCHAR Reserved4[4];
3055
3061 _ANONYMOUS_UNION union {
3063 _ANONYMOUS_STRUCT struct {
3077
3090
3091typedef struct _CDDA_OUTPUT_PORT {
3096
3110
3128
3142
3191 _ANONYMOUS_UNION union {
3197 _ANONYMOUS_UNION union {
3208 _ANONYMOUS_UNION union {
3212 _ANONYMOUS_UNION union {
3216 _ANONYMOUS_UNION union {
3221
3222typedef struct _LUN_LIST {
3225 UCHAR Lun[0][8];
3227
3228typedef struct _MODE_PARM_READ_WRITE {
3232
3233typedef struct _PORT_OUTPUT {
3237
3238typedef struct _AUDIO_OUTPUT {
3247
3248/* Atapi 2.5 changers */
3252 UCHAR Fault:1;
3253 UCHAR Reserved:5;
3259
3260typedef struct _SLOT_TABLE_INFORMATION {
3262 UCHAR Reserved:6;
3264 UCHAR Reserved2[3];
3266
3267typedef struct _MECHANICAL_STATUS {
3271
3272/* Tape definitions */
3273typedef struct _TAPE_POSITION_DATA {
3287
3288#include <pshpack1.h>
3294
3295typedef struct _UNMAP_LIST_HEADER {
3299#if !defined(__midl)
3301#endif
3303#include <poppack.h>
3304
3305#define LOG_PAGE_CODE_SUPPORTED_LOG_PAGES 0x00
3306#define LOG_PAGE_CODE_WRITE_ERROR_COUNTERS 0x02
3307#define LOG_PAGE_CODE_READ_ERROR_COUNTERS 0x03
3308#define LOG_PAGE_CODE_LOGICAL_BLOCK_PROVISIONING 0x0C
3309#define LOG_PAGE_CODE_TEMPERATURE 0x0D
3310#define LOG_PAGE_CODE_STARTSTOP_CYCLE_COUNTERS 0x0E
3311#define LOG_PAGE_CODE_SELFTEST_RESULTS 0x10
3312#define LOG_PAGE_CODE_SOLID_STATE_MEDIA 0x11
3313#define LOG_PAGE_CODE_BACKGROUND_SCAN_RESULTS 0x15
3314#define LOG_PAGE_CODE_INFORMATIONAL_EXCEPTIONS 0x2F
3315
3316
3317#include <pshpack1.h>
3320 union {
3322 struct {
3329 };
3330 };
3333
3334typedef struct _LOG_PARAMETER {
3336 union {
3337#if !defined(__midl)
3339#endif
3340 struct _THRESHOLD_RESOURCE_COUNT {
3346 struct _TEMPERATURE {
3350 struct _DATE_OF_MANUFACTURE {
3351 UCHAR Year[4];
3352 UCHAR Week[2];
3354 struct _SELF_TEST_RESULTS {
3356 UCHAR Reserved1 : 1;
3359 UCHAR PowerOnHours[2];
3360 UCHAR AddressOfFirstFailure[8];
3362 UCHAR Reserved2 : 4;
3367
3368 struct _SOLID_STATE_MEDIA {
3369 UCHAR Reserved[3];
3372
3373 struct _BACKGROUND_SCAN_STATUS {
3374 UCHAR PowerOnMinutes[4];
3377 UCHAR ScansPerformed[2];
3378 UCHAR ScanProgress[2];
3379 UCHAR MediumScansPerformed[2];
3381
3382 struct _INFORMATIONAL_EXCEPTIONS {
3386 UCHAR VendorSpecific[ANYSIZE_ARRAY];
3388 };
3390
3391typedef struct _LOG_PAGE {
3397#if !defined(__midl)
3399#endif
3400
3402
3403#include <poppack.h>
3404
3405#define LOG_PAGE_LBP_PARAMETER_CODE_AVAILABLE 0x1
3406#define LOG_PAGE_LBP_PARAMETER_CODE_USED 0x2
3407
3408#define LOG_PAGE_LBP_RESOURCE_SCOPE_NOT_REPORTED 0x0
3409#define LOG_PAGE_LBP_RESOURCE_SCOPE_DEDICATED_TO_LUN 0x1
3410#define LOG_PAGE_LBP_RESOURCE_SCOPE_NOT_DEDICATED_TO_LUN 0x2
3411
3419
3426#if !defined(__midl)
3428#endif
3430
3431typedef struct _MODE_CONTROL_PAGE {
3461
3462/* This structure is used to convert little endian ULONGs
3463 to SCSI CDB big endians values. */
3464typedef union _EIGHT_BYTE {
3465 _ANONYMOUS_STRUCT struct {
3477
3478typedef union _FOUR_BYTE {
3479 _ANONYMOUS_STRUCT struct {
3480 UCHAR Byte0;
3481 UCHAR Byte1;
3482 UCHAR Byte2;
3483 UCHAR Byte3;
3487
3488typedef union _TWO_BYTE {
3489 _ANONYMOUS_STRUCT struct {
3495
3496/* Byte reversing macro for converting between
3497 big- and little-endian formats */
3498#define REVERSE_BYTES_QUAD(Destination, Source) { \
3499 PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \
3500 PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \
3501 _val1->Byte7 = _val2->Byte0; \
3502 _val1->Byte6 = _val2->Byte1; \
3503 _val1->Byte5 = _val2->Byte2; \
3504 _val1->Byte4 = _val2->Byte3; \
3505 _val1->Byte3 = _val2->Byte4; \
3506 _val1->Byte2 = _val2->Byte5; \
3507 _val1->Byte1 = _val2->Byte6; \
3508 _val1->Byte0 = _val2->Byte7; \
3509}
3510
3511#define REVERSE_BYTES(Destination, Source) { \
3512 PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \
3513 PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \
3514 _val1->Byte3 = _val2->Byte0; \
3515 _val1->Byte2 = _val2->Byte1; \
3516 _val1->Byte1 = _val2->Byte2; \
3517 _val1->Byte0 = _val2->Byte3; \
3518}
3519
3520#define REVERSE_BYTES_SHORT(Destination, Source) { \
3521 PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \
3522 PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \
3523 _val1->Byte1 = _val2->Byte0; \
3524 _val1->Byte0 = _val2->Byte1; \
3525}
3526
3527#define REVERSE_SHORT(Short) { \
3528 UCHAR _val; \
3529 PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \
3530 _val = _val2->Byte0; \
3531 _val2->Byte0 = _val2->Byte1; \
3532 _val2->Byte1 = _val; \
3533}
3534
3535#define REVERSE_LONG(Long) { \
3536 UCHAR _val; \
3537 PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \
3538 _val = _val2->Byte3; \
3539 _val2->Byte3 = _val2->Byte0; \
3540 _val2->Byte0 = _val; \
3541 _val = _val2->Byte2; \
3542 _val2->Byte2 = _val2->Byte1; \
3543 _val2->Byte1 = _val; \
3544}
3545
3546#define WHICH_BIT(Data, Bit) { \
3547 UCHAR _val; \
3548 for (_val = 0; _val < 32; _val++) { \
3549 if (((Data) >> _val) == 1) { \
3550 break; \
3551 } \
3552 } \
3553 ASSERT(_val != 32); \
3554 (Bit) = _val; \
3555}
3556
3557#if defined(_WIN64)
3558#define STOR_ADDRESS_ALIGN DECLSPEC_ALIGN(8)
3559#else
3560#define STOR_ADDRESS_ALIGN
3561#endif
3562
3567 _Field_size_bytes_(AddressLength) UCHAR AddressData[ANYSIZE_ARRAY];
3569
3570#define STOR_ADDRESS_TYPE_UNKNOWN 0x0
3571#define STOR_ADDRESS_TYPE_BTL8 0x1
3572#define STOR_ADDRESS_TYPE_MAX 0xffff
3573
3574#define STOR_ADDR_BTL8_ADDRESS_LENGTH 4
3575
3578 USHORT Type;
3581 ULONG AddressLength;
3587
3588/* FIXME : This structure doesn't exist in the official header */
3626
3627#if (NTDDI_VERSION >= NTDDI_WIN8)
3628#include <pshpack1.h>
3629
3630#define BLOCK_DEVICE_TOKEN_SIZE 512
3631
3632typedef struct {
3633 UCHAR LogicalBlockAddress[8];
3634 UCHAR TransferLength[4];
3637
3638typedef struct {
3639 UCHAR PopulateTokenDataLength[2];
3643 UCHAR InactivityTimeout[4];
3645 UCHAR BlockDeviceRangeDescriptorListLength[2];
3646#if !defined(__midl)
3647 UCHAR BlockDeviceRangeDescriptor[ANYSIZE_ARRAY];
3648#endif
3650
3651typedef struct {
3652 UCHAR WriteUsingTokenDataLength[2];
3656 UCHAR BlockOffsetIntoToken[8];
3659 UCHAR BlockDeviceRangeDescriptorListLength[2];
3660#if !defined(__midl)
3661 UCHAR BlockDeviceRangeDescriptor[ANYSIZE_ARRAY];
3662#endif
3664
3665typedef struct {
3666 UCHAR AvailableData[4];
3671 UCHAR OperationCounter[2];
3672 UCHAR EstimatedStatusUpdateDelay[4];
3677 UCHAR TransferCount[8];
3678 UCHAR SegmentsProcessed[2];
3680#if !defined(__midl)
3682#endif
3684
3685typedef struct {
3686 UCHAR TokenDescriptorsLength[4];
3687#if !defined(__midl)
3688 UCHAR TokenDescriptor[ANYSIZE_ARRAY];
3689#endif
3691
3692typedef struct {
3696
3697typedef enum _OPERATION_STATUS {
3705
3716
3717#include <poppack.h>
3718#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
3719
3720// SCSI utility functions
3721
3722#define ScsiGetSenseErrorCode(SenseInfoBuffer) (((PUCHAR)(SenseInfoBuffer))[0] & 0x7f)
3723
3724#define ScsiGetSenseDescriptorLength(DescriptorBuffer) \
3725 (sizeof(SCSI_SENSE_DESCRIPTOR_HEADER) + ((PSCSI_SENSE_DESCRIPTOR_HEADER)(DescriptorBuffer))->AdditionalLength)
3726
3727#define IsFixedSenseDataFormat(SenseInfoBuffer) \
3728 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_CURRENT || \
3729 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_DEFERRED)
3730
3731#define IsDescriptorSenseDataFormat(SenseInfoBuffer) \
3732 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_CURRENT || \
3733 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_DEFERRED)
3734
3735#define IsSenseDataCurrentError(SenseInfoBuffer) \
3736 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_CURRENT || \
3737 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_CURRENT)
3738
3739#define IsSenseDataDeferredError(SenseInfoBuffer) \
3740 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_DEFERRED || \
3741 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_DEFERRED)
3742
3743#define IsSenseDataFormatValueValid(SenseInfoBuffer) \
3744 (IsFixedSenseDataFormat(SenseInfoBuffer) || IsDescriptorSenseDataFormat(SenseInfoBuffer))
3745
3746_Success_(return != FALSE)
3748BOOLEAN
3749ScsiGetTotalSenseByteCountIndicated(
3753{
3757
3759 {
3760
3761 return FALSE;
3762 }
3763
3765
3767 {
3768
3771 {
3772
3774 RTL_SIZEOF_THROUGH_FIELD(FIXED_SENSE_DATA, AdditionalSenseLength);
3775
3777
3778 succeed = TRUE;
3779 }
3780 }
3781
3782 return succeed;
3783}
3784
3785_Success_(return != FALSE)
3787BOOLEAN
3788ScsiGetFixedSenseKeyAndCodes(
3794{
3798
3800 {
3801 return FALSE;
3802 }
3803
3804 if (RTL_CONTAINS_FIELD(fixedSenseData, SenseInfoBufferLength, AdditionalSenseLength))
3805 {
3806
3807 dataLength = fixedSenseData->AdditionalSenseLength +
3808 RTL_SIZEOF_THROUGH_FIELD(FIXED_SENSE_DATA, AdditionalSenseLength);
3809
3811 {
3813 }
3814
3815 if (SenseKey != NULL)
3816 {
3817 *SenseKey = fixedSenseData->SenseKey;
3818 }
3819
3821 {
3823 ? fixedSenseData->AdditionalSenseCode
3824 : 0;
3825 }
3826
3828 {
3831 ? fixedSenseData->AdditionalSenseCodeQualifier
3832 : 0;
3833 }
3834
3835 succeed = TRUE;
3836 }
3837
3838 return succeed;
3839}
3840
3841_Success_(return != FALSE)
3843BOOLEAN
3844ScsiGetDescriptorSenseKeyAndCodes(
3850{
3853
3855 {
3856 return FALSE;
3857 }
3859 {
3860
3861 if (SenseKey)
3862 {
3863 *SenseKey = descriptorSenseData->SenseKey;
3864 }
3865
3867 {
3868 *AdditionalSenseCode = descriptorSenseData->AdditionalSenseCode;
3869 }
3870
3872 {
3873 *AdditionalSenseCodeQualifier = descriptorSenseData->AdditionalSenseCodeQualifier;
3874 }
3875
3876 succeed = TRUE;
3877 }
3878
3879 return succeed;
3880}
3881
3883
3884#define SCSI_SENSE_OPTIONS_NONE ((SCSI_SENSE_OPTIONS)0x00000000)
3885#define SCSI_SENSE_OPTIONS_FIXED_FORMAT_IF_UNKNOWN_FORMAT_INDICATED ((SCSI_SENSE_OPTIONS)0x00000001)
3886
3887_Success_(return != FALSE)
3889BOOLEAN
3890ScsiGetSenseKeyAndCodes(
3897{
3899
3901 {
3902 return FALSE;
3903 }
3904
3906 {
3907 succeed = ScsiGetDescriptorSenseKeyAndCodes(SenseInfoBuffer, SenseInfoBufferLength, SenseKey,
3909 }
3910 else
3911 {
3914 {
3915
3916 succeed = ScsiGetFixedSenseKeyAndCodes(SenseInfoBuffer, SenseInfoBufferLength, SenseKey,
3918 }
3919 }
3920
3921 return succeed;
3922}
3923
3924_Success_(return != FALSE)
3926BOOLEAN
3927ScsiGetSenseDescriptor(
3932{
3935 UCHAR dataLength = 0;
3936
3939 {
3940 return FALSE;
3941 }
3942
3945
3947 {
3948 return FALSE;
3949 }
3950
3952
3954 {
3955 if (descriptorSenseData->AdditionalSenseLength <=
3957 RTL_SIZEOF_THROUGH_FIELD(DESCRIPTOR_SENSE_DATA, AdditionalSenseLength)))
3958 {
3959 dataLength = descriptorSenseData->AdditionalSenseLength +
3960 RTL_SIZEOF_THROUGH_FIELD(DESCRIPTOR_SENSE_DATA, AdditionalSenseLength);
3961
3963 {
3965 }
3966
3969
3970 if (*DescriptorBufferLength > 0)
3971 {
3972 *DescriptorBuffer = (PVOID)(descriptorSenseData->DescriptorBuffer);
3973 succeed = TRUE;
3974 }
3975 }
3976 }
3977
3978 return succeed;
3979}
3980
3981_Success_(return != FALSE)
3983BOOLEAN
3984ScsiValidateInformationSenseDescriptor(
3987{
3990
3993 {
3994 return FALSE;
3995 }
3996
3998
4000 {
4001 return FALSE;
4002 }
4003
4006
4007 if (descriptor->Header.AdditionalLength != additionalLength)
4008 {
4009 return FALSE;
4010 }
4011
4012 if (descriptor->Valid == 0)
4013 {
4014 return FALSE;
4015 }
4016
4017 return TRUE;
4018}
4019
4020_Success_(return != FALSE)
4022BOOLEAN
4023ScsiValidateBlockCommandSenseDescriptor(
4026{
4029
4030 if (DescriptorBuffer == NULL ||
4032 {
4033 return FALSE;
4034 }
4035
4037
4038 if (descriptor->Header.DescriptorType != SCSI_SENSE_DESCRIPTOR_TYPE_BLOCK_COMMAND)
4039 {
4040 return FALSE;
4041 }
4042
4045
4046 if (descriptor->Header.AdditionalLength != additionalLength)
4047 {
4048 return FALSE;
4049 }
4050
4051 return TRUE;
4052}
4053
4054_Success_(return != FALSE)
4056BOOLEAN
4057ScsiConvertToFixedSenseFormat(
4062{
4069
4072 {
4073 return FALSE;
4074 }
4075
4077 {
4079
4080 validSense =
4083 if (validSense)
4084 {
4085
4087 {
4089 }
4090 else
4091 {
4093 }
4095 sizeof(FIXED_SENSE_DATA) -
4096 RTL_SIZEOF_THROUGH_FIELD(FIXED_SENSE_DATA, AdditionalSenseLength);
4100
4101 succeed = TRUE;
4102 }
4103 }
4104
4105 return succeed;
4106}
4107
4108_Success_(return != FALSE)
4110BOOLEAN
4111ScsiGetNextSenseDescriptorByType(
4119{
4125
4126 if (Buffer == NULL || BufferLength == 0 || TypeList == NULL || TypeListCount == 0 ||
4128 {
4129 return FALSE;
4130 }
4131
4132 *OutBuffer = NULL;
4133 *OutBufferLength = 0;
4134 *OutType = 0;
4135
4138
4140 {
4141 for (i = 0; i < TypeListCount; i++)
4142 {
4143 type = TypeList[i];
4144
4145 if (((PSCSI_SENSE_DESCRIPTOR_HEADER)remainingBuffer)->DescriptorType == type)
4146 {
4149 *OutType = type;
4150 return TRUE;
4151 }
4152 }
4153
4155
4157 {
4160 }
4161 else
4162 {
4163 break;
4164 }
4165 }
4166
4167 return FALSE;
4168}
4169
4170#ifdef __cplusplus
4171}
4172#endif
4173
4174#endif /* _NTSCSI_ */
unsigned char BOOLEAN
Type
Definition: Type.h:7
@ Reserved2
Definition: bcd.h:202
@ Reserved1
Definition: bcd.h:201
Definition: bufpool.h:45
Definition: Header.h:9
@ TokenIdentifier
Definition: dfp.h:30
#define NULL
Definition: types.h:112
struct _CDVD_REPORT_ASF_DATA CDVD_REPORT_ASF_DATA
struct _INQUIRYDATA * PINQUIRYDATA
struct _READ_CAPACITY_DATA * PREAD_CAPACITY_DATA
struct _SLOT_TABLE_INFORMATION SLOT_TABLE_INFORMATION
struct _CDVD_KEY_HEADER * PCDVD_KEY_HEADER
struct _MODE_CACHING_PAGE * PMODE_CACHING_PAGE
union _CDB CDB
struct _MODE_PARM_READ_WRITE * PMODE_PARM_READ_WRITE_DATA
struct _READ_CAPACITY_DATA READ_CAPACITY_DATA
struct _SLOT_TABLE_INFORMATION * PSLOT_TABLE_INFORMATION
struct _MODE_READ_RECOVERY_PAGE * PMODE_READ_RECOVERY_PAGE
struct _MODE_READ_WRITE_RECOVERY_PAGE * PMODE_READ_WRITE_RECOVERY_PAGE
struct _FORMAT_LIST_HEADER * PFORMAT_LIST_HEADER
struct _MODE_READ_RECOVERY_PAGE MODE_READ_RECOVERY_PAGE
struct _MECHANICAL_STATUS * PMECHANICAL_STATUS
struct _CDVD_KEY_DATA * PCDVD_KEY_DATA
struct _MODE_PARAMETER_HEADER10 MODE_PARAMETER_HEADER10
struct _CDVD_TITLE_KEY_HEADER CDVD_TITLE_KEY_HEADER
struct _SENSE_DATA * PSENSE_DATA
struct _MODE_CACHING_PAGE MODE_CACHING_PAGE
struct _MODE_PARAMETER_HEADER MODE_PARAMETER_HEADER
struct _CDVD_CHALLENGE_KEY_DATA CDVD_CHALLENGE_KEY_DATA
struct _CDVD_REPORT_ASF_DATA * PCDVD_REPORT_ASF_DATA
struct _MECHANICAL_STATUS_INFORMATION_HEADER MECHANICAL_STATUS_INFORMATION_HEADER
struct _SCSI_EXTENDED_MESSAGE * PSCSI_EXTENDED_MESSAGE
struct _MODE_PARAMETER_HEADER10 * PMODE_PARAMETER_HEADER10
struct _SENSE_DATA SENSE_DATA
struct _CDVD_REPORT_AGID_DATA * PCDVD_REPORT_AGID_DATA
struct _FORMAT_LIST_HEADER FORMAT_LIST_HEADER
struct _MODE_PARM_READ_WRITE MODE_PARM_READ_WRITE_DATA
struct _CDVD_CHALLENGE_KEY_DATA * PCDVD_CHALLENGE_KEY_DATA
struct _MECHANICAL_STATUS MECHANICAL_STATUS
struct _READ_CAPACITY16_DATA READ_CAPACITY16_DATA
struct _CDVD_TITLE_KEY_HEADER * PCDVD_TITLE_KEY_HEADER
struct _SCSI_EXTENDED_MESSAGE SCSI_EXTENDED_MESSAGE
struct _MODE_READ_WRITE_RECOVERY_PAGE MODE_READ_WRITE_RECOVERY_PAGE
struct _INQUIRYDATA INQUIRYDATA
struct _READ_CAPACITY16_DATA * PREAD_CAPACITY16_DATA
union _CDB * PCDB
struct _MODE_PARAMETER_BLOCK * PMODE_PARAMETER_BLOCK
struct _CDVD_KEY_DATA CDVD_KEY_DATA
struct _CDVD_REPORT_AGID_DATA CDVD_REPORT_AGID_DATA
struct _MODE_PARAMETER_BLOCK MODE_PARAMETER_BLOCK
struct _MODE_PARAMETER_HEADER * PMODE_PARAMETER_HEADER
struct _MECHANICAL_STATUS_INFORMATION_HEADER * PMECHANICAL_STATUS_INFORMATION_HEADER
struct _CDVD_KEY_HEADER CDVD_KEY_HEADER
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
static ULONG ResourceCount
Definition: inbv.c:50
#define _In_reads_bytes_(s)
Definition: no_sal2.h:170
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Outptr_result_bytebuffer_(s)
Definition: no_sal2.h:288
#define _Out_opt_
Definition: no_sal2.h:214
#define _Success_(c)
Definition: no_sal2.h:84
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _Out_writes_bytes_(s)
Definition: no_sal2.h:178
#define RTL_CONTAINS_FIELD(Struct, Size, Field)
Definition: ntbasedef.h:687
#define RTL_SIZEOF_THROUGH_FIELD(type, field)
Definition: ntbasedef.h:684
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
#define _ANONYMOUS_UNION
Definition: pecoff.h:89
#define _ANONYMOUS_STRUCT
Definition: pecoff.h:115
unsigned short USHORT
Definition: pedump.c:61
@ Reserved3
Definition: sacdrv.h:1471
struct _DESCRIPTOR_SENSE_DATA * PDESCRIPTOR_SENSE_DATA
#define IsSenseDataCurrentError(SenseInfoBuffer)
Definition: scsi.h:3735
struct _NOTIFICATION_MULTI_HOST_STATUS NOTIFICATION_MULTI_HOST_STATUS
union _TWO_BYTE TWO_BYTE
struct _PORT_OUTPUT * PPORT_OUTPUT
struct _WINDOWS_BLOCK_DEVICE_TOKEN_LIMITS_DESCRIPTOR WINDOWS_BLOCK_DEVICE_TOKEN_LIMITS_DESCRIPTOR
struct _CDAUDIO_CONTROL_PAGE CDAUDIO_CONTROL_PAGE
struct _SCSI_SENSE_DESCRIPTOR_INFORMATION SCSI_SENSE_DESCRIPTOR_INFORMATION
struct _CDVD_FEATURE_SET_PAGE CDVD_FEATURE_SET_PAGE
struct _POWER_CONDITION_PAGE * PPOWER_CONDITION_PAGE
union _EIGHT_BYTE EIGHT_BYTE
struct _LOG_PAGE_LOGICAL_BLOCK_PROVISIONING * PLOG_PAGE_LOGICAL_BLOCK_PROVISIONING
struct _READ_CAPACITY_DATA_EX READ_CAPACITY_DATA_EX
ULONG i
Definition: scsi.h:4123
struct _LBA_STATUS_LIST_HEADER LBA_STATUS_LIST_HEADER
UCHAR additionalSenseCode
Definition: scsi.h:4066
struct _NOTIFICATION_OPERATIONAL_STATUS * PNOTIFICATION_OPERATIONAL_STATUS
#define ScsiGetSenseDescriptorLength(DescriptorBuffer)
Definition: scsi.h:3724
struct _VPD_LOGICAL_BLOCK_PROVISIONING_PAGE * PVPD_LOGICAL_BLOCK_PROVISIONING_PAGE
struct _PRI_RESERVATION_LIST * PPRI_RESERVATION_LIST
struct _LOG_PARAMETER_HEADER LOG_PARAMETER_HEADER
struct _READ_BUFFER_CAPACITY_DATA READ_BUFFER_CAPACITY_DATA
struct _NOTIFICATION_POWER_STATUS NOTIFICATION_POWER_STATUS
remainingBuffer
Definition: scsi.h:4136
struct _VPD_IDENTIFICATION_PAGE VPD_IDENTIFICATION_PAGE
struct _MODE_CDROM_WRITE_PARAMETERS_PAGE2 MODE_CDROM_WRITE_PARAMETERS_PAGE2
struct _NOTIFICATION_EXTERNAL_STATUS * PNOTIFICATION_EXTERNAL_STATUS
struct _LOG_PAGE_LOGICAL_BLOCK_PROVISIONING LOG_PAGE_LOGICAL_BLOCK_PROVISIONING
struct _NOTIFICATION_MEDIA_STATUS NOTIFICATION_MEDIA_STATUS
#define IsFixedSenseDataFormat(SenseInfoBuffer)
Definition: scsi.h:3727
struct _VPD_SERIAL_NUMBER_PAGE VPD_SERIAL_NUMBER_PAGE
struct _VPD_ATA_INFORMATION_PAGE * PVPD_ATA_INFORMATION_PAGE
struct BLOCK_DEVICE_TOKEN_DESCRIPTOR * PBLOCK_DEVICE_TOKEN_DESCRIPTOR
struct POPULATE_TOKEN_HEADER * PPOPULATE_TOKEN_HEADER
struct _VPD_SERIAL_NUMBER_PAGE * PVPD_SERIAL_NUMBER_PAGE
UCHAR remainingBufferLength
Definition: scsi.h:4121
struct _PRO_PARAMETER_LIST * PPRO_PARAMETER_LIST
struct _VPD_MEDIA_SERIAL_NUMBER_PAGE VPD_MEDIA_SERIAL_NUMBER_PAGE
struct _VPD_SUPPORTED_PAGES_PAGE VPD_SUPPORTED_PAGES_PAGE
struct _LOG_PARAMETER_THRESHOLD_RESOURCE_COUNT LOG_PARAMETER_THRESHOLD_RESOURCE_COUNT
#define BLOCK_DEVICE_TOKEN_SIZE
Definition: scsi.h:3630
ULONG SCSI_SENSE_OPTIONS
Definition: scsi.h:3882
enum _VPD_IDENTIFIER_TYPE VPD_IDENTIFIER_TYPE
struct _READ_BUFFER_CAPACITY_DATA * PREAD_BUFFER_CAPACITY_DATA
struct _LUN_LIST LUN_LIST
struct _TRACK_INFORMATION2 * PTRACK_INFORMATION2
struct _CDVD_FEATURE_SET_PAGE * PCDVD_FEATURE_SET_PAGE
struct _PERFORMANCE_DESCRIPTOR PERFORMANCE_DESCRIPTOR
struct _VPD_THIRD_PARTY_COPY_PAGE * PVPD_THIRD_PARTY_COPY_PAGE
UCHAR additionalSenseCodeQualifier
Definition: scsi.h:4067
struct _READ_DVD_STRUCTURES_HEADER * PREAD_DVD_STRUCTURES_HEADER
struct BLOCK_DEVICE_RANGE_DESCRIPTOR * PBLOCK_DEVICE_RANGE_DESCRIPTOR
_In_ UCHAR _In_ ULONG _Out_ PUCHAR OutType
Definition: scsi.h:4116
_VPD_ASSOCIATION
Definition: scsi.h:2492
@ VpdAssocPort
Definition: scsi.h:2494
@ VpdAssocTarget
Definition: scsi.h:2495
@ VpdAssocReserved1
Definition: scsi.h:2496
@ VpdAssocDevice
Definition: scsi.h:2493
@ VpdAssocReserved2
Definition: scsi.h:2497
union _SENSE_DATA_EX * PSENSE_DATA_EX
struct _MODE_FLEXIBLE_DISK_PAGE * PMODE_FLEXIBLE_DISK_PAGE
struct _TRACK_INFORMATION * PTRACK_INFORMATION
struct _OPC_TABLE_ENTRY * POPC_TABLE_ENTRY
struct _DISK_INFORMATION * PDISK_INFORMATION
struct _UNMAP_BLOCK_DESCRIPTOR UNMAP_BLOCK_DESCRIPTOR
struct _FORMATTED_CAPACITY_LIST FORMATTED_CAPACITY_LIST
struct _UNMAP_LIST_HEADER UNMAP_LIST_HEADER
struct WRITE_USING_TOKEN_HEADER * PWRITE_USING_TOKEN_HEADER
enum _VPD_CODE_SET VPD_CODE_SET
struct _LOG_PAGE * PLOG_PAGE
struct _MODE_MRW_PAGE MODE_MRW_PAGE
struct _MODE_DISCONNECT_PAGE MODE_DISCONNECT_PAGE
struct _VPD_SUPPORTED_PAGES_PAGE * PVPD_SUPPORTED_PAGES_PAGE
struct _LOG_PARAMETER_THRESHOLD_RESOURCE_COUNT * PLOG_PARAMETER_THRESHOLD_RESOURCE_COUNT
union _EIGHT_BYTE * PEIGHT_BYTE
struct _READ_BLOCK_LIMITS * PREAD_BLOCK_LIMITS_DATA
struct _MODE_CONTROL_PAGE * PMODE_CONTROL_PAGE
#define SCSI_SENSE_DESCRIPTOR_TYPE_INFORMATION
Definition: scsi.h:630
struct _FORMATTED_CAPACITY_DESCRIPTOR * PFORMATTED_CAPACITY_DESCRIPTOR
#define SCSI_SENSE_ERRORCODE_FIXED_CURRENT
Definition: scsi.h:623
struct _VPD_ZONED_BLOCK_DEVICE_CHARACTERISTICS_PAGE * PVPD_ZONED_BLOCK_DEVICE_CHARACTERISTICS_PAGE
struct _VPD_IDENTIFICATION_PAGE * PVPD_IDENTIFICATION_PAGE
struct STOR_ADDRESS_ALIGN _STOR_ADDR_BTL8 * PSTOR_ADDR_BTL8
struct _MODE_MRW_PAGE * PMODE_MRW_PAGE
union _FOUR_BYTE FOUR_BYTE
struct _PRI_RESERVATION_LIST PRI_RESERVATION_LIST
struct _MODE_RIGID_GEOMETRY_PAGE MODE_RIGID_GEOMETRY_PAGE
union _SENSE_DATA_EX SENSE_DATA_EX
struct _PORT_OUTPUT PORT_OUTPUT
struct _FORMATTED_CAPACITY_DESCRIPTOR FORMATTED_CAPACITY_DESCRIPTOR
struct _VPD_ATA_INFORMATION_PAGE VPD_ATA_INFORMATION_PAGE
struct _FORMATTED_CAPACITY_LIST * PFORMATTED_CAPACITY_LIST
struct _SENSE_DATA FIXED_SENSE_DATA
Definition: scsi.h:2769
descriptor
Definition: scsi.h:3997
struct _LOG_PAGE LOG_PAGE
struct _DATA_BLOCK_HEADER DATA_BLOCK_HEADER
struct _READ_BLOCK_LIMITS READ_BLOCK_LIMITS_DATA
struct _UNMAP_LIST_HEADER * PUNMAP_LIST_HEADER
struct _MODE_CDROM_WRITE_PARAMETERS_PAGE MODE_CDROM_WRITE_PARAMETERS_PAGE
struct _SCSI_SENSE_DESCRIPTOR_ATA_STATUS_RETURN SCSI_SENSE_DESCRIPTOR_ATA_STATUS_RETURN
#define SCSI_SENSE_OPTIONS_FIXED_FORMAT_IF_UNKNOWN_FORMAT_INDICATED
Definition: scsi.h:3885
struct _VPD_BLOCK_LIMITS_PAGE * PVPD_BLOCK_LIMITS_PAGE
struct _NOTIFICATION_POWER_STATUS * PNOTIFICATION_POWER_STATUS
struct _LUN_LIST * PLUN_LIST
struct _VPD_IDENTIFICATION_DESCRIPTOR * PVPD_IDENTIFICATION_DESCRIPTOR
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
Definition: scsi.h:4117
struct _MODE_INFO_EXCEPTIONS * PMODE_INFO_EXCEPTIONS
struct _MODE_FLEXIBLE_DISK_PAGE MODE_FLEXIBLE_DISK_PAGE
struct _SCSI_SENSE_DESCRIPTOR_HEADER SCSI_SENSE_DESCRIPTOR_HEADER
UCHAR descriptorLength
Definition: scsi.h:4124
union _TWO_BYTE * PTWO_BYTE
_In_ UCHAR BufferLength
Definition: scsi.h:4113
union _FOUR_BYTE * PFOUR_BYTE
struct _VPD_ZONED_BLOCK_DEVICE_CHARACTERISTICS_PAGE VPD_ZONED_BLOCK_DEVICE_CHARACTERISTICS_PAGE
#define SCSI_SENSE_DESCRIPTOR_TYPE_BLOCK_COMMAND
Definition: scsi.h:635
_In_ UCHAR _Out_opt_ PUCHAR _Out_opt_ PUCHAR _Out_opt_ PUCHAR AdditionalSenseCodeQualifier
Definition: scsi.h:3794
struct _MODE_DISCONNECT_PAGE * PMODE_DISCONNECT_PAGE
return TRUE
Definition: scsi.h:4017
return succeed
Definition: scsi.h:3782
struct _TRACK_INFORMATION3 TRACK_INFORMATION3
struct _PRI_REGISTRATION_LIST PRI_REGISTRATION_LIST
struct _VPD_BLOCK_LIMITS_PAGE VPD_BLOCK_LIMITS_PAGE
enum _OPERATION_STATUS OPERATION_STATUS
descriptorSenseData
Definition: scsi.h:3951
_In_ UCHAR SenseInfoBufferLength
Definition: scsi.h:3751
struct _AUDIO_OUTPUT AUDIO_OUTPUT
_In_ UCHAR _Out_ UCHAR * TotalByteCountIndicated
Definition: scsi.h:3753
struct _VPD_BLOCK_DEVICE_CHARACTERISTICS_PAGE VPD_BLOCK_DEVICE_CHARACTERISTICS_PAGE
struct RECEIVE_TOKEN_INFORMATION_HEADER * PRECEIVE_TOKEN_INFORMATION_HEADER
struct _SCSI_SENSE_DESCRIPTOR_ATA_STATUS_RETURN * PSCSI_SENSE_DESCRIPTOR_ATA_STATUS_RETURN
struct _CDAUDIO_CONTROL_PAGE * PCDAUDIO_CONTROL_PAGE
struct _NOTIFICATION_EVENT_STATUS_HEADER * PNOTIFICATION_EVENT_STATUS_HEADER
struct _POWER_CONDITION_PAGE POWER_CONDITION_PAGE
struct _WINDOWS_BLOCK_DEVICE_TOKEN_LIMITS_DESCRIPTOR * PWINDOWS_BLOCK_DEVICE_TOKEN_LIMITS_DESCRIPTOR
struct _READ_DVD_STRUCTURES_HEADER READ_DVD_STRUCTURES_HEADER
struct _LOG_PARAMETER_HEADER * PLOG_PARAMETER_HEADER
struct _MODE_INFO_EXCEPTIONS MODE_INFO_EXCEPTIONS
struct _CDVD_INACTIVITY_TIMEOUT_PAGE CDVD_INACTIVITY_TIMEOUT_PAGE
#define STOR_ADDRESS_TYPE_BTL8
Definition: scsi.h:3571
struct _TRACK_INFORMATION TRACK_INFORMATION
struct _READ_CAPACITY_DATA_EX * PREAD_CAPACITY_DATA_EX
struct _LBA_STATUS_DESCRIPTOR * PLBA_STATUS_DESCRIPTOR
struct _NOTIFICATION_BUSY_STATUS NOTIFICATION_BUSY_STATUS
struct _PERFORMANCE_DESCRIPTOR * PPERFORMANCE_DESCRIPTOR
struct _NOTIFICATION_MEDIA_STATUS * PNOTIFICATION_MEDIA_STATUS
UCHAR senseKey
Definition: scsi.h:4065
struct _TRACK_INFORMATION2 TRACK_INFORMATION2
struct _CDVD_CAPABILITIES_PAGE * PCDVD_CAPABILITIES_PAGE
struct STOR_ADDRESS_ALIGN _STOR_ADDR_BTL8 STOR_ADDR_BTL8
_In_ UCHAR _In_ UCHAR OutBufferLength
Definition: scsi.h:4062
PFIXED_SENSE_DATA senseInfoBuffer
Definition: scsi.h:3756
struct _SENSE_DATA * PFIXED_SENSE_DATA
Definition: scsi.h:2769
struct _VPD_MEDIA_SERIAL_NUMBER_PAGE * PVPD_MEDIA_SERIAL_NUMBER_PAGE
struct _SCSI_SENSE_DESCRIPTOR_INFORMATION * PSCSI_SENSE_DESCRIPTOR_INFORMATION
UCHAR type
Definition: scsi.h:4122
enum _TRANSFER_COUNT_UNITS * PTRANSFER_COUNT_UNITS
_OPERATION_STATUS
Definition: scsi.h:3697
@ OPERATION_IN_PROGRESS_IN_FOREGROUND
Definition: scsi.h:3701
@ OPERATION_IN_PROGRESS_IN_BACKGROUND
Definition: scsi.h:3702
@ OPERATION_COMPLETED_WITH_SUCCESS
Definition: scsi.h:3698
@ OPERATION_COMPLETED_WITH_ERROR
Definition: scsi.h:3699
@ OPERATION_COMPLETED_WITH_RESIDUAL_DATA
Definition: scsi.h:3700
@ OPERATION_TERMINATED
Definition: scsi.h:3703
struct _FORMAT_DESCRIPTOR FORMAT_DESCRIPTOR
#define STOR_ADDRESS_ALIGN
Definition: scsi.h:3560
struct _MODE_FORMAT_PAGE MODE_FORMAT_PAGE
#define SCSI_SENSE_ERRORCODE_FIXED_DEFERRED
Definition: scsi.h:624
struct _TAPE_POSITION_DATA TAPE_POSITION_DATA
struct _LOG_PARAMETER LOG_PARAMETER
struct _PRI_RESERVATION_DESCRIPTOR * PPRI_RESERVATION_DESCRIPTOR
_VPD_IDENTIFIER_TYPE
Definition: scsi.h:2500
@ VpdIdentifierTypeSCSINameString
Definition: scsi.h:2509
@ VpdIdentifierTypeVendorId
Definition: scsi.h:2502
@ VpdIdentifierTypeMD5LogicalUnitId
Definition: scsi.h:2508
@ VpdIdentifierTypeTargetPortGroup
Definition: scsi.h:2506
@ VpdIdentifierTypeLogicalUnitGroup
Definition: scsi.h:2507
@ VpdIdentifierTypeFCPHName
Definition: scsi.h:2504
@ VpdIdentifierTypePortRelative
Definition: scsi.h:2505
@ VpdIdentifierTypeEUI64
Definition: scsi.h:2503
@ VpdIdentifierTypeVendorSpecific
Definition: scsi.h:2501
struct _NOTIFICATION_BUSY_STATUS * PNOTIFICATION_BUSY_STATUS
enum _VPD_ASSOCIATION * PVPD_ASSOCIATION
enum _TRANSFER_COUNT_UNITS TRANSFER_COUNT_UNITS
return FALSE
Definition: scsi.h:4167
struct _UNMAP_BLOCK_DESCRIPTOR * PUNMAP_BLOCK_DESCRIPTOR
struct RECEIVE_TOKEN_INFORMATION_RESPONSE_HEADER * PRECEIVE_TOKEN_INFORMATION_RESPONSE_HEADER
struct _PRO_PARAMETER_LIST PRO_PARAMETER_LIST
struct _MODE_CONTROL_PAGE MODE_CONTROL_PAGE
UCHAR byteCount
Definition: scsi.h:3755
enum _OPERATION_STATUS * POPERATION_STATUS
enum _VPD_CODE_SET * PVPD_CODE_SET
struct _DISK_INFORMATION DISK_INFORMATION
_In_ UCHAR _In_ ULONG TypeListCount
Definition: scsi.h:4115
struct _PRI_RESERVATION_DESCRIPTOR PRI_RESERVATION_DESCRIPTOR
struct _CDDA_OUTPUT_PORT * PCDDA_OUTPUT_PORT
UCHAR additionalLength
Definition: scsi.h:3989
struct _NOTIFICATION_MULTI_HOST_STATUS * PNOTIFICATION_MULTI_HOST_STATUS
struct _MODE_RIGID_GEOMETRY_PAGE * PMODE_RIGID_GEOMETRY_PAGE
_In_ UCHAR _Outptr_result_bytebuffer_ DescriptorBufferLength PVOID _Out_ UCHAR * DescriptorBufferLength
Definition: scsi.h:3932
struct _VPD_BLOCK_DEVICE_CHARACTERISTICS_PAGE * PVPD_BLOCK_DEVICE_CHARACTERISTICS_PAGE
_In_ UCHAR _Out_opt_ PUCHAR _Out_opt_ PUCHAR AdditionalSenseCode
Definition: scsi.h:3792
struct _TAPE_POSITION_DATA * PTAPE_POSITION_DATA
PFIXED_SENSE_DATA outBuffer
Definition: scsi.h:4068
struct _LOG_PARAMETER * PLOG_PARAMETER
struct _SCSI_SENSE_DESCRIPTOR_BLOCK_COMMAND SCSI_SENSE_DESCRIPTOR_BLOCK_COMMAND
struct _SCSI_SENSE_DESCRIPTOR_BLOCK_COMMAND * PSCSI_SENSE_DESCRIPTOR_BLOCK_COMMAND
#define STOR_ADDR_BTL8_ADDRESS_LENGTH
Definition: scsi.h:3574
struct _MODE_CDROM_WRITE_PARAMETERS_PAGE2 * PMODE_CDROM_WRITE_PARAMETERS_PAGE2
enum _VPD_ASSOCIATION VPD_ASSOCIATION
struct _NOTIFICATION_EVENT_STATUS_HEADER NOTIFICATION_EVENT_STATUS_HEADER
struct _LBA_STATUS_DESCRIPTOR LBA_STATUS_DESCRIPTOR
_TRANSFER_COUNT_UNITS
Definition: scsi.h:3706
@ TRANSFER_COUNT_UNITS_PEBIBYTES
Definition: scsi.h:3712
@ TRANSFER_COUNT_UNITS_GIBIBYTES
Definition: scsi.h:3710
@ TRANSFER_COUNT_UNITS_KIBIBYTES
Definition: scsi.h:3708
@ TRANSFER_COUNT_UNITS_NUMBER_BLOCKS
Definition: scsi.h:3714
@ TRANSFER_COUNT_UNITS_TEBIBYTES
Definition: scsi.h:3711
@ TRANSFER_COUNT_UNITS_EXBIBYTES
Definition: scsi.h:3713
@ TRANSFER_COUNT_UNITS_MEBIBYTES
Definition: scsi.h:3709
@ TRANSFER_COUNT_UNITS_BYTES
Definition: scsi.h:3707
struct _SCSI_SENSE_DESCRIPTOR_HEADER * PSCSI_SENSE_DESCRIPTOR_HEADER
struct STOR_ADDRESS_ALIGN _STOR_ADDRESS STOR_ADDRESS
_In_ UCHAR _Out_opt_ PUCHAR SenseKey
Definition: scsi.h:3791
_In_ UCHAR _Outptr_result_bytebuffer_ DescriptorBufferLength PVOID * DescriptorBuffer
Definition: scsi.h:3930
struct _VPD_IDENTIFICATION_DESCRIPTOR VPD_IDENTIFICATION_DESCRIPTOR
struct _DISC_INFORMATION * PDISC_INFORMATION
struct _OPC_TABLE_ENTRY OPC_TABLE_ENTRY
struct _AUDIO_OUTPUT * PAUDIO_OUTPUT
struct _TRACK_INFORMATION3 * PTRACK_INFORMATION3
#define MAX_SENSE_BUFFER_SIZE
Definition: scsi.h:598
ULONG dataLength
Definition: scsi.h:3797
struct _FORMAT_DESCRIPTOR * PFORMAT_DESCRIPTOR
struct _CDDA_OUTPUT_PORT CDDA_OUTPUT_PORT
struct _MODE_FORMAT_PAGE * PMODE_FORMAT_PAGE
struct _CDVD_INACTIVITY_TIMEOUT_PAGE * PCDVD_INACTIVITY_TIMEOUT_PAGE
struct _VPD_LOGICAL_BLOCK_PROVISIONING_PAGE VPD_LOGICAL_BLOCK_PROVISIONING_PAGE
#define SCSI_SENSE_OPTIONS_NONE
Definition: scsi.h:3884
struct _MODE_CDROM_WRITE_PARAMETERS_PAGE * PMODE_CDROM_WRITE_PARAMETERS_PAGE
struct _DISC_INFORMATION DISC_INFORMATION
BOOLEAN validSense
Definition: scsi.h:4064
_VPD_CODE_SET
Definition: scsi.h:2485
@ VpdCodeSetBinary
Definition: scsi.h:2487
@ VpdCodeSetReserved
Definition: scsi.h:2486
@ VpdCodeSetAscii
Definition: scsi.h:2488
@ VpdCodeSetUTF8
Definition: scsi.h:2489
struct _CDVD_CAPABILITIES_PAGE CDVD_CAPABILITIES_PAGE
struct _DATA_BLOCK_HEADER * PDATA_BLOCK_HEADER
enum _VPD_IDENTIFIER_TYPE * PVPD_IDENTIFIER_TYPE
struct _VPD_THIRD_PARTY_COPY_PAGE VPD_THIRD_PARTY_COPY_PAGE
struct _LBA_STATUS_LIST_HEADER * PLBA_STATUS_LIST_HEADER
struct STOR_ADDRESS_ALIGN _STOR_ADDRESS * PSTOR_ADDRESS
struct _NOTIFICATION_EXTERNAL_STATUS NOTIFICATION_EXTERNAL_STATUS
struct _NOTIFICATION_OPERATIONAL_STATUS NOTIFICATION_OPERATIONAL_STATUS
#define IsDescriptorSenseDataFormat(SenseInfoBuffer)
Definition: scsi.h:3731
struct _PRI_REGISTRATION_LIST * PPRI_REGISTRATION_LIST
struct _DESCRIPTOR_SENSE_DATA DESCRIPTOR_SENSE_DATA
Srb SenseInfoBuffer
Definition: sptilib.c:215
UCHAR ParameterLength
Definition: scsi.h:3240
UCHAR LogicalBlocksPerSecond[2]
Definition: scsi.h:3244
UCHAR CodePage
Definition: scsi.h:3239
UCHAR Immediate
Definition: scsi.h:3241
PORT_OUTPUT PortOutput[4]
Definition: scsi.h:3245
UCHAR LbaFormat
Definition: scsi.h:3243
UCHAR StopOnTrackCrossing
Definition: scsi.h:3103
UCHAR Obsolete[2]
Definition: scsi.h:3107
CDDA_OUTPUT_PORT CDDAOutputPorts[4]
Definition: scsi.h:3108
UCHAR Reserved4[3]
Definition: scsi.h:3106
UCHAR Reserved2[6]
Definition: cdrw_hw.h:645
UCHAR OperationCode
Definition: cdrw_hw.h:634
UCHAR Immediate
Definition: scsi.h:1229
UCHAR AddressOrTrack[4]
Definition: scsi.h:1231
UCHAR Reserved3[5]
Definition: scsi.h:1232
UCHAR TransferBlocksLsb
Definition: scsi.h:1073
UCHAR Reserved2
Definition: cdrw_hw.h:119
UCHAR Control
Definition: cdrw_hw.h:121
UCHAR OperationCode
Definition: cdrw_hw.h:112
UCHAR LogicalBlockByte0
Definition: scsi.h:1067
UCHAR DisablePageOut
Definition: cdrw_hw.h:116
UCHAR RelativeAddress
Definition: cdrw_hw.h:113
UCHAR ForceUnitAccess
Definition: cdrw_hw.h:115
UCHAR TransferBlocksMsb
Definition: scsi.h:1072
UCHAR Reserved1
Definition: cdrw_hw.h:114
UCHAR LogicalBlockByte3
Definition: scsi.h:1070
UCHAR LogicalUnitNumber
Definition: scsi.h:1066
UCHAR LogicalBlockByte2
Definition: scsi.h:1069
UCHAR LogicalBlockByte1
Definition: scsi.h:1068
UCHAR DisablePageOut
Definition: scsi.h:1081
UCHAR ForceUnitAccess
Definition: scsi.h:1080
UCHAR Reserved1
Definition: scsi.h:1079
UCHAR LogicalUnitNumber
Definition: scsi.h:1082
UCHAR Reserved2
Definition: scsi.h:1085
UCHAR TransferLength[4]
Definition: scsi.h:1084
UCHAR LogicalBlock[4]
Definition: scsi.h:1083
UCHAR RelativeAddress
Definition: scsi.h:1078
UCHAR Control
Definition: scsi.h:1086
UCHAR OperationCode
Definition: cdrw_hw.h:780
UCHAR Reserved1
Definition: scsi.h:1090
UCHAR Control
Definition: scsi.h:1097
UCHAR DisablePageOut
Definition: scsi.h:1092
UCHAR ForceUnitAccess
Definition: scsi.h:1091
UCHAR Reserved2
Definition: scsi.h:1096
UCHAR LogicalBlock[8]
Definition: scsi.h:1094
UCHAR Protection
Definition: scsi.h:1093
UCHAR TransferLength[4]
Definition: scsi.h:1095
UCHAR OperationCode
Definition: scsi.h:1089
UCHAR LogicalUnitNumber
Definition: scsi.h:1054
UCHAR InterleaveMsb
Definition: scsi.h:1056
UCHAR FReserved2
Definition: cdrw_hw.h:107
UCHAR FormatControl
Definition: scsi.h:1053
UCHAR OperationCode
Definition: cdrw_hw.h:95
UCHAR FReserved1
Definition: cdrw_hw.h:105
UCHAR InterleaveLsb
Definition: scsi.h:1057
UCHAR OperationCode
Definition: scsi.h:1003
UCHAR LogicalUnitNumber
Definition: scsi.h:1006
UCHAR CommandUniqueBytes[3]
Definition: scsi.h:1007
UCHAR Reserved
Definition: scsi.h:1010
UCHAR Immediate
Definition: scsi.h:1004
UCHAR CommandUniqueBits
Definition: scsi.h:1005
UCHAR VendorUnique
Definition: scsi.h:1011
UCHAR CommandSupportData
Definition: scsi.h:1034
UCHAR OperationCode
Definition: scsi.h:1032
UCHAR AllocationLength
Definition: scsi.h:1038
UCHAR EnableVitalProductData
Definition: scsi.h:1033
UCHAR LogicalUnitNumber
Definition: scsi.h:1025
UCHAR AllocationLength
Definition: cdrw_hw.h:71
UCHAR OperationCode
Definition: cdrw_hw.h:66
UCHAR TransferBlocks
Definition: scsi.h:1019
UCHAR LogicalBlockMsb0
Definition: scsi.h:1017
UCHAR LogicalBlockLsb
Definition: scsi.h:1018
UCHAR LogicalBlockMsb1
Definition: scsi.h:1015
UCHAR LogicalUnitNumber
Definition: scsi.h:1016
UCHAR VerificationLength[3]
Definition: scsi.h:1048
UCHAR LogicalUnitNumber
Definition: scsi.h:1047
UCHAR Immediate
Definition: scsi.h:1045
UCHAR Control
Definition: scsi.h:1049
UCHAR Reserved
Definition: scsi.h:1046
UCHAR ByteCompare
Definition: scsi.h:1044
UCHAR OperationCode
Definition: scsi.h:1042
UCHAR Reserved4[3]
Definition: scsi.h:1175
UCHAR Immediate
Definition: scsi.h:1168
UCHAR Reserved3
Definition: scsi.h:1173
UCHAR Reserved1
Definition: scsi.h:1169
UCHAR Reserved2
Definition: scsi.h:1172
UCHAR TrackNumber[2]
Definition: scsi.h:1174
UCHAR OperationCode
Definition: scsi.h:1167
UCHAR Reserved1
Definition: cdrw_hw.h:81
UCHAR Long
Definition: cdrw_hw.h:79
UCHAR Reserved2[3]
Definition: cdrw_hw.h:83
UCHAR LogicalUnitNumber
Definition: scsi.h:1499
UCHAR Control
Definition: cdrw_hw.h:84
UCHAR OperationCode
Definition: cdrw_hw.h:78
UCHAR Immediate
Definition: cdrw_hw.h:80
UCHAR Destination2ElementAddress[2]
Definition: scsi.h:1648
UCHAR TransportElementAddress[2]
Definition: scsi.h:1645
UCHAR SourceElementAddress[2]
Definition: scsi.h:1646
UCHAR Destination1ElementAddress[2]
Definition: scsi.h:1647
UCHAR LogicalUnitNumber
Definition: scsi.h:1644
UCHAR StartingFeature[2]
Definition: scsi.h:1843
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:734
UCHAR StartingLBA[8]
Definition: scsi.h:2028
UCHAR AllocationLength[4]
Definition: scsi.h:2029
UCHAR Reserved1[2]
Definition: scsi.h:1743
UCHAR StartingLBA[4]
Definition: scsi.h:1742
UCHAR MaximumNumberOfDescriptors[2]
Definition: scsi.h:1744
UCHAR Reserved4[3]
Definition: cdrw_hw.h:438
UCHAR OperationCode
Definition: cdrw_hw.h:431
UCHAR Reserved5[3]
Definition: cdrw_hw.h:440
UCHAR Reserved2[2]
Definition: cdrw_hw.h:434
UCHAR BTBit
Definition: scsi.h:1444
UCHAR LogicalUnitNumber
Definition: scsi.h:1446
UCHAR Control
Definition: scsi.h:1451
UCHAR OperationCode
Definition: scsi.h:1441
UCHAR Reserved3
Definition: scsi.h:1447
UCHAR Reserved4
Definition: scsi.h:1449
UCHAR Reserved1
Definition: scsi.h:1445
UCHAR Immediate
Definition: scsi.h:1442
UCHAR Partition
Definition: scsi.h:1450
UCHAR CPBit
Definition: scsi.h:1443
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:1448
UCHAR LogicalUnitNumber
Definition: scsi.h:1472
UCHAR Reserved
Definition: scsi.h:1473
UCHAR Reserved1
Definition: scsi.h:1471
UCHAR OperationCode
Definition: scsi.h:1468
UCHAR Control
Definition: scsi.h:1477
UCHAR ParameterListLength[2]
Definition: scsi.h:1476
UCHAR PCRBit
Definition: scsi.h:1470
UCHAR Reserved2[4]
Definition: scsi.h:1475
UCHAR SPBit
Definition: scsi.h:1469
UCHAR PCBit
Definition: scsi.h:1474
UCHAR Control
Definition: cdrw_hw.h:373
UCHAR PageCode
Definition: cdrw_hw.h:367
UCHAR ParameterPointer[2]
Definition: cdrw_hw.h:371
UCHAR LogicalUnitNumber
Definition: scsi.h:1458
UCHAR OperationCode
Definition: cdrw_hw.h:362
UCHAR Reserved2
Definition: cdrw_hw.h:369
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:372
UCHAR Reserved3
Definition: cdrw_hw.h:370
UCHAR Reserved1
Definition: cdrw_hw.h:365
UCHAR PPCBit
Definition: cdrw_hw.h:364
UCHAR Reserved
Definition: scsi.h:1707
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:446
UCHAR OperationCode
Definition: cdrw_hw.h:444
UCHAR Reserved2[2]
Definition: cdrw_hw.h:447
UCHAR Reserved1[6]
Definition: scsi.h:1709
UCHAR Reserved2[2]
Definition: cdrw_hw.h:404
UCHAR LogicalUnitNumber
Definition: scsi.h:1517
UCHAR LogicalUnitNumber
Definition: scsi.h:1435
UCHAR Reserved2[5]
Definition: cdrw_hw.h:356
UCHAR ParameterListLength[2]
Definition: cdrw_hw.h:357
UCHAR OperationCode
Definition: cdrw_hw.h:340
UCHAR Reserved2[2]
Definition: cdrw_hw.h:345
UCHAR ParameterListLength
Definition: cdrw_hw.h:346
UCHAR LogicalUnitNumber
Definition: scsi.h:1425
UCHAR LongLBAAccepted
Definition: scsi.h:1385
UCHAR Reserved3[4]
Definition: cdrw_hw.h:333
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:334
UCHAR SubPageCode
Definition: scsi.h:1389
UCHAR LogicalUnitNumber
Definition: storport.h:1176
UCHAR SubPageCode
Definition: scsi.h:1377
UCHAR OperationCode
Definition: cdrw_hw.h:312
UCHAR AllocationLength
Definition: cdrw_hw.h:320
UCHAR OperationCode
Definition: scsi.h:1630
UCHAR Reserved3
Definition: scsi.h:1638
UCHAR LogicalUnitNumber
Definition: scsi.h:1632
UCHAR DestinationElementAddress[2]
Definition: scsi.h:1635
UCHAR SourceElementAddress[2]
Definition: scsi.h:1634
UCHAR TransportElementAddress[2]
Definition: scsi.h:1633
UCHAR Reserved2[2]
Definition: scsi.h:1636
UCHAR Reserved1
Definition: scsi.h:1631
UCHAR LogicalBlockByte0
Definition: scsi.h:1360
UCHAR LogicalBlockByte1
Definition: scsi.h:1361
UCHAR LogicalBlockByte2
Definition: scsi.h:1362
UCHAR LogicalBlockByte3
Definition: scsi.h:1363
UCHAR TransferBlockByte1
Definition: scsi.h:1366
UCHAR TransferBlockByte0
Definition: scsi.h:1365
UCHAR PartitionSelect
Definition: scsi.h:1547
UCHAR Reserved1[3]
Definition: scsi.h:1548
UCHAR OperationCode
Definition: scsi.h:1544
UCHAR Control
Definition: scsi.h:1549
UCHAR Immediate
Definition: scsi.h:1545
UCHAR LogicalUnitNumber
Definition: scsi.h:1102
UCHAR Reserved2[6]
Definition: cdrw_hw.h:133
UCHAR LogicalUnitNumber
Definition: scsi.h:1215
UCHAR LogicalUnitNumber
Definition: scsi.h:1206
UCHAR Reserved1
Definition: scsi.h:1205
UCHAR Control
Definition: scsi.h:1210
UCHAR StartingBlockAddress[4]
Definition: scsi.h:1207
UCHAR OperationCode
Definition: scsi.h:1204
UCHAR PlayLength[2]
Definition: scsi.h:1209
UCHAR Reserved2
Definition: scsi.h:1208
UCHAR Port1
Definition: scsi.h:1259
struct _CDB::_PLAY_CD::@2355::_MSF MSF
UCHAR Speed
Definition: scsi.h:1262
UCHAR Control
Definition: scsi.h:1263
UCHAR CMSF
Definition: scsi.h:1238
UCHAR EndingF
Definition: scsi.h:1253
UCHAR Lun
Definition: scsi.h:1240
UCHAR Reserved1
Definition: scsi.h:1237
_ANONYMOUS_UNION union _CDB::_PLAY_CD::@2355 DUMMYUNIONNAME
UCHAR ExpectedSectorType
Definition: scsi.h:1239
UCHAR Reserved2
Definition: scsi.h:1254
UCHAR StartingS
Definition: scsi.h:1249
UCHAR OperationCode
Definition: scsi.h:1236
UCHAR EndingM
Definition: scsi.h:1251
UCHAR Port2
Definition: scsi.h:1260
UCHAR Audio
Definition: scsi.h:1257
UCHAR EndingS
Definition: scsi.h:1252
UCHAR StartingF
Definition: scsi.h:1250
UCHAR StartingM
Definition: scsi.h:1248
UCHAR Composite
Definition: scsi.h:1258
struct _CDB::_PLAY_CD::@2355::_LBA LBA
UCHAR LogicalBlockByte3
Definition: scsi.h:1349
UCHAR LogicalBlockByte2
Definition: scsi.h:1348
UCHAR TransferBlockByte2
Definition: scsi.h:1352
UCHAR LogicalUnitNumber
Definition: scsi.h:1345
UCHAR LogicalBlockByte1
Definition: scsi.h:1347
UCHAR TransferBlockByte0
Definition: scsi.h:1350
UCHAR TransferBlockByte3
Definition: scsi.h:1353
UCHAR TransferBlockByte1
Definition: scsi.h:1351
UCHAR LogicalBlockByte0
Definition: scsi.h:1346
UCHAR TransportElementAddress[2]
Definition: scsi.h:1622
UCHAR DestinationElementAddress[2]
Definition: scsi.h:1623
UCHAR Reserved
Definition: scsi.h:1481
UCHAR OperationCode
Definition: scsi.h:1480
UCHAR TransferLength[3]
Definition: scsi.h:1483
UCHAR LogicalUnitNumber
Definition: scsi.h:1482
UCHAR Control
Definition: scsi.h:1484
UCHAR OperationCode
Definition: scsi.h:1863
UCHAR TransferLength[4]
Definition: scsi.h:1870
UCHAR DisablePageOut
Definition: scsi.h:1867
UCHAR Control
Definition: scsi.h:1873
UCHAR LogicalUnitNumber
Definition: scsi.h:1868
UCHAR Streaming
Definition: scsi.h:1872
UCHAR Reserved2
Definition: scsi.h:1871
UCHAR ForceUnitAccess
Definition: scsi.h:1866
UCHAR RelativeAddress
Definition: scsi.h:1864
UCHAR Reserved1
Definition: scsi.h:1865
UCHAR LogicalBlock[4]
Definition: scsi.h:1869
UCHAR TransferLength[4]
Definition: scsi.h:1917
UCHAR Reserved1
Definition: scsi.h:1912
UCHAR Reserved2
Definition: scsi.h:1918
UCHAR ReadProtect
Definition: scsi.h:1915
UCHAR OperationCode
Definition: scsi.h:1911
UCHAR ForceUnitAccess
Definition: scsi.h:1913
UCHAR LogicalBlock[8]
Definition: scsi.h:1916
UCHAR Control
Definition: scsi.h:1920
UCHAR Streaming
Definition: scsi.h:1919
UCHAR DisablePageOut
Definition: scsi.h:1914
UCHAR AllocationLength[4]
Definition: scsi.h:1963
UCHAR LogicalBlock[8]
Definition: scsi.h:1962
UCHAR Reserved5
Definition: scsi.h:1339
UCHAR StartingS
Definition: scsi.h:1326
UCHAR IncludeSyncData
Definition: cdrw_hw.h:256
UCHAR StartingM
Definition: scsi.h:1325
UCHAR ExpectedSectorType
Definition: cdrw_hw.h:244
UCHAR IncludeUserData
Definition: cdrw_hw.h:254
UCHAR SubChannelSelection
Definition: cdrw_hw.h:258
UCHAR RelativeAddress
Definition: scsi.h:1320
UCHAR StartingF
Definition: scsi.h:1327
UCHAR OperationCode
Definition: cdrw_hw.h:240
UCHAR RelativeAddress
Definition: scsi.h:1302
UCHAR Reserved3
Definition: cdrw_hw.h:275
UCHAR IncludeUserData
Definition: cdrw_hw.h:278
UCHAR SubChannelSelection
Definition: cdrw_hw.h:282
UCHAR StartingLBA[4]
Definition: scsi.h:1306
UCHAR Lun
Definition: scsi.h:1305
UCHAR IncludeEDC
Definition: cdrw_hw.h:277
UCHAR IncludeSyncData
Definition: cdrw_hw.h:280
UCHAR ExpectedSectorType
Definition: cdrw_hw.h:269
UCHAR HeaderCode
Definition: cdrw_hw.h:279
UCHAR Control
Definition: cdrw_hw.h:285
UCHAR TransferBlocks[3]
Definition: scsi.h:1307
UCHAR Reserved0
Definition: scsi.h:271
UCHAR Reserved2
Definition: scsi.h:1308
UCHAR ErrorFlags
Definition: cdrw_hw.h:276
UCHAR OperationCode
Definition: cdrw_hw.h:265
UCHAR StartingElementAddress[2]
Definition: scsi.h:1659
UCHAR NumberOfElements[2]
Definition: scsi.h:1660
UCHAR AllocationLength[3]
Definition: scsi.h:1662
UCHAR OperationCode
Definition: cdrw_hw.h:172
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:1198
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:180
UCHAR Reserved3
Definition: scsi.h:1199
UCHAR Reserved2[7]
Definition: scsi.h:1583
UCHAR OperationCode
Definition: cdrw_hw.h:149
UCHAR Reserved1
Definition: cdrw_hw.h:152
UCHAR Format
Definition: cdrw_hw.h:158
UCHAR Reserved3[3]
Definition: scsi.h:1115
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:165
UCHAR Reserved2[3]
Definition: cdrw_hw.h:163
UCHAR Control
Definition: cdrw_hw.h:166
UCHAR Reserved0
Definition: cdrw_hw.h:150
UCHAR LogicalUnitNumber
Definition: scsi.h:1112
UCHAR StartingTrack
Definition: scsi.h:1116
UCHAR Format2
Definition: scsi.h:1113
UCHAR TrackNumber[2]
Definition: scsi.h:1162
UCHAR OperationCode
Definition: scsi.h:1158
UCHAR Reserved3[3]
Definition: scsi.h:1163
UCHAR Reserved2[2]
Definition: scsi.h:1161
UCHAR OperationCode
Definition: cdrw_hw.h:668
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:1790
UCHAR Reserved2[2]
Definition: cdrw_hw.h:672
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:673
UCHAR AllocationLength[4]
Definition: scsi.h:700
UCHAR Reserved2[1]
Definition: scsi.h:701
UCHAR Reserved1[5]
Definition: scsi.h:699
UCHAR Control
Definition: scsi.h:702
UCHAR OperationCode
Definition: scsi.h:698
UCHAR ReservationSize[4]
Definition: scsi.h:1143
UCHAR Reserved1
Definition: scsi.h:1268
UCHAR OperationCode
Definition: scsi.h:1266
UCHAR StartingAddress[4]
Definition: scsi.h:1271
UCHAR Reserved3
Definition: scsi.h:1273
UCHAR Reserved2[3]
Definition: scsi.h:1272
UCHAR Reserved4
Definition: scsi.h:1275
UCHAR RelativeAddress
Definition: scsi.h:1267
UCHAR Direct
Definition: scsi.h:1269
UCHAR Type
Definition: scsi.h:1274
UCHAR Control
Definition: scsi.h:1276
UCHAR Lun
Definition: scsi.h:1270
UCHAR Immediate
Definition: scsi.h:1526
UCHAR VendorUnique
Definition: scsi.h:1532
UCHAR OperationCode
Definition: scsi.h:1525
UCHAR BlockAddress[3]
Definition: scsi.h:1528
UCHAR Reserved2
Definition: scsi.h:1531
UCHAR Reserved1
Definition: scsi.h:1527
UCHAR Control
Definition: cdrw_hw.h:382
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:1490
UCHAR OperationCode
Definition: cdrw_hw.h:377
UCHAR Reserved1
Definition: cdrw_hw.h:378
UCHAR Reserved2[3]
Definition: cdrw_hw.h:381
UCHAR LogicalUnitNumber
Definition: scsi.h:1489
UCHAR CueSheetSize[3]
Definition: scsi.h:1189
UCHAR ParameterListLength[2]
Definition: scsi.h:1772
UCHAR Reserved2[6]
Definition: cdrw_hw.h:660
UCHAR KeyFormat
Definition: cdrw_hw.h:662
UCHAR Reserved1
Definition: cdrw_hw.h:658
UCHAR OperationCode
Definition: cdrw_hw.h:657
UCHAR ParameterListLength[2]
Definition: cdrw_hw.h:661
UCHAR Control
Definition: cdrw_hw.h:664
UCHAR ParameterListLength[2]
Definition: scsi.h:1154
UCHAR Reserved4[2]
Definition: scsi.h:1675
UCHAR StartingElementAddress[2]
Definition: scsi.h:1671
UCHAR ParameterListLength[2]
Definition: scsi.h:1676
UCHAR LogicalUnitNumber
Definition: scsi.h:1670
UCHAR Reserved1[6]
Definition: cdrw_hw.h:599
UCHAR WriteSpeed[2]
Definition: cdrw_hw.h:598
_ANONYMOUS_UNION union _CDB::_SET_CD_SPEED::@2358 DUMMYUNIONNAME
_ANONYMOUS_STRUCT struct _CDB::_SET_CD_SPEED::@2358::@2359 DUMMYSTRUCTNAME
UCHAR RotationControl
Definition: scsi.h:1853
UCHAR ReadSpeed[2]
Definition: cdrw_hw.h:597
UCHAR Reserved2[5]
Definition: scsi.h:1859
UCHAR ReadAheadLBA[4]
Definition: cdrw_hw.h:742
UCHAR TriggerLBA[4]
Definition: cdrw_hw.h:741
UCHAR ParameterListLength[2]
Definition: scsi.h:1763
union _CDB::_SPACE_TAPE_MARKS::@2356 Byte6
struct _CDB::_SPACE_TAPE_MARKS::@2356::@2357 Fields
UCHAR OperationCode
Definition: cdrw_hw.h:389
UCHAR LogicalUnitNumber
Definition: scsi.h:1507
UCHAR Reserved2[2]
Definition: cdrw_hw.h:393
UCHAR Reserved2[7]
Definition: scsi.h:1282
UCHAR LogicalUnitNumber
Definition: scsi.h:1290
UCHAR AllocationLength[2]
Definition: cdrw_hw.h:212
UCHAR OperationCode
Definition: cdrw_hw.h:201
UCHAR TrackNumber
Definition: cdrw_hw.h:211
UCHAR Reserved4[2]
Definition: cdrw_hw.h:210
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:1720
UCHAR Reserved2[4]
Definition: scsi.h:1997
UCHAR ParameterListLength[4]
Definition: scsi.h:1999
UCHAR ListIdentifier[4]
Definition: scsi.h:1998
UCHAR Reserved3
Definition: scsi.h:2020
UCHAR Control
Definition: scsi.h:2022
UCHAR Anchor
Definition: scsi.h:2016
UCHAR AllocationLength[2]
Definition: scsi.h:2021
UCHAR GroupNumber
Definition: scsi.h:2019
UCHAR Reserved1
Definition: scsi.h:2017
UCHAR OperationCode
Definition: scsi.h:2015
UCHAR Reserved2[4]
Definition: scsi.h:2018
UCHAR Control
Definition: scsi.h:1946
UCHAR BlockVerify
Definition: scsi.h:1938
UCHAR LogicalBlock[8]
Definition: scsi.h:1942
UCHAR DisablePageOut
Definition: scsi.h:1940
UCHAR Streaming
Definition: scsi.h:1945
UCHAR Reserved3
Definition: scsi.h:1944
UCHAR VerificationLength[4]
Definition: scsi.h:1943
UCHAR Reserved1
Definition: scsi.h:1936
UCHAR ByteCheck
Definition: scsi.h:1937
UCHAR VerifyProtect
Definition: scsi.h:1941
UCHAR OperationCode
Definition: scsi.h:1935
UCHAR Reserved2
Definition: scsi.h:1939
UCHAR LogicalUnitNumber
Definition: scsi.h:1882
UCHAR Control
Definition: scsi.h:1887
UCHAR DisablePageOut
Definition: scsi.h:1881
UCHAR EBP
Definition: scsi.h:1879
UCHAR RelativeAddress
Definition: scsi.h:1877
UCHAR ForceUnitAccess
Definition: scsi.h:1880
UCHAR TransferLength[4]
Definition: scsi.h:1884
UCHAR Streaming
Definition: scsi.h:1886
UCHAR Reserved1
Definition: scsi.h:1878
UCHAR LogicalBlock[4]
Definition: scsi.h:1883
UCHAR Reserved2
Definition: scsi.h:1885
UCHAR OperationCode
Definition: scsi.h:1876
UCHAR Reserved2
Definition: scsi.h:1930
UCHAR WriteProtect
Definition: scsi.h:1927
UCHAR LogicalBlock[8]
Definition: scsi.h:1928
UCHAR Reserved1
Definition: scsi.h:1924
UCHAR Streaming
Definition: scsi.h:1931
UCHAR DisablePageOut
Definition: scsi.h:1926
UCHAR Control
Definition: scsi.h:1932
UCHAR ForceUnitAccess
Definition: scsi.h:1925
UCHAR TransferLength[4]
Definition: scsi.h:1929
UCHAR OperationCode
Definition: scsi.h:1923
UCHAR TransferLength[3]
Definition: scsi.h:1557
UCHAR Reserved
Definition: scsi.h:3093
UCHAR ChannelSelection
Definition: scsi.h:3092
UCHAR Volume
Definition: scsi.h:3094
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2381 DUMMYUNIONNAME3
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2383 DUMMYUNIONNAME5
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2382 DUMMYUNIONNAME4
UCHAR CopyManagementRevision[2]
Definition: scsi.h:3217
UCHAR ReadSpeedCurrent[2]
Definition: scsi.h:3198
UCHAR ReadSpeedMaximum[2]
Definition: scsi.h:3192
UCHAR WriteSpeedMaximum[2]
Definition: scsi.h:3209
UCHAR ReadBarCodeCapable
Definition: scsi.h:3177
UCHAR ObsoleteReserved[2]
Definition: scsi.h:3193
UCHAR ObsoleteReserved4[2]
Definition: scsi.h:3210
UCHAR BufferUnderrunFree
Definition: scsi.h:3169
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2380 DUMMYUNIONNAME2
UCHAR LoadingMechanismType
Definition: scsi.h:3183
UCHAR WriteSpeedCurrent[2]
Definition: scsi.h:3213
UCHAR NumberVolumeLevels[2]
Definition: scsi.h:3195
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2379 DUMMYUNIONNAME
UCHAR ObsoleteReserved2[2]
Definition: scsi.h:3199
UCHAR SeperateChannelMute
Definition: scsi.h:3185
UCHAR Reserved10[2]
Definition: scsi.h:3218
UCHAR SupportsDiskPresent
Definition: scsi.h:3186
UCHAR ObsoleteReserved11[2]
Definition: scsi.h:3214
UCHAR RWInLeadInReadable
Definition: scsi.h:3189
UCHAR ChallengeKeyValue[10]
Definition: cdrw_hw.h:3594
UCHAR Reserved2[2]
Definition: scsi.h:3126
UCHAR EventStatusNotification[2]
Definition: scsi.h:3120
UCHAR KeyExchange[2]
Definition: scsi.h:3125
UCHAR CDSequentialRecordable[2]
Definition: scsi.h:3122
UCHAR DigitalOutput[2]
Definition: scsi.h:3121
UCHAR DVDSequentialRecordable[2]
Definition: scsi.h:3123
UCHAR PacketSMART[2]
Definition: scsi.h:3118
UCHAR RandomRecordable[2]
Definition: scsi.h:3124
UCHAR PersistantPrevent[2]
Definition: scsi.h:3119
UCHAR CDAudio[2]
Definition: scsi.h:3116
UCHAR EmbeddedChanger[2]
Definition: scsi.h:3117
UCHAR GroupTwoMinimumTimeout[2]
Definition: scsi.h:3140
UCHAR GroupOneMinimumTimeout[2]
Definition: scsi.h:3139
UCHAR DataLength[2]
Definition: cdrw_hw.h:3581
UCHAR DataLength[2]
Definition: scsi.h:2912
CDVD_KEY_DATA TitleKey
Definition: cdrw_hw.h:3619
UCHAR Reserved[4]
Definition: scsi.h:2244
_ANONYMOUS_UNION union _DATA_BLOCK_HEADER::@2362 DUMMYUNIONNAME
struct _DATA_BLOCK_HEADER::@2362::@2363 MSF
UCHAR DataMode
Definition: scsi.h:2243
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:2246
UCHAR AdditionalSenseLength
Definition: scsi.h:2779
UCHAR DescriptorBuffer[ANYSIZE_ARRAY]
Definition: scsi.h:2780
UCHAR Reserved3[3]
Definition: scsi.h:2778
UCHAR AdditionalSenseCodeQualifier
Definition: scsi.h:2777
UCHAR AdditionalSenseCode
Definition: scsi.h:2776
UCHAR LastSessionLastTrackLsb
Definition: scsi.h:2197
UCHAR LastSessionLeadIn[4]
Definition: scsi.h:2209
UCHAR MrwStatus
Definition: scsi.h:2198
UCHAR LastSessionFirstTrackMsb
Definition: scsi.h:2206
UCHAR Reserved2
Definition: scsi.h:2200
UCHAR MrwDirtyBit
Definition: scsi.h:2199
UCHAR LastSessionLastTrackMsb
Definition: scsi.h:2207
UCHAR NumberOfSessionsLsb
Definition: scsi.h:2195
UCHAR Reserved4
Definition: scsi.h:2212
UCHAR DiscStatus
Definition: scsi.h:2190
UCHAR FirstTrackNumber
Definition: scsi.h:2194
UCHAR DiscType
Definition: scsi.h:2204
UCHAR NumberOfSessionsMsb
Definition: scsi.h:2205
UCHAR LastSessionStatus
Definition: scsi.h:2191
UCHAR Erasable
Definition: scsi.h:2192
UCHAR DiskBarCode[8]
Definition: scsi.h:2211
UCHAR LastPossibleLeadOutStartTime[4]
Definition: scsi.h:2210
UCHAR LastSessionFirstTrackLsb
Definition: scsi.h:2196
UCHAR Reserved1
Definition: scsi.h:2193
UCHAR NumberOPCEntries
Definition: scsi.h:2213
UCHAR DiskIdentification[4]
Definition: scsi.h:2208
OPC_TABLE_ENTRY OPCTable[1]
Definition: scsi.h:2214
UCHAR LastPossibleStartTime[4]
Definition: scsi.h:2235
UCHAR Reserved1
Definition: scsi.h:2222
UCHAR NumberOPCEntries
Definition: scsi.h:2238
UCHAR Reserved3[3]
Definition: scsi.h:2232
UCHAR LastSessionLastTrack
Definition: scsi.h:2226
UCHAR DiskStatus
Definition: scsi.h:2219
UCHAR NumberOfSessions
Definition: scsi.h:2224
UCHAR DiskBarCode[8]
Definition: scsi.h:2236
UCHAR FirstTrackNumber
Definition: scsi.h:2223
UCHAR Reserved4
Definition: scsi.h:2237
UCHAR Reserved2
Definition: scsi.h:2227
UCHAR DiskIdentification[4]
Definition: scsi.h:2233
UCHAR LastSessionFirstTrack
Definition: scsi.h:2225
UCHAR LastSessionLeadIn[4]
Definition: scsi.h:2234
UCHAR Erasable
Definition: scsi.h:2221
UCHAR LastSessionStatus
Definition: scsi.h:2220
UCHAR DiskType
Definition: scsi.h:2231
OPC_TABLE_ENTRY OPCTable[0]
Definition: scsi.h:2239
FORMATTED_CAPACITY_DESCRIPTOR Descriptors[0]
Definition: scsi.h:2180
UCHAR BlockLength[3]
Definition: scsi.h:2152
UCHAR NumberOfBlocks[4]
Definition: scsi.h:2149
UCHAR FormatSubType
Definition: scsi.h:2150
UCHAR FormatType
Definition: scsi.h:2151
UCHAR VendorSpecific
Definition: scsi.h:2157
UCHAR FormatDescriptorLength[2]
Definition: cdrw_hw.h:1909
FORMAT_DESCRIPTOR Descriptors[0]
Definition: scsi.h:2166
UCHAR Byte0
Definition: tools.h:16
_ANONYMOUS_STRUCT struct _FOUR_BYTE::@2391 DUMMYSTRUCTNAME
UCHAR Byte1
Definition: tools.h:17
UCHAR Byte2
Definition: tools.h:18
UCHAR Byte3
Definition: tools.h:19
ULONG AsULong
Definition: scsi.h:3485
UCHAR Versions
Definition: cdrw_hw.h:1120
UCHAR CommandQueue
Definition: cdrw_hw.h:1125
UCHAR NormACA
Definition: minitape.h:92
UCHAR TransferDisable
Definition: minitape.h:107
UCHAR MultiPort
Definition: minitape.h:101
UCHAR Synchronous
Definition: cdrw_hw.h:1128
UCHAR Addr32
Definition: minitape.h:98
UCHAR Reserved2
Definition: cdrw_hw.h:1126
UCHAR ECMAVersion
Definition: minitape.h:86
UCHAR RemovableMedia
Definition: cdrw_hw.h:1119
UCHAR AERC
Definition: minitape.h:94
UCHAR ProductId[16]
Definition: cdrw_hw.h:1133
UCHAR ReservedBit3
Definition: minitape.h:104
UCHAR LinkedCommands
Definition: cdrw_hw.h:1127
UCHAR ProductRevisionLevel[4]
Definition: cdrw_hw.h:1134
UCHAR DeviceTypeModifier
Definition: cdrw_hw.h:1118
UCHAR TerminateTask
Definition: minitape.h:93
UCHAR AckReqQ
Definition: minitape.h:99
UCHAR ISOVersion
Definition: minitape.h:87
UCHAR EnclosureServices
Definition: minitape.h:103
UCHAR RelativeAddressing
Definition: cdrw_hw.h:1131
UCHAR Wide16Bit
Definition: cdrw_hw.h:1129
UCHAR ReservedBit2
Definition: minitape.h:102
UCHAR Wide32Bit
Definition: cdrw_hw.h:1130
UCHAR VendorId[8]
Definition: cdrw_hw.h:1132
UCHAR ResponseDataFormat
Definition: cdrw_hw.h:1121
UCHAR Reserved[2]
Definition: cdrw_hw.h:1123
UCHAR DeviceType
Definition: cdrw_hw.h:1116
_ANONYMOUS_STRUCT struct _INQUIRYDATA::@2367::@2368 DUMMYSTRUCTNAME
_ANONYMOUS_UNION union _INQUIRYDATA::@2367 DUMMYUNIONNAME
UCHAR DeviceTypeQualifier
Definition: cdrw_hw.h:1117
UCHAR Addr16
Definition: minitape.h:97
UCHAR MediumChanger
Definition: minitape.h:100
UCHAR VendorSpecific[20]
Definition: cdrw_hw.h:1135
UCHAR HiSupport
Definition: minitape.h:91
UCHAR SoftReset
Definition: cdrw_hw.h:1124
UCHAR ANSIVersion
Definition: minitape.h:85
UCHAR AdditionalLength
Definition: cdrw_hw.h:1122
UCHAR Reserved3[40]
Definition: cdrw_hw.h:1136
ULONGLONG StartingLBA
Definition: scsi.h:2819
UCHAR ProvisioningStatus
Definition: scsi.h:2821
ULONG LogicalBlockCount
Definition: scsi.h:2820
UCHAR Reserved2[3]
Definition: scsi.h:2823
LBA_STATUS_DESCRIPTOR Descriptors[0]
Definition: scsi.h:2829
UCHAR SPF
Definition: scsi.h:3393
UCHAR PageCode
Definition: scsi.h:3392
UCHAR DS
Definition: scsi.h:3394
UCHAR SubPageCode
Definition: scsi.h:3395
UCHAR PageLength[2]
Definition: scsi.h:3396
UCHAR ParameterLength
Definition: scsi.h:3331
UCHAR ParameterCode[2]
Definition: scsi.h:3319
UCHAR FormatAndLinking
Definition: scsi.h:3323
LOG_PARAMETER_HEADER Header
Definition: scsi.h:3413
struct _LOG_PARAMETER::@2388::_THRESHOLD_RESOURCE_COUNT THRESHOLD_RESOURCE_COUNT
UCHAR SelfTestNumber
Definition: scsi.h:3358
UCHAR SenseKey
Definition: scsi.h:3361
UCHAR AdditionalSenseCodeQualifier
Definition: scsi.h:3364
UCHAR AsByte[0]
Definition: scsi.h:3338
UCHAR Reserved1
Definition: scsi.h:3343
UCHAR Scope
Definition: scsi.h:3342
UCHAR ScanStatus
Definition: scsi.h:3376
UCHAR SelfTestResults
Definition: scsi.h:3355
UCHAR AdditionalSenseCode
Definition: scsi.h:3363
UCHAR PercentageUsed
Definition: scsi.h:3370
UCHAR Reserved
Definition: scsi.h:3347
UCHAR MostRecentTemperature
Definition: scsi.h:3385
UCHAR Temperature
Definition: scsi.h:3348
UCHAR ASC
Definition: scsi.h:3383
UCHAR ASCQ
Definition: scsi.h:3384
struct _LOG_PARAMETER::@2388::_TEMPERATURE TEMPERATURE
LOG_PARAMETER_HEADER Header
Definition: scsi.h:3335
struct _LOG_PARAMETER::@2388::_SELF_TEST_RESULTS SELF_TEST_RESULTS
struct _LOG_PARAMETER::@2388::_SOLID_STATE_MEDIA SOLID_STATE_MEDIA
UCHAR VendorSpecific
Definition: scsi.h:3365
struct _LOG_PARAMETER::@2388::_BACKGROUND_SCAN_STATUS BACKGROUND_SCAN_STATUS
struct _LOG_PARAMETER::@2388::_DATE_OF_MANUFACTURE DATE_OF_MANUFACTURE
struct _LOG_PARAMETER::@2388::_INFORMATIONAL_EXCEPTIONS INFORMATIONAL_EXCEPTIONS
UCHAR SelfTestCode
Definition: scsi.h:3357
UCHAR LunListLength[4]
Definition: scsi.h:3223
UCHAR Lun[0][8]
Definition: scsi.h:3225
MECHANICAL_STATUS_INFORMATION_HEADER MechanicalStatusHeader
Definition: cdrw_hw.h:3178
SLOT_TABLE_INFORMATION SlotTableInfo[1]
Definition: cdrw_hw.h:3179
UCHAR MultiplicationFactor
Definition: cdrw_hw.h:2778
UCHAR Reserved
Definition: scsi.h:2891
UCHAR WriteCacheEnable
Definition: cdrw_hw.h:2779
UCHAR MinimumPrefetch[2]
Definition: cdrw_hw.h:2786
UCHAR WriteRetensionPriority
Definition: cdrw_hw.h:2782
UCHAR ReadRetensionPriority
Definition: cdrw_hw.h:2783
UCHAR MaximumPrefetchCeiling[2]
Definition: cdrw_hw.h:2788
UCHAR DisablePrefetchTransfer[2]
Definition: cdrw_hw.h:2785
UCHAR ReadDisableCache
Definition: cdrw_hw.h:2777
UCHAR MaximumPrefetch[2]
Definition: cdrw_hw.h:2787
UCHAR Obsolete3[2]
Definition: scsi.h:3457
UCHAR ExtendeSelfTestCompletionTime[2]
Definition: scsi.h:3459
UCHAR AutoloadMode
Definition: scsi.h:3451
UCHAR TMF_ONLY
Definition: scsi.h:3440
UCHAR Obsolete2
Definition: scsi.h:3446
UCHAR Obsolete1
Definition: scsi.h:3442
UCHAR PageLength
Definition: scsi.h:3435
UCHAR BusyTimeoutPeriod[2]
Definition: scsi.h:3458
UCHAR Reserved2
Definition: scsi.h:3452
UCHAR PageSavable
Definition: scsi.h:3434
UCHAR Reserved1
Definition: scsi.h:3433
UCHAR QueueAlgorithmModifier
Definition: scsi.h:3445
UCHAR UA_INTLCK_CTRL
Definition: scsi.h:3448
UCHAR PageCode
Definition: scsi.h:3432
UCHAR BusDisconnectTime[2]
Definition: scsi.h:2882
UCHAR BufferEmptyRatio
Definition: scsi.h:2880
UCHAR DataTransferDisconnect
Definition: scsi.h:2885
UCHAR MaximumBurstSize[2]
Definition: scsi.h:2884
UCHAR Reserved2[3]
Definition: scsi.h:2886
UCHAR BusInactivityLimit[2]
Definition: scsi.h:2881
UCHAR BusConnectTime[2]
Definition: scsi.h:2883
UCHAR BufferFullRatio
Definition: scsi.h:2879
UCHAR StepPlusePerCyclynder
Definition: scsi.h:2967
UCHAR BytesPerSector[2]
Definition: scsi.h:2954
UCHAR TransferRate[2]
Definition: scsi.h:2951
UCHAR HeadSettleDelay[2]
Definition: scsi.h:2960
UCHAR StartWritePrecom[2]
Definition: scsi.h:2956
UCHAR StartReducedCurrent[2]
Definition: scsi.h:2957
UCHAR NumberOfCylinders[2]
Definition: scsi.h:2955
UCHAR MediumRotationRate[2]
Definition: scsi.h:2976
UCHAR SurfaceFirst
Definition: scsi.h:2995
UCHAR HardSectorFormating
Definition: scsi.h:2997
UCHAR PageLength
Definition: scsi.h:2984
UCHAR Reserved2
Definition: scsi.h:2994
UCHAR Interleave[2]
Definition: scsi.h:2991
UCHAR TrackSkewFactor[2]
Definition: scsi.h:2992
UCHAR PageSavable
Definition: scsi.h:2983
UCHAR AlternateSectorsPerZone[2]
Definition: scsi.h:2986
UCHAR Reserved3[3]
Definition: scsi.h:2999
UCHAR BytesPerPhysicalSector[2]
Definition: scsi.h:2990
UCHAR TracksPerZone[2]
Definition: scsi.h:2985
UCHAR CylinderSkewFactor[2]
Definition: scsi.h:2993
UCHAR AlternateTracksPerZone[2]
Definition: scsi.h:2987
UCHAR RemovableMedia
Definition: scsi.h:2996
UCHAR SectorsPerTrack[2]
Definition: scsi.h:2989
UCHAR AlternateTracksPerLogicalUnit[2]
Definition: scsi.h:2988
UCHAR SoftSectorFormating
Definition: scsi.h:2998
UCHAR Reserved
Definition: scsi.h:2982
UCHAR PageCode
Definition: scsi.h:2981
UCHAR ReportCount[4]
Definition: scsi.h:3075
_ANONYMOUS_STRUCT struct _MODE_INFO_EXCEPTIONS::@2377::@2378 DUMMYSTRUCTNAME
_ANONYMOUS_UNION union _MODE_INFO_EXCEPTIONS::@2377 DUMMYUNIONNAME
UCHAR IntervalTimer[4]
Definition: scsi.h:3074
UCHAR PageSavable
Definition: scsi.h:2938
UCHAR Reserved2
Definition: cdrw_hw.h:3189
UCHAR Reserved3[4]
Definition: cdrw_hw.h:3195
UCHAR PageCode
Definition: cdrw_hw.h:3183
UCHAR Reserved1
Definition: cdrw_hw.h:3184
UCHAR Reserved
Definition: scsi.h:2937
UCHAR PageLength
Definition: cdrw_hw.h:3187
UCHAR LbaSpace
Definition: scsi.h:2941
UCHAR BlockLength[3]
Definition: cdrw_hw.h:2531
UCHAR NumberOfBlocks[3]
Definition: cdrw_hw.h:2529
UCHAR BlockDescriptorLength[2]
Definition: cdrw_hw.h:2516
UCHAR DeviceSpecificParameter
Definition: cdrw_hw.h:2507
MODE_PARAMETER_HEADER ParameterListHeader
Definition: cdrw_hw.h:2536
MODE_PARAMETER_BLOCK ParameterListBlock
Definition: cdrw_hw.h:2537
UCHAR NumberOfCylinders[3]
Definition: scsi.h:3007
UCHAR StartWritePrecom[3]
Definition: scsi.h:3009
UCHAR DriveStepRate[2]
Definition: scsi.h:3011
UCHAR RotationalPositionLock
Definition: scsi.h:3013
UCHAR StartReducedCurrent[3]
Definition: scsi.h:3010
UCHAR LandZoneCyclinder[3]
Definition: scsi.h:3012
_ANONYMOUS_STRUCT struct _NOTIFICATION_MEDIA_STATUS::@2360::@2361 DUMMYSTRUCTNAME
_ANONYMOUS_UNION union _NOTIFICATION_MEDIA_STATUS::@2360 DUMMYUNIONNAME
Definition: scsi.h:2183
UCHAR OPCValue[6]
Definition: scsi.h:2185
UCHAR Speed[2]
Definition: scsi.h:2184
UCHAR WriteRotationControl
Definition: scsi.h:2339
UCHAR WriteSize[4]
Definition: scsi.h:2346
UCHAR WriteTime[4]
Definition: scsi.h:2347
UCHAR ChannelSelection
Definition: scsi.h:3234
UCHAR Volume
Definition: scsi.h:3235
UCHAR StandbyTimer[4]
Definition: scsi.h:3088
UCHAR IdleTimer[4]
Definition: scsi.h:3087
UCHAR ReservationKeyList[0][8]
Definition: scsi.h:2685
UCHAR AdditionalLength[4]
Definition: scsi.h:2684
UCHAR Generation[4]
Definition: scsi.h:2683
UCHAR ScopeSpecificAddress[4]
Definition: scsi.h:2690
UCHAR Generation[4]
Definition: scsi.h:2698
UCHAR AdditionalLength[4]
Definition: scsi.h:2699
PRI_RESERVATION_DESCRIPTOR Reservations[0]
Definition: scsi.h:2700
UCHAR ReservationKey[8]
Definition: scsi.h:2704
UCHAR ActivatePersistThroughPowerLoss
Definition: scsi.h:2707
UCHAR Obsolete[2]
Definition: scsi.h:2710
UCHAR ServiceActionReservationKey[8]
Definition: scsi.h:2705
UCHAR ScopeSpecificAddress[4]
Definition: scsi.h:2706
UCHAR BlockMinimumSize[2]
Definition: scsi.h:2840
UCHAR BlockMaximumSize[3]
Definition: scsi.h:2839
UCHAR Reserved
Definition: scsi.h:2838
UCHAR TotalBufferSize[4]
Definition: scsi.h:2848
UCHAR AvailableBufferSize[4]
Definition: scsi.h:2849
UCHAR ProtectionInfoExponent
Definition: scsi.h:2810
UCHAR ProtectionType
Definition: scsi.h:2806
UCHAR LogicalPerPhysicalExponent
Definition: scsi.h:2809
UCHAR Reserved3[16]
Definition: scsi.h:2815
UCHAR LowestAlignedBlock_MSB
Definition: scsi.h:2811
UCHAR LowestAlignedBlock_LSB
Definition: scsi.h:2814
UCHAR ProtectionEnable
Definition: scsi.h:2805
LARGE_INTEGER LogicalBlockAddress
Definition: scsi.h:2803
LARGE_INTEGER LogicalBlockAddress
Definition: scsi.h:2795
ULONG LogicalBlockAddress
Definition: cdrw_hw.h:1471
union _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS ExtendedArguments
SCSI_SENSE_DESCRIPTOR_HEADER Header
Definition: scsi.h:2753
SCSI_SENSE_DESCRIPTOR_HEADER Header
Definition: scsi.h:2745
SCSI_SENSE_DESCRIPTOR_HEADER Header
Definition: scsi.h:2737
UCHAR AdditionalSenseLength
Definition: cdrw_hw.h:1173
UCHAR AdditionalSenseCode
Definition: cdrw_hw.h:1175
UCHAR Reserved
Definition: cdrw_hw.h:1168
UCHAR FileMark
Definition: cdrw_hw.h:1171
UCHAR FieldReplaceableUnitCode
Definition: cdrw_hw.h:1177
UCHAR SenseKeySpecific[3]
Definition: cdrw_hw.h:1178
UCHAR ErrorCode
Definition: cdrw_hw.h:1164
UCHAR AdditionalSenseCodeQualifier
Definition: cdrw_hw.h:1176
UCHAR EndOfMedia
Definition: cdrw_hw.h:1170
UCHAR SegmentNumber
Definition: cdrw_hw.h:1166
UCHAR IncorrectLength
Definition: cdrw_hw.h:1169
UCHAR SenseKey
Definition: cdrw_hw.h:1167
UCHAR Valid
Definition: cdrw_hw.h:1165
UCHAR CommandSpecificInformation[4]
Definition: cdrw_hw.h:1174
ULONG AddressLength
Definition: scsi.h:3566
USHORT Port
Definition: scsi.h:3565
USHORT Type
Definition: scsi.h:3564
_Field_size_bytes_(AddressLength) UCHAR AddressData[ANYSIZE_ARRAY]
UCHAR Lun
Definition: scsi.h:3584
USHORT Port
Definition: scsi.h:3579
UCHAR Target
Definition: scsi.h:3583
_Field_range_(STOR_ADDRESS_TYPE_BTL8, STOR_ADDRESS_TYPE_BTL8) USHORT Type
UCHAR Path
Definition: scsi.h:3582
_Field_range_(STOR_ADDR_BTL8_ADDRESS_LENGTH, STOR_ADDR_BTL8_ADDRESS_LENGTH) ULONG AddressLength
UCHAR Reserved
Definition: scsi.h:3585
UCHAR NumberOfBytes[4]
Definition: scsi.h:3285
UCHAR PartitionNumber
Definition: scsi.h:3279
UCHAR EndOfPartition
Definition: scsi.h:3277
UCHAR BeginningOfPartition
Definition: scsi.h:3278
UCHAR LastBlock[4]
Definition: scsi.h:3282
UCHAR BlockPositionUnsupported
Definition: scsi.h:3275
UCHAR NumberOfBlocks[3]
Definition: scsi.h:3284
UCHAR FirstBlock[4]
Definition: scsi.h:3281
USHORT Reserved3
Definition: scsi.h:3280
UCHAR TrackSize[4]
Definition: scsi.h:2299
UCHAR TrackNumberLsb
Definition: scsi.h:2280
UCHAR Reserved7[2]
Definition: scsi.h:2303
UCHAR LastRecordedAddress[4]
Definition: scsi.h:2300
UCHAR TrackStartAddress[4]
Definition: scsi.h:2295
UCHAR TrackNumberMsb
Definition: scsi.h:2301
UCHAR FixedPacket
Definition: scsi.h:2288
UCHAR NextWritableAddress[4]
Definition: scsi.h:2296
UCHAR SessionNumberLsb
Definition: scsi.h:2281
UCHAR ReservedTrack
Definition: scsi.h:2291
UCHAR FreeBlocks[4]
Definition: scsi.h:2297
UCHAR SessionNumberMsb
Definition: scsi.h:2302
UCHAR FixedPacketSize[4]
Definition: scsi.h:2298
UCHAR FixedPacketSize[4]
Definition: scsi.h:2326
UCHAR SessionNumberLsb
Definition: scsi.h:2309
UCHAR TrackNumberLsb
Definition: scsi.h:2308
UCHAR TrackNumberMsb
Definition: scsi.h:2329
UCHAR FreeBlocks[4]
Definition: scsi.h:2325
UCHAR TrackStartAddress[4]
Definition: scsi.h:2323
UCHAR SessionNumberMsb
Definition: scsi.h:2330
UCHAR FixedPacket
Definition: scsi.h:2316
UCHAR NextWritableAddress[4]
Definition: scsi.h:2324
UCHAR ReadCompatibilityLba[4]
Definition: scsi.h:2332
UCHAR Reserved7[2]
Definition: scsi.h:2331
UCHAR LastRecordedAddress[4]
Definition: scsi.h:2328
UCHAR ReservedTrack
Definition: scsi.h:2319
UCHAR TrackSize[4]
Definition: scsi.h:2327
UCHAR FreeBlocks[4]
Definition: scsi.h:2274
UCHAR DataMode
Definition: scsi.h:2265
UCHAR FixedPacketSize[4]
Definition: scsi.h:2275
UCHAR SessionNumber
Definition: scsi.h:2259
UCHAR Reserved3
Definition: scsi.h:2271
UCHAR NextWritableAddress[4]
Definition: scsi.h:2273
UCHAR Reserved1
Definition: scsi.h:2260
UCHAR Reserved2
Definition: scsi.h:2264
UCHAR TrackMode
Definition: scsi.h:2261
UCHAR TrackNumber
Definition: scsi.h:2258
UCHAR TrackStartAddress[4]
Definition: scsi.h:2272
UCHAR StartingLba[8]
Definition: scsi.h:3290
UCHAR DataLength[2]
Definition: scsi.h:3296
UCHAR BlockDescrDataLength[2]
Definition: scsi.h:3297
UNMAP_BLOCK_DESCRIPTOR Descriptors[0]
Definition: scsi.h:3300
UCHAR ProductRevisionLevel[4]
Definition: scsi.h:2540
UCHAR IdentifyDeviceData[512]
Definition: scsi.h:2544
UCHAR DeviceSignature[20]
Definition: scsi.h:2541
UCHAR MaximumTransferLength[4]
Definition: scsi.h:2583
UCHAR UnmapGranularityAlignmentByte2
Definition: scsi.h:2593
UCHAR OptimalUnmapGranularity[4]
Definition: scsi.h:2588
UCHAR OptimalTransferLengthGranularity[2]
Definition: scsi.h:2582
UCHAR MaximumUnmapLBACount[4]
Definition: scsi.h:2586
UCHAR Descriptors[0]
Definition: scsi.h:2602
UCHAR Reserved1[28]
Definition: scsi.h:2599
UCHAR UnmapGranularityAlignmentByte3
Definition: scsi.h:2591
UCHAR OptimalTransferLength[4]
Definition: scsi.h:2584
UCHAR MaximumUnmapBlockDescriptorCount[4]
Definition: scsi.h:2587
UCHAR DeviceTypeQualifier
Definition: scsi.h:2575
UCHAR UnmapGranularityAlignmentByte1
Definition: scsi.h:2594
UCHAR MaximumCompareAndWriteLength
Definition: scsi.h:2581
UCHAR PageLength[2]
Definition: scsi.h:2577
UCHAR MaxPrefetchXDReadXDWriteTransferLength[4]
Definition: scsi.h:2585
UCHAR UnmapGranularityAlignmentByte0
Definition: scsi.h:2595
UCHAR UnmapGranularityAlignment[4]
Definition: scsi.h:2597
UCHAR Descriptors[0]
Definition: scsi.h:2529
UCHAR DeviceTypeQualifier
Definition: scsi.h:2478
UCHAR SerialNumber[0]
Definition: scsi.h:2482
UCHAR SupportedPageList[0]
Definition: scsi.h:2679
UCHAR ThirdPartyCopyDescriptors[ANYSIZE_ARRAY]
Definition: scsi.h:2554
UCHAR OptimalNumberOfNonSequentiallyWrittenSequentialWritePreferredZone[4]
Definition: scsi.h:2668
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
void * PVOID
Definition: typedefs.h:50
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:262
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
Definition: cdrw_hw.h:28
struct _CDB::_CDB10 CDB10
struct _CDB::_READ_BUFFER_CAPACITY READ_BUFFER_CAPACITY
struct _CDB::_REPORT_KEY * PREPORT_KEY
struct _CDB::_LOCATE * PLOCATE
struct _CDB::_PERSISTENT_RESERVE_OUT PERSISTENT_RESERVE_OUT
struct _CDB::_READ_HEADER * PREAD_HEADER
struct _CDB::_MEDIA_REMOVAL MEDIA_REMOVAL
struct _CDB::_CDB6READWRITETAPE * PCDB6READWRITETAPE
struct _CDB::_PRINT * PPRINT
struct _CDB::_SYNCHRONIZE_CACHE10 * PSYNCHRONIZE_CACHE10
struct _CDB::_CDB12 * PCDB12
struct _CDB::_BLANK_MEDIA * PBLANK_MEDIA
struct _CDB::_INITIALIZE_ELEMENT_RANGE * PINITIALIZE_ELEMENT_RANGE
struct _CDB::_READ_TOC * PREAD_TOC
struct _CDB::_SET_READ_AHEAD * PSET_READ_AHEAD
struct _CDB::_PLAY_AUDIO_MSF * PPLAY_AUDIO_MSF
struct _CDB::_PERSISTENT_RESERVE_IN PERSISTENT_RESERVE_IN
struct _CDB::_SCAN_CD * PSCAN_CD
struct _CDB::_READ_HEADER READ_HEADER
struct _CDB::_SUBCHANNEL SUBCHANNEL
struct _CDB::_PLAY_CD PLAY_CD
struct _CDB::_SUBCHANNEL * PSUBCHANNEL
struct _CDB::_READ_FORMATTED_CAPACITIES * PREAD_FORMATTED_CAPACITIES
struct _CDB::_PAUSE_RESUME * PPAUSE_RESUME
struct _CDB::_REPORT_LUNS * PREPORT_LUNS
struct _CDB::_READ_TRACK_INFORMATION READ_TRACK_INFORMATION
struct _CDB::_READ_CAPACITY16 READ_CAPACITY16
struct _CDB::_READ_DISK_INFORMATION * PREAD_DISK_INFORMATION
struct _CDB::_MODE_SELECT MODE_SELECT
struct _CDB::_LOGSELECT LOGSELECT
UCHAR AsByte[16]
Definition: scsi.h:2034
struct _CDB::_INITIALIZE_ELEMENT_RANGE INITIALIZE_ELEMENT_RANGE
struct _CDB::_LOGSELECT * PLOGSELECT
struct _CDB::_CDB6VERIFY * PCDB6VERIFY
struct _CDB::_READ_ELEMENT_STATUS * PREAD_ELEMENT_STATUS
struct _CDB::_MECH_STATUS MECH_STATUS
struct _CDB::_SEND_KEY * PSEND_KEY
struct _CDB::_CDB10 * PCDB10
struct _CDB::_REPAIR_TRACK * PREPAIR_TRACK
struct _CDB::_CDB6INQUIRY3 CDB6INQUIRY3
struct _CDB::_POSITION_TO_ELEMENT * PPOSITION_TO_ELEMENT
struct _CDB::_WRITE_TAPE_MARKS WRITE_TAPE_MARKS
struct _CDB::_SEND_CUE_SHEET * PSEND_CUE_SHEET
struct _CDB::_CDB6GENERIC CDB6GENERIC
struct _CDB::_READ_DVD_STRUCTURE READ_DVD_STRUCTURE
struct _CDB::_RESERVE_TRACK_RZONE RESERVE_TRACK_RZONE
struct _CDB::_TOKEN_OPERATION TOKEN_OPERATION
struct _CDB::_CDB6VERIFY CDB6VERIFY
struct _CDB::_UNMAP UNMAP
struct _CDB::_GET_EVENT_STATUS_NOTIFICATION GET_EVENT_STATUS_NOTIFICATION
struct _CDB::_READ_BUFFER_CAPACITY * PREAD_BUFFER_CAPACITY
struct _CDB::_SEND_DVD_STRUCTURE SEND_DVD_STRUCTURE
struct _CDB::_SEEK_BLOCK * PSEEK_BLOCK
struct _CDB::_ERASE * PERASE
struct _CDB::_PARTITION PARTITION
struct _CDB::_MODE_SENSE10 MODE_SENSE10
struct _CDB::_LOCATE LOCATE
struct _CDB::_NEC_READ_CDDA NEC_READ_CDDA
struct _CDB::_LOGSENSE LOGSENSE
struct _CDB::_SEND_OPC_INFORMATION SEND_OPC_INFORMATION
struct _CDB::_READ_CD READ_CD
struct _CDB::_EXCHANGE_MEDIUM EXCHANGE_MEDIUM
struct _CDB::_READ_POSITION * PREAD_POSITION
struct _CDB::_SET_READ_AHEAD SET_READ_AHEAD
struct _CDB::_CDB16 * PCDB16
struct _CDB::_CDB12 CDB12
struct _CDB::_SEND_KEY SEND_KEY
struct _CDB::_ERASE ERASE
struct _CDB::_REQUEST_BLOCK_ADDRESS * PREQUEST_BLOCK_ADDRESS
struct _CDB::_LOGSENSE * PLOGSENSE
struct _CDB::_VERIFY16 VERIFY16
struct _CDB::_READ_DVD_STRUCTURE * PREAD_DVD_STRUCTURE
struct _CDB::_WRITE16 WRITE16
struct _CDB::_PLXTR_READ_CDDA PLXTR_READ_CDDA
struct _CDB::_PRINT PRINT
struct _CDB::_ATA_PASSTHROUGH16 ATA_PASSTHROUGH16
struct _CDB::_READ_CD * PREAD_CD
struct _CDB::_MECH_STATUS * PMECH_STATUS
struct _CDB::_CDB6READWRITE * PCDB6READWRITE
struct _CDB::_STOP_PLAY_SCAN STOP_PLAY_SCAN
struct _CDB::_LOAD_UNLOAD LOAD_UNLOAD
struct _CDB::_REQUEST_VOLUME_ELEMENT_ADDRESS REQUEST_VOLUME_ELEMENT_ADDRESS
struct _CDB::_READ16 READ16
struct _CDB::_CDB6INQUIRY CDB6INQUIRY
struct _CDB::_CDB6FORMAT * PCDB6FORMAT
struct _CDB::_READ_TRACK_INFORMATION * PREAD_TRACK_INFORMATION
struct _CDB::_NEC_READ_CDDA * PNEC_READ_CDDA
struct _CDB::_SEND_VOLUME_TAG SEND_VOLUME_TAG
struct _CDB::_RESERVE_TRACK_RZONE * PRESERVE_TRACK_RZONE
struct _CDB::_GET_CONFIGURATION GET_CONFIGURATION
struct _CDB::_MODE_SENSE * PMODE_SENSE
struct _CDB::_PERSISTENT_RESERVE_IN * PPERSISTENT_RESERVE_IN
struct _CDB::_GET_EVENT_STATUS_NOTIFICATION * PGET_EVENT_STATUS_NOTIFICATION
struct _CDB::_LOAD_UNLOAD * PLOAD_UNLOAD
struct _CDB::_CDB6GENERIC * PCDB6GENERIC
struct _CDB::_CDB6INQUIRY3 * PCDB6INQUIRY3
struct _CDB::_PARTITION * PPARTITION
struct _CDB::_MODE_SENSE10 * PMODE_SENSE10
struct _CDB::_GET_LBA_STATUS GET_LBA_STATUS
struct _CDB::_SET_CD_SPEED * PSET_CD_SPEED
struct _CDB::_SEND_OPC_INFORMATION * PSEND_OPC_INFORMATION
struct _CDB::_CDB6FORMAT CDB6FORMAT
struct _CDB::_READ_FORMATTED_CAPACITIES READ_FORMATTED_CAPACITIES
ULONG AsUlong[4]
Definition: scsi.h:2033
struct _CDB::_PLAY_CD * PPLAY_CD
struct _CDB::_READ_DISK_INFORMATION READ_DISK_INFORMATION
struct _CDB::_READ12 READ12
struct _CDB::_STOP_PLAY_SCAN * PSTOP_PLAY_SCAN
struct _CDB::_START_STOP START_STOP
struct _CDB::_START_STOP * PSTART_STOP
struct _CDB::_SEEK_BLOCK SEEK_BLOCK
struct _CDB::_SET_CD_SPEED SET_CD_SPEED
struct _CDB::_CDB6READWRITETAPE CDB6READWRITETAPE
struct _CDB::_SEND_CUE_SHEET SEND_CUE_SHEET
struct _CDB::_CLOSE_TRACK CLOSE_TRACK
struct _CDB::_REPORT_KEY REPORT_KEY
struct _CDB::_MODE_SELECT * PMODE_SELECT
struct _CDB::_INIT_ELEMENT_STATUS INIT_ELEMENT_STATUS
struct _CDB::_SEND_VOLUME_TAG * PSEND_VOLUME_TAG
struct _CDB::_READ_CD_MSF READ_CD_MSF
struct _CDB::_MOVE_MEDIUM * PMOVE_MEDIUM
struct _CDB::_SPACE_TAPE_MARKS SPACE_TAPE_MARKS
struct _CDB::_MODE_SELECT10 MODE_SELECT10
struct _CDB::_PAUSE_RESUME PAUSE_RESUME
struct _CDB::_MODE_SENSE MODE_SENSE
struct _CDB::_SYNCHRONIZE_CACHE16 SYNCHRONIZE_CACHE16
struct _CDB::_PLAY_AUDIO * PPLAY_AUDIO
struct _CDB::_PLAY_AUDIO PLAY_AUDIO
struct _CDB::_CLOSE_TRACK * PCLOSE_TRACK
struct _CDB::_CDB6INQUIRY * PCDB6INQUIRY
struct _CDB::_WRITE_TAPE_MARKS * PWRITE_TAPE_MARKS
struct _CDB::_WRITE12 WRITE12
struct _CDB::_SCAN_CD SCAN_CD
struct _CDB::_MODE_SELECT10 * PMODE_SELECT10
struct _CDB::_RECEIVE_TOKEN_INFORMATION RECEIVE_TOKEN_INFORMATION
struct _CDB::_READ_POSITION READ_POSITION
struct _CDB::_SEEK SEEK
struct _CDB::_BLANK_MEDIA BLANK_MEDIA
struct _CDB::_PERSISTENT_RESERVE_OUT * PPERSISTENT_RESERVE_OUT
struct _CDB::_REQUEST_BLOCK_ADDRESS REQUEST_BLOCK_ADDRESS
struct _CDB::_REQUEST_VOLUME_ELEMENT_ADDRESS * PREQUEST_VOLUME_ELEMENT_ADDRESS
struct _CDB::_REPORT_LUNS REPORT_LUNS
struct _CDB::_CDB16 CDB16
struct _CDB::_MOVE_MEDIUM MOVE_MEDIUM
struct _CDB::_PLAY_AUDIO_MSF PLAY_AUDIO_MSF
struct _CDB::_GET_PERFORMANCE GET_PERFORMANCE
struct _CDB::_EXCHANGE_MEDIUM * PEXCHANGE_MEDIUM
struct _CDB::_SPACE_TAPE_MARKS * PSPACE_TAPE_MARKS
struct _CDB::_POSITION_TO_ELEMENT POSITION_TO_ELEMENT
struct _CDB::_ATA_PASSTHROUGH12 ATA_PASSTHROUGH12
struct _CDB::_SEEK * PSEEK
struct _CDB::_READ_CD_MSF * PREAD_CD_MSF
struct _CDB::_SEND_DVD_STRUCTURE * PSEND_DVD_STRUCTURE
struct _CDB::_READ_ELEMENT_STATUS READ_ELEMENT_STATUS
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
struct _CDB::_PLXTR_READ_CDDA * PPLXTR_READ_CDDA
struct _CDB::_CDB6READWRITE CDB6READWRITE
struct _CDB::_SET_STREAMING SET_STREAMING
struct _CDB::_READ_TOC READ_TOC
struct _CDB::_INIT_ELEMENT_STATUS * PINIT_ELEMENT_STATUS
struct _CDB::_MEDIA_REMOVAL * PMEDIA_REMOVAL
struct _CDB::_GET_CONFIGURATION * PGET_CONFIGURATION
struct _CDB::_REPAIR_TRACK REPAIR_TRACK
UCHAR Byte2
Definition: scsi.h:3468
ULONGLONG AsULongLong
Definition: scsi.h:3475
UCHAR Byte0
Definition: scsi.h:3466
UCHAR Byte5
Definition: scsi.h:3471
UCHAR Byte7
Definition: scsi.h:3473
UCHAR Byte1
Definition: scsi.h:3467
UCHAR Byte3
Definition: scsi.h:3469
UCHAR Byte6
Definition: scsi.h:3472
UCHAR Byte4
Definition: scsi.h:3470
_ANONYMOUS_STRUCT struct _EIGHT_BYTE::@2390 DUMMYSTRUCTNAME
struct _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS::@918 Synchronous
struct _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS::@919 Wide
struct _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS::@917 Modify
FIXED_SENSE_DATA FixedData
Definition: scsi.h:2784
DESCRIPTOR_SENSE_DATA DescriptorData
Definition: scsi.h:2785
UCHAR Byte0
Definition: scsi.h:3490
USHORT AsUShort
Definition: scsi.h:3493
_ANONYMOUS_STRUCT struct _TWO_BYTE::@2392 DUMMYSTRUCTNAME
UCHAR Byte1
Definition: scsi.h:3491
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3540
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3777
_In_ WDFREQUEST Request
Definition: wdfdevice.h:547
_In_ WDFINTERRUPT _In_ WDF_INTERRUPT_POLICY _In_ WDF_INTERRUPT_PRIORITY Priority
Definition: wdfinterrupt.h:655
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
Definition: wdfrequest.h:1049
#define FORCEINLINE
Definition: wdftypes.h:67
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
unsigned char UCHAR
Definition: xmlstorage.h:181