ReactOS 0.4.16-dev-401-g45b008d
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 {
1889 struct _READ16 {
1901 struct _WRITE16 {
1913 struct _VERIFY16 {
1968 struct _UNMAP {
1990
1999
2008
2015
2024
2028 _ANONYMOUS_UNION union {
2031 _ANONYMOUS_STRUCT struct {
2040
2049
2056
2062
2063typedef struct _CDVD_KEY_HEADER {
2064 UCHAR DataLength[2];
2065 UCHAR Reserved[2];
2068
2069typedef struct _CDVD_REPORT_AGID_DATA {
2070 UCHAR Reserved1[3];
2071 UCHAR Reserved2:6;
2072 UCHAR AGID:2;
2074
2075typedef struct _CDVD_CHALLENGE_KEY_DATA {
2077 UCHAR Reserved[2];
2079
2080typedef struct _CDVD_KEY_DATA {
2081 UCHAR Key[5];
2082 UCHAR Reserved[3];
2084
2085typedef struct _CDVD_REPORT_ASF_DATA {
2086 UCHAR Reserved1[3];
2087 UCHAR Success:1;
2088 UCHAR Reserved2:7;
2090
2091typedef struct _CDVD_TITLE_KEY_HEADER {
2092 UCHAR DataLength[2];
2093 UCHAR Reserved1[1];
2094 UCHAR Reserved2:3;
2095 UCHAR CGMS:2;
2096 UCHAR CP_SEC:1;
2097 UCHAR CPM:1;
2098 UCHAR Zero:1;
2101
2102typedef struct _FORMAT_DESCRIPTOR {
2108
2109typedef struct _FORMAT_LIST_HEADER {
2114 UCHAR IP:1;
2115 UCHAR STPF:1;
2116 UCHAR DCRT:1;
2117 UCHAR DPRY:1;
2118 UCHAR FOV:1;
2122
2130
2136
2137typedef struct _OPC_TABLE_ENTRY {
2141
2142typedef struct _DISC_INFORMATION {
2170
2171typedef struct _DISK_INFORMATION {
2195
2196typedef struct _DATA_BLOCK_HEADER {
2199 _ANONYMOUS_UNION union {
2201 struct {
2209
2210typedef struct _TRACK_INFORMATION {
2231
2232typedef struct _TRACK_INFORMATION2 {
2259
2260typedef struct _TRACK_INFORMATION3 {
2288
2303
2304typedef struct _SCSI_EXTENDED_MESSAGE {
2308 union _EXTENDED_ARGUMENTS {
2309 struct {
2310 UCHAR Modifier[4];
2312 struct {
2316 struct{
2317 UCHAR Width;
2321
2322#ifndef _INQUIRYDATA_DEFINED /* also in minitape.h */
2323#define _INQUIRYDATA_DEFINED
2324
2325#define INQUIRYDATABUFFERSIZE 36
2326
2327#if (NTDDI_VERSION < NTDDI_WINXP)
2328typedef struct _INQUIRYDATA {
2329 UCHAR DeviceType:5;
2335 UCHAR HiSupport:1;
2336 UCHAR NormACA:1;
2337 UCHAR ReservedBit:1;
2338 UCHAR AERC:1;
2340 UCHAR Reserved[2];
2341 UCHAR SoftReset:1;
2343 UCHAR Reserved2:1;
2346 UCHAR Wide16Bit:1;
2347 UCHAR Wide32Bit:1;
2349 UCHAR VendorId[8];
2350 UCHAR ProductId[16];
2353 UCHAR Reserved3[40];
2355#else
2356typedef struct _INQUIRYDATA {
2357 UCHAR DeviceType:5;
2361 _ANONYMOUS_UNION union {
2363 _ANONYMOUS_STRUCT struct {
2366 UCHAR ISOVersion:2;
2370 UCHAR HiSupport:1;
2371 UCHAR NormACA:1;
2373 UCHAR AERC:1;
2376 UCHAR Addr16:1;
2377 UCHAR Addr32:1;
2378 UCHAR AckReqQ:1;
2380 UCHAR MultiPort:1;
2384 UCHAR SoftReset:1;
2389 UCHAR Wide16Bit:1;
2390 UCHAR Wide32Bit:1;
2392 UCHAR VendorId[8];
2393 UCHAR ProductId[16];
2396 UCHAR Reserved3[40];
2398#endif /* (NTDDI_VERSION < NTDDI_WINXP) */
2399
2400#endif /* _INQUIRYDATA_DEFINED */
2401
2402#define VPD_MAX_BUFFER_SIZE 0xff
2403
2404#define VPD_SUPPORTED_PAGES 0x00
2405#define VPD_SERIAL_NUMBER 0x80
2406#define VPD_DEVICE_IDENTIFIERS 0x83
2407#define VPD_MEDIA_SERIAL_NUMBER 0x84
2408#define VPD_SOFTWARE_INTERFACE_IDENTIFIERS 0x84
2409#define VPD_NETWORK_MANAGEMENT_ADDRESSES 0x85
2410#define VPD_EXTENDED_INQUIRY_DATA 0x86
2411#define VPD_MODE_PAGE_POLICY 0x87
2412#define VPD_SCSI_PORTS 0x88
2413#define VPD_ATA_INFORMATION 0x89
2414
2415#define VPD_THIRD_PARTY_COPY 0x8F
2416#define VPD_BLOCK_LIMITS 0xB0
2417#define VPD_BLOCK_DEVICE_CHARACTERISTICS 0xB1
2418#define VPD_LOGICAL_BLOCK_PROVISIONING 0xB2
2419#define VPD_ZONED_BLOCK_DEVICE_CHARACTERISTICS 0xB6
2420
2429
2438
2439typedef enum _VPD_CODE_SET {
2443 VpdCodeSetUTF8 = 3
2445
2446typedef enum _VPD_ASSOCIATION {
2453
2465
2476
2485
2500
2501#if (NTDDI_VERSION >= NTDDI_WIN8)
2507#if !defined(__midl)
2509#endif
2511
2522
2523#define BLOCK_DEVICE_TOKEN_LIMITS_DESCRIPTOR_TYPE_WINDOWS 0x00
2524
2525#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
2526
2532 union {
2533 struct {
2543 union {
2544 struct {
2550 };
2552 };
2554 };
2555#if !defined(__midl)
2557#endif
2558 };
2560
2561#define ZONED_CAPABILITIES_NOT_REPORTED 0x0
2562#define ZONED_CAPABILITIES_HOST_AWARE 0x1
2563#define ZONED_CAPABILITIES_DEVICE_MANAGED 0x2
2564
2587
2588#define PROVISIONING_TYPE_UNKNOWN 0x0
2589#define PROVISIONING_TYPE_RESOURCE 0x1
2590#define PROVISIONING_TYPE_THIN 0x2
2591
2608#if !defined(__midl)
2610#endif
2612
2626
2635
2641
2650
2656
2657typedef struct _PRO_PARAMETER_LIST {
2666
2667typedef struct _SENSE_DATA {
2668 UCHAR ErrorCode:7;
2669 UCHAR Valid:1;
2671 UCHAR SenseKey:4;
2672 UCHAR Reserved:1;
2674 UCHAR EndOfMedia:1;
2675 UCHAR FileMark:1;
2676 UCHAR Information[4];
2684
2689
2697
2705
2722
2724
2736
2737typedef union _SENSE_DATA_EX {
2741
2742/* Read Capacity Data. Returned in Big Endian format */
2743typedef struct _READ_CAPACITY_DATA {
2747
2752
2753#define RC_BASIS_LAST_LBA_NOT_SEQUENTIAL_WRITE_REQUIRED_ZONES 0x0
2754#define RC_BASIS_LAST_LBA_ON_LOGICAL_UNIT 0x1
2755
2756typedef struct _READ_CAPACITY16_DATA {
2762 UCHAR Reserved:2;
2771
2779
2785
2786#define LBA_STATUS_MAPPED 0x0
2787#define LBA_STATUS_DEALLOCATED 0x1
2788#define LBA_STATUS_ANCHORED 0x2
2789
2790/* Read Block Limits Data. Returned in Big Endian format */
2791typedef struct _READ_BLOCK_LIMITS {
2796
2805
2806typedef struct _MODE_PARAMETER_HEADER {
2812
2813typedef struct _MODE_PARAMETER_HEADER10 {
2817 UCHAR Reserved[2];
2820
2821typedef struct _MODE_PARAMETER_BLOCK {
2825 UCHAR BlockLength[3];
2827
2842
2843typedef struct _MODE_CACHING_PAGE {
2844 UCHAR PageCode:6;
2851 UCHAR Reserved2:5;
2859
2888
2889typedef struct _MODE_MRW_PAGE {
2890 UCHAR PageCode:6;
2896 UCHAR Reserved2:7;
2897 UCHAR Reserved3[4];
2899
2933
2934typedef struct _MODE_FORMAT_PAGE {
2955
2974
2975typedef struct _MODE_READ_WRITE_RECOVERY_PAGE {
2976 UCHAR PageCode:6;
2977 UCHAR Reserved1:1;
2978 UCHAR PSBit:1;
2980 UCHAR DCRBit:1;
2981 UCHAR DTEBit:1;
2982 UCHAR PERBit:1;
2983 UCHAR EERBit:1;
2984 UCHAR RCBit:1;
2985 UCHAR TBBit:1;
2986 UCHAR ARRE:1;
2987 UCHAR AWRE:1;
2989 UCHAR Reserved4[4];
2991 UCHAR Reserved5[3];
2993
2994typedef struct _MODE_READ_RECOVERY_PAGE {
2995 UCHAR PageCode:6;
2996 UCHAR Reserved1:1;
2997 UCHAR PSBit:1;
2999 UCHAR DCRBit:1;
3000 UCHAR DTEBit:1;
3001 UCHAR PERBit:1;
3002 UCHAR Reserved2:1;
3003 UCHAR RCBit:1;
3004 UCHAR TBBit:1;
3005 UCHAR Reserved3:2;
3007 UCHAR Reserved4[4];
3009
3015 _ANONYMOUS_UNION union {
3017 _ANONYMOUS_STRUCT struct {
3031
3044
3045typedef struct _CDDA_OUTPUT_PORT {
3050
3064
3082
3096
3145 _ANONYMOUS_UNION union {
3151 _ANONYMOUS_UNION union {
3162 _ANONYMOUS_UNION union {
3166 _ANONYMOUS_UNION union {
3170 _ANONYMOUS_UNION union {
3175
3176typedef struct _LUN_LIST {
3179 UCHAR Lun[0][8];
3181
3182typedef struct _MODE_PARM_READ_WRITE {
3186
3187typedef struct _PORT_OUTPUT {
3191
3192typedef struct _AUDIO_OUTPUT {
3201
3202/* Atapi 2.5 changers */
3206 UCHAR Fault:1;
3207 UCHAR Reserved:5;
3213
3214typedef struct _SLOT_TABLE_INFORMATION {
3216 UCHAR Reserved:6;
3218 UCHAR Reserved2[3];
3220
3221typedef struct _MECHANICAL_STATUS {
3225
3226/* Tape definitions */
3227typedef struct _TAPE_POSITION_DATA {
3241
3242#include <pshpack1.h>
3248
3249typedef struct _UNMAP_LIST_HEADER {
3253#if !defined(__midl)
3255#endif
3257#include <poppack.h>
3258
3259#define LOG_PAGE_CODE_SUPPORTED_LOG_PAGES 0x00
3260#define LOG_PAGE_CODE_WRITE_ERROR_COUNTERS 0x02
3261#define LOG_PAGE_CODE_READ_ERROR_COUNTERS 0x03
3262#define LOG_PAGE_CODE_LOGICAL_BLOCK_PROVISIONING 0x0C
3263#define LOG_PAGE_CODE_TEMPERATURE 0x0D
3264#define LOG_PAGE_CODE_STARTSTOP_CYCLE_COUNTERS 0x0E
3265#define LOG_PAGE_CODE_SELFTEST_RESULTS 0x10
3266#define LOG_PAGE_CODE_SOLID_STATE_MEDIA 0x11
3267#define LOG_PAGE_CODE_BACKGROUND_SCAN_RESULTS 0x15
3268#define LOG_PAGE_CODE_INFORMATIONAL_EXCEPTIONS 0x2F
3269
3270
3271#include <pshpack1.h>
3274 union {
3276 struct {
3283 };
3284 };
3287
3288typedef struct _LOG_PARAMETER {
3290 union {
3291#if !defined(__midl)
3293#endif
3294 struct _THRESHOLD_RESOURCE_COUNT {
3300 struct _TEMPERATURE {
3304 struct _DATE_OF_MANUFACTURE {
3305 UCHAR Year[4];
3306 UCHAR Week[2];
3308 struct _SELF_TEST_RESULTS {
3310 UCHAR Reserved1 : 1;
3313 UCHAR PowerOnHours[2];
3314 UCHAR AddressOfFirstFailure[8];
3316 UCHAR Reserved2 : 4;
3321
3322 struct _SOLID_STATE_MEDIA {
3323 UCHAR Reserved[3];
3326
3327 struct _BACKGROUND_SCAN_STATUS {
3328 UCHAR PowerOnMinutes[4];
3331 UCHAR ScansPerformed[2];
3332 UCHAR ScanProgress[2];
3333 UCHAR MediumScansPerformed[2];
3335
3336 struct _INFORMATIONAL_EXCEPTIONS {
3340 UCHAR VendorSpecific[ANYSIZE_ARRAY];
3342 };
3344
3345typedef struct _LOG_PAGE {
3351#if !defined(__midl)
3353#endif
3354
3356
3357#include <poppack.h>
3358
3359#define LOG_PAGE_LBP_PARAMETER_CODE_AVAILABLE 0x1
3360#define LOG_PAGE_LBP_PARAMETER_CODE_USED 0x2
3361
3362#define LOG_PAGE_LBP_RESOURCE_SCOPE_NOT_REPORTED 0x0
3363#define LOG_PAGE_LBP_RESOURCE_SCOPE_DEDICATED_TO_LUN 0x1
3364#define LOG_PAGE_LBP_RESOURCE_SCOPE_NOT_DEDICATED_TO_LUN 0x2
3365
3373
3380#if !defined(__midl)
3382#endif
3384
3385typedef struct _MODE_CONTROL_PAGE {
3415
3416/* This structure is used to convert little endian ULONGs
3417 to SCSI CDB big endians values. */
3418typedef union _EIGHT_BYTE {
3419 _ANONYMOUS_STRUCT struct {
3431
3432typedef union _FOUR_BYTE {
3433 _ANONYMOUS_STRUCT struct {
3434 UCHAR Byte0;
3435 UCHAR Byte1;
3436 UCHAR Byte2;
3437 UCHAR Byte3;
3441
3442typedef union _TWO_BYTE {
3443 _ANONYMOUS_STRUCT struct {
3449
3450/* Byte reversing macro for converting between
3451 big- and little-endian formats */
3452#define REVERSE_BYTES_QUAD(Destination, Source) { \
3453 PEIGHT_BYTE _val1 = (PEIGHT_BYTE)(Destination); \
3454 PEIGHT_BYTE _val2 = (PEIGHT_BYTE)(Source); \
3455 _val1->Byte7 = _val2->Byte0; \
3456 _val1->Byte6 = _val2->Byte1; \
3457 _val1->Byte5 = _val2->Byte2; \
3458 _val1->Byte4 = _val2->Byte3; \
3459 _val1->Byte3 = _val2->Byte4; \
3460 _val1->Byte2 = _val2->Byte5; \
3461 _val1->Byte1 = _val2->Byte6; \
3462 _val1->Byte0 = _val2->Byte7; \
3463}
3464
3465#define REVERSE_BYTES(Destination, Source) { \
3466 PFOUR_BYTE _val1 = (PFOUR_BYTE)(Destination); \
3467 PFOUR_BYTE _val2 = (PFOUR_BYTE)(Source); \
3468 _val1->Byte3 = _val2->Byte0; \
3469 _val1->Byte2 = _val2->Byte1; \
3470 _val1->Byte1 = _val2->Byte2; \
3471 _val1->Byte0 = _val2->Byte3; \
3472}
3473
3474#define REVERSE_BYTES_SHORT(Destination, Source) { \
3475 PTWO_BYTE _val1 = (PTWO_BYTE)(Destination); \
3476 PTWO_BYTE _val2 = (PTWO_BYTE)(Source); \
3477 _val1->Byte1 = _val2->Byte0; \
3478 _val1->Byte0 = _val2->Byte1; \
3479}
3480
3481#define REVERSE_SHORT(Short) { \
3482 UCHAR _val; \
3483 PTWO_BYTE _val2 = (PTWO_BYTE)(Short); \
3484 _val = _val2->Byte0; \
3485 _val2->Byte0 = _val2->Byte1; \
3486 _val2->Byte1 = _val; \
3487}
3488
3489#define REVERSE_LONG(Long) { \
3490 UCHAR _val; \
3491 PFOUR_BYTE _val2 = (PFOUR_BYTE)(Long); \
3492 _val = _val2->Byte3; \
3493 _val2->Byte3 = _val2->Byte0; \
3494 _val2->Byte0 = _val; \
3495 _val = _val2->Byte2; \
3496 _val2->Byte2 = _val2->Byte1; \
3497 _val2->Byte1 = _val; \
3498}
3499
3500#define WHICH_BIT(Data, Bit) { \
3501 UCHAR _val; \
3502 for (_val = 0; _val < 32; _val++) { \
3503 if (((Data) >> _val) == 1) { \
3504 break; \
3505 } \
3506 } \
3507 ASSERT(_val != 32); \
3508 (Bit) = _val; \
3509}
3510
3511#if defined(_WIN64)
3512#define STOR_ADDRESS_ALIGN DECLSPEC_ALIGN(8)
3513#else
3514#define STOR_ADDRESS_ALIGN
3515#endif
3516
3521 _Field_size_bytes_(AddressLength) UCHAR AddressData[ANYSIZE_ARRAY];
3523
3524#define STOR_ADDRESS_TYPE_UNKNOWN 0x0
3525#define STOR_ADDRESS_TYPE_BTL8 0x1
3526#define STOR_ADDRESS_TYPE_MAX 0xffff
3527
3528#define STOR_ADDR_BTL8_ADDRESS_LENGTH 4
3529
3532 USHORT Type;
3535 ULONG AddressLength;
3541
3542/* FIXME : This structure doesn't exist in the official header */
3580
3581#if (NTDDI_VERSION >= NTDDI_WIN8)
3582#include <pshpack1.h>
3583
3584#define BLOCK_DEVICE_TOKEN_SIZE 512
3585
3586typedef struct {
3587 UCHAR LogicalBlockAddress[8];
3588 UCHAR TransferLength[4];
3591
3592typedef struct {
3593 UCHAR PopulateTokenDataLength[2];
3597 UCHAR InactivityTimeout[4];
3599 UCHAR BlockDeviceRangeDescriptorListLength[2];
3600#if !defined(__midl)
3601 UCHAR BlockDeviceRangeDescriptor[ANYSIZE_ARRAY];
3602#endif
3604
3605typedef struct {
3606 UCHAR WriteUsingTokenDataLength[2];
3610 UCHAR BlockOffsetIntoToken[8];
3613 UCHAR BlockDeviceRangeDescriptorListLength[2];
3614#if !defined(__midl)
3615 UCHAR BlockDeviceRangeDescriptor[ANYSIZE_ARRAY];
3616#endif
3618
3619typedef struct {
3620 UCHAR AvailableData[4];
3625 UCHAR OperationCounter[2];
3626 UCHAR EstimatedStatusUpdateDelay[4];
3631 UCHAR TransferCount[8];
3632 UCHAR SegmentsProcessed[2];
3634#if !defined(__midl)
3636#endif
3638
3639typedef struct {
3640 UCHAR TokenDescriptorsLength[4];
3641#if !defined(__midl)
3642 UCHAR TokenDescriptor[ANYSIZE_ARRAY];
3643#endif
3645
3646typedef struct {
3650
3651typedef enum _OPERATION_STATUS {
3659
3670
3671#include <poppack.h>
3672#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
3673
3674// SCSI utility functions
3675
3676#define ScsiGetSenseErrorCode(SenseInfoBuffer) (((PUCHAR)(SenseInfoBuffer))[0] & 0x7f)
3677
3678#define ScsiGetSenseDescriptorLength(DescriptorBuffer) \
3679 (sizeof(SCSI_SENSE_DESCRIPTOR_HEADER) + ((PSCSI_SENSE_DESCRIPTOR_HEADER)(DescriptorBuffer))->AdditionalLength)
3680
3681#define IsFixedSenseDataFormat(SenseInfoBuffer) \
3682 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_CURRENT || \
3683 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_DEFERRED)
3684
3685#define IsDescriptorSenseDataFormat(SenseInfoBuffer) \
3686 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_CURRENT || \
3687 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_DEFERRED)
3688
3689#define IsSenseDataCurrentError(SenseInfoBuffer) \
3690 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_CURRENT || \
3691 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_CURRENT)
3692
3693#define IsSenseDataDeferredError(SenseInfoBuffer) \
3694 ((ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_FIXED_DEFERRED || \
3695 (ScsiGetSenseErrorCode(SenseInfoBuffer)) == SCSI_SENSE_ERRORCODE_DESCRIPTOR_DEFERRED)
3696
3697#define IsSenseDataFormatValueValid(SenseInfoBuffer) \
3698 (IsFixedSenseDataFormat(SenseInfoBuffer) || IsDescriptorSenseDataFormat(SenseInfoBuffer))
3699
3700_Success_(return != FALSE)
3702BOOLEAN
3703ScsiGetTotalSenseByteCountIndicated(
3707{
3711
3712 if (SenseInfoBuffer == NULL || SenseInfoBufferLength == 0 || TotalByteCountIndicated == NULL)
3713 {
3714
3715 return FALSE;
3716 }
3717
3718 senseInfoBuffer = (PFIXED_SENSE_DATA)SenseInfoBuffer;
3719
3721 {
3722
3725 {
3726
3728 RTL_SIZEOF_THROUGH_FIELD(FIXED_SENSE_DATA, AdditionalSenseLength);
3729
3731
3732 succeed = TRUE;
3733 }
3734 }
3735
3736 return succeed;
3737}
3738
3739_Success_(return != FALSE)
3741BOOLEAN
3742ScsiGetFixedSenseKeyAndCodes(
3748{
3749 PFIXED_SENSE_DATA fixedSenseData = (PFIXED_SENSE_DATA)SenseInfoBuffer;
3752
3753 if (SenseInfoBuffer == NULL || SenseInfoBufferLength == 0)
3754 {
3755 return FALSE;
3756 }
3757
3758 if (RTL_CONTAINS_FIELD(fixedSenseData, SenseInfoBufferLength, AdditionalSenseLength))
3759 {
3760
3761 dataLength = fixedSenseData->AdditionalSenseLength +
3762 RTL_SIZEOF_THROUGH_FIELD(FIXED_SENSE_DATA, AdditionalSenseLength);
3763
3765 {
3767 }
3768
3769 if (SenseKey != NULL)
3770 {
3771 *SenseKey = fixedSenseData->SenseKey;
3772 }
3773
3775 {
3777 ? fixedSenseData->AdditionalSenseCode
3778 : 0;
3779 }
3780
3782 {
3785 ? fixedSenseData->AdditionalSenseCodeQualifier
3786 : 0;
3787 }
3788
3789 succeed = TRUE;
3790 }
3791
3792 return succeed;
3793}
3794
3795_Success_(return != FALSE)
3797BOOLEAN
3798ScsiGetDescriptorSenseKeyAndCodes(
3804{
3807
3808 if (SenseInfoBuffer == NULL || SenseInfoBufferLength == 0)
3809 {
3810 return FALSE;
3811 }
3813 {
3814
3815 if (SenseKey)
3816 {
3817 *SenseKey = descriptorSenseData->SenseKey;
3818 }
3819
3821 {
3822 *AdditionalSenseCode = descriptorSenseData->AdditionalSenseCode;
3823 }
3824
3826 {
3827 *AdditionalSenseCodeQualifier = descriptorSenseData->AdditionalSenseCodeQualifier;
3828 }
3829
3830 succeed = TRUE;
3831 }
3832
3833 return succeed;
3834}
3835
3837
3838#define SCSI_SENSE_OPTIONS_NONE ((SCSI_SENSE_OPTIONS)0x00000000)
3839#define SCSI_SENSE_OPTIONS_FIXED_FORMAT_IF_UNKNOWN_FORMAT_INDICATED ((SCSI_SENSE_OPTIONS)0x00000001)
3840
3841_Success_(return != FALSE)
3843BOOLEAN
3844ScsiGetSenseKeyAndCodes(
3851{
3853
3854 if (SenseInfoBuffer == NULL || SenseInfoBufferLength == 0)
3855 {
3856 return FALSE;
3857 }
3858
3859 if (IsDescriptorSenseDataFormat(SenseInfoBuffer))
3860 {
3861 succeed = ScsiGetDescriptorSenseKeyAndCodes(SenseInfoBuffer, SenseInfoBufferLength, SenseKey,
3863 }
3864 else
3865 {
3867 IsFixedSenseDataFormat(SenseInfoBuffer))
3868 {
3869
3870 succeed = ScsiGetFixedSenseKeyAndCodes(SenseInfoBuffer, SenseInfoBufferLength, SenseKey,
3872 }
3873 }
3874
3875 return succeed;
3876}
3877
3878_Success_(return != FALSE)
3880BOOLEAN
3881ScsiGetSenseDescriptor(
3886{
3889 UCHAR dataLength = 0;
3890
3891 if (SenseInfoBuffer == NULL || SenseInfoBufferLength == 0 || DescriptorBuffer == NULL ||
3893 {
3894 return FALSE;
3895 }
3896
3899
3900 if (!IsDescriptorSenseDataFormat(SenseInfoBuffer))
3901 {
3902 return FALSE;
3903 }
3904
3906
3908 {
3909 if (descriptorSenseData->AdditionalSenseLength <=
3911 RTL_SIZEOF_THROUGH_FIELD(DESCRIPTOR_SENSE_DATA, AdditionalSenseLength)))
3912 {
3913 dataLength = descriptorSenseData->AdditionalSenseLength +
3914 RTL_SIZEOF_THROUGH_FIELD(DESCRIPTOR_SENSE_DATA, AdditionalSenseLength);
3915
3917 {
3919 }
3920
3923
3924 if (*DescriptorBufferLength > 0)
3925 {
3926 *DescriptorBuffer = (PVOID)(descriptorSenseData->DescriptorBuffer);
3927 succeed = TRUE;
3928 }
3929 }
3930 }
3931
3932 return succeed;
3933}
3934
3935_Success_(return != FALSE)
3937BOOLEAN
3938ScsiValidateInformationSenseDescriptor(
3941{
3944
3947 {
3948 return FALSE;
3949 }
3950
3952
3954 {
3955 return FALSE;
3956 }
3957
3960
3961 if (descriptor->Header.AdditionalLength != additionalLength)
3962 {
3963 return FALSE;
3964 }
3965
3966 if (descriptor->Valid == 0)
3967 {
3968 return FALSE;
3969 }
3970
3971 return TRUE;
3972}
3973
3974_Success_(return != FALSE)
3976BOOLEAN
3977ScsiValidateBlockCommandSenseDescriptor(
3980{
3983
3984 if (DescriptorBuffer == NULL ||
3986 {
3987 return FALSE;
3988 }
3989
3991
3992 if (descriptor->Header.DescriptorType != SCSI_SENSE_DESCRIPTOR_TYPE_BLOCK_COMMAND)
3993 {
3994 return FALSE;
3995 }
3996
3999
4000 if (descriptor->Header.AdditionalLength != additionalLength)
4001 {
4002 return FALSE;
4003 }
4004
4005 return TRUE;
4006}
4007
4008_Success_(return != FALSE)
4010BOOLEAN
4011ScsiConvertToFixedSenseFormat(
4016{
4023
4024 if (SenseInfoBuffer == NULL || SenseInfoBufferLength == 0 || OutBuffer == NULL ||
4026 {
4027 return FALSE;
4028 }
4029
4030 if (IsDescriptorSenseDataFormat(SenseInfoBuffer))
4031 {
4033
4034 validSense =
4035 ScsiGetSenseKeyAndCodes(SenseInfoBuffer, SenseInfoBufferLength, SCSI_SENSE_OPTIONS_NONE,
4037 if (validSense)
4038 {
4039
4040 if (IsSenseDataCurrentError(SenseInfoBuffer))
4041 {
4043 }
4044 else
4045 {
4047 }
4049 sizeof(FIXED_SENSE_DATA) -
4050 RTL_SIZEOF_THROUGH_FIELD(FIXED_SENSE_DATA, AdditionalSenseLength);
4054
4055 succeed = TRUE;
4056 }
4057 }
4058
4059 return succeed;
4060}
4061
4062_Success_(return != FALSE)
4064BOOLEAN
4065ScsiGetNextSenseDescriptorByType(
4073{
4079
4080 if (Buffer == NULL || BufferLength == 0 || TypeList == NULL || TypeListCount == 0 ||
4082 {
4083 return FALSE;
4084 }
4085
4086 *OutBuffer = NULL;
4087 *OutBufferLength = 0;
4088 *OutType = 0;
4089
4092
4094 {
4095 for (i = 0; i < TypeListCount; i++)
4096 {
4097 type = TypeList[i];
4098
4099 if (((PSCSI_SENSE_DESCRIPTOR_HEADER)remainingBuffer)->DescriptorType == type)
4100 {
4103 *OutType = type;
4104 return TRUE;
4105 }
4106 }
4107
4109
4111 {
4114 }
4115 else
4116 {
4117 break;
4118 }
4119 }
4120
4121 return FALSE;
4122}
4123
4124#ifdef __cplusplus
4125}
4126#endif
4127
4128#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:683
#define RTL_SIZEOF_THROUGH_FIELD(type, field)
Definition: ntbasedef.h:680
#define _ANONYMOUS_UNION
Definition: ntbasedef.h:30
#define _ANONYMOUS_STRUCT
Definition: ntbasedef.h:56
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
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:3689
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:4077
struct _LBA_STATUS_LIST_HEADER LBA_STATUS_LIST_HEADER
UCHAR additionalSenseCode
Definition: scsi.h:4020
struct _NOTIFICATION_OPERATIONAL_STATUS * PNOTIFICATION_OPERATIONAL_STATUS
#define ScsiGetSenseDescriptorLength(DescriptorBuffer)
Definition: scsi.h:3678
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:4090
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:3681
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:4075
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:3584
ULONG SCSI_SENSE_OPTIONS
Definition: scsi.h:3836
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:4021
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:4070
_VPD_ASSOCIATION
Definition: scsi.h:2446
@ VpdAssocPort
Definition: scsi.h:2448
@ VpdAssocTarget
Definition: scsi.h:2449
@ VpdAssocReserved1
Definition: scsi.h:2450
@ VpdAssocDevice
Definition: scsi.h:2447
@ VpdAssocReserved2
Definition: scsi.h:2451
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:2723
descriptor
Definition: scsi.h:3951
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:3839
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:4071
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:4078
union _TWO_BYTE * PTWO_BYTE
_In_ UCHAR BufferLength
Definition: scsi.h:4067
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:3748
struct _MODE_DISCONNECT_PAGE * PMODE_DISCONNECT_PAGE
return TRUE
Definition: scsi.h:3971
return succeed
Definition: scsi.h:3736
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:3905
_In_ UCHAR SenseInfoBufferLength
Definition: scsi.h:3705
struct _AUDIO_OUTPUT AUDIO_OUTPUT
_In_ UCHAR _Out_ UCHAR * TotalByteCountIndicated
Definition: scsi.h:3707
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:3525
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:4019
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:4016
PFIXED_SENSE_DATA senseInfoBuffer
Definition: scsi.h:3710
struct _SENSE_DATA * PFIXED_SENSE_DATA
Definition: scsi.h:2723
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:4076
enum _TRANSFER_COUNT_UNITS * PTRANSFER_COUNT_UNITS
_OPERATION_STATUS
Definition: scsi.h:3651
@ OPERATION_IN_PROGRESS_IN_FOREGROUND
Definition: scsi.h:3655
@ OPERATION_IN_PROGRESS_IN_BACKGROUND
Definition: scsi.h:3656
@ OPERATION_COMPLETED_WITH_SUCCESS
Definition: scsi.h:3652
@ OPERATION_COMPLETED_WITH_ERROR
Definition: scsi.h:3653
@ OPERATION_COMPLETED_WITH_RESIDUAL_DATA
Definition: scsi.h:3654
@ OPERATION_TERMINATED
Definition: scsi.h:3657
struct _FORMAT_DESCRIPTOR FORMAT_DESCRIPTOR
#define STOR_ADDRESS_ALIGN
Definition: scsi.h:3514
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:2454
@ VpdIdentifierTypeSCSINameString
Definition: scsi.h:2463
@ VpdIdentifierTypeVendorId
Definition: scsi.h:2456
@ VpdIdentifierTypeMD5LogicalUnitId
Definition: scsi.h:2462
@ VpdIdentifierTypeTargetPortGroup
Definition: scsi.h:2460
@ VpdIdentifierTypeLogicalUnitGroup
Definition: scsi.h:2461
@ VpdIdentifierTypeFCPHName
Definition: scsi.h:2458
@ VpdIdentifierTypePortRelative
Definition: scsi.h:2459
@ VpdIdentifierTypeEUI64
Definition: scsi.h:2457
@ VpdIdentifierTypeVendorSpecific
Definition: scsi.h:2455
struct _NOTIFICATION_BUSY_STATUS * PNOTIFICATION_BUSY_STATUS
enum _VPD_ASSOCIATION * PVPD_ASSOCIATION
enum _TRANSFER_COUNT_UNITS TRANSFER_COUNT_UNITS
return FALSE
Definition: scsi.h:4121
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:3709
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:4069
struct _PRI_RESERVATION_DESCRIPTOR PRI_RESERVATION_DESCRIPTOR
struct _CDDA_OUTPUT_PORT * PCDDA_OUTPUT_PORT
UCHAR additionalLength
Definition: scsi.h:3943
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:3886
struct _VPD_BLOCK_DEVICE_CHARACTERISTICS_PAGE * PVPD_BLOCK_DEVICE_CHARACTERISTICS_PAGE
_In_ UCHAR _Out_opt_ PUCHAR _Out_opt_ PUCHAR AdditionalSenseCode
Definition: scsi.h:3746
struct _TAPE_POSITION_DATA * PTAPE_POSITION_DATA
PFIXED_SENSE_DATA outBuffer
Definition: scsi.h:4022
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:3528
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:3660
@ TRANSFER_COUNT_UNITS_PEBIBYTES
Definition: scsi.h:3666
@ TRANSFER_COUNT_UNITS_GIBIBYTES
Definition: scsi.h:3664
@ TRANSFER_COUNT_UNITS_KIBIBYTES
Definition: scsi.h:3662
@ TRANSFER_COUNT_UNITS_NUMBER_BLOCKS
Definition: scsi.h:3668
@ TRANSFER_COUNT_UNITS_TEBIBYTES
Definition: scsi.h:3665
@ TRANSFER_COUNT_UNITS_EXBIBYTES
Definition: scsi.h:3667
@ TRANSFER_COUNT_UNITS_MEBIBYTES
Definition: scsi.h:3663
@ TRANSFER_COUNT_UNITS_BYTES
Definition: scsi.h:3661
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:3745
_In_ UCHAR _Outptr_result_bytebuffer_ DescriptorBufferLength PVOID * DescriptorBuffer
Definition: scsi.h:3884
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:3751
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:3838
struct _MODE_CDROM_WRITE_PARAMETERS_PAGE * PMODE_CDROM_WRITE_PARAMETERS_PAGE
struct _DISC_INFORMATION DISC_INFORMATION
BOOLEAN validSense
Definition: scsi.h:4018
_VPD_CODE_SET
Definition: scsi.h:2439
@ VpdCodeSetBinary
Definition: scsi.h:2441
@ VpdCodeSetReserved
Definition: scsi.h:2440
@ VpdCodeSetAscii
Definition: scsi.h:2442
@ VpdCodeSetUTF8
Definition: scsi.h:2443
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:3685
struct _PRI_REGISTRATION_LIST * PPRI_REGISTRATION_LIST
struct _DESCRIPTOR_SENSE_DATA DESCRIPTOR_SENSE_DATA
UCHAR ParameterLength
Definition: scsi.h:3194
UCHAR LogicalBlocksPerSecond[2]
Definition: scsi.h:3198
UCHAR CodePage
Definition: scsi.h:3193
UCHAR Immediate
Definition: scsi.h:3195
PORT_OUTPUT PortOutput[4]
Definition: scsi.h:3199
UCHAR LbaFormat
Definition: scsi.h:3197
UCHAR StopOnTrackCrossing
Definition: scsi.h:3057
UCHAR Obsolete[2]
Definition: scsi.h:3061
CDDA_OUTPUT_PORT CDDAOutputPorts[4]
Definition: scsi.h:3062
UCHAR Reserved4[3]
Definition: scsi.h:3060
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:1982
UCHAR AllocationLength[4]
Definition: scsi.h:1983
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
struct _CDB::_PLAY_CD::@2187::_MSF MSF
UCHAR Port1
Definition: scsi.h:1259
_ANONYMOUS_UNION union _CDB::_PLAY_CD::@2187 DUMMYUNIONNAME
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
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
struct _CDB::_PLAY_CD::@2187::_LBA LBA
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
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:1896
UCHAR Reserved1
Definition: scsi.h:1891
UCHAR Reserved2
Definition: scsi.h:1897
UCHAR ReadProtect
Definition: scsi.h:1894
UCHAR OperationCode
Definition: scsi.h:1890
UCHAR ForceUnitAccess
Definition: scsi.h:1892
UCHAR LogicalBlock[8]
Definition: scsi.h:1895
UCHAR Control
Definition: scsi.h:1899
UCHAR Streaming
Definition: scsi.h:1898
UCHAR DisablePageOut
Definition: scsi.h:1893
UCHAR AllocationLength[4]
Definition: scsi.h:1942
UCHAR LogicalBlock[8]
Definition: scsi.h:1941
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
_ANONYMOUS_STRUCT struct _CDB::_SET_CD_SPEED::@2190::@2191 DUMMYSTRUCTNAME
UCHAR Reserved1[6]
Definition: cdrw_hw.h:599
UCHAR WriteSpeed[2]
Definition: cdrw_hw.h:598
UCHAR RotationControl
Definition: scsi.h:1853
UCHAR ReadSpeed[2]
Definition: cdrw_hw.h:597
UCHAR Reserved2[5]
Definition: scsi.h:1859
_ANONYMOUS_UNION union _CDB::_SET_CD_SPEED::@2190 DUMMYUNIONNAME
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::@2188 Byte6
struct _CDB::_SPACE_TAPE_MARKS::@2188::@2189 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:1951
UCHAR ParameterListLength[4]
Definition: scsi.h:1953
UCHAR ListIdentifier[4]
Definition: scsi.h:1952
UCHAR Reserved3
Definition: scsi.h:1974
UCHAR Control
Definition: scsi.h:1976
UCHAR Anchor
Definition: scsi.h:1970
UCHAR AllocationLength[2]
Definition: scsi.h:1975
UCHAR GroupNumber
Definition: scsi.h:1973
UCHAR Reserved1
Definition: scsi.h:1971
UCHAR OperationCode
Definition: scsi.h:1969
UCHAR Reserved2[4]
Definition: scsi.h:1972
UCHAR Control
Definition: scsi.h:1925
UCHAR BlockVerify
Definition: scsi.h:1917
UCHAR LogicalBlock[8]
Definition: scsi.h:1921
UCHAR DisablePageOut
Definition: scsi.h:1919
UCHAR Streaming
Definition: scsi.h:1924
UCHAR Reserved3
Definition: scsi.h:1923
UCHAR VerificationLength[4]
Definition: scsi.h:1922
UCHAR Reserved1
Definition: scsi.h:1915
UCHAR ByteCheck
Definition: scsi.h:1916
UCHAR VerifyProtect
Definition: scsi.h:1920
UCHAR OperationCode
Definition: scsi.h:1914
UCHAR Reserved2
Definition: scsi.h:1918
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:1909
UCHAR WriteProtect
Definition: scsi.h:1906
UCHAR LogicalBlock[8]
Definition: scsi.h:1907
UCHAR Reserved1
Definition: scsi.h:1903
UCHAR Streaming
Definition: scsi.h:1910
UCHAR DisablePageOut
Definition: scsi.h:1905
UCHAR Control
Definition: scsi.h:1911
UCHAR ForceUnitAccess
Definition: scsi.h:1904
UCHAR TransferLength[4]
Definition: scsi.h:1908
UCHAR OperationCode
Definition: scsi.h:1902
UCHAR TransferLength[3]
Definition: scsi.h:1557
UCHAR Reserved
Definition: scsi.h:3047
UCHAR ChannelSelection
Definition: scsi.h:3046
UCHAR Volume
Definition: scsi.h:3048
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2214 DUMMYUNIONNAME4
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2211 DUMMYUNIONNAME
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2212 DUMMYUNIONNAME2
UCHAR CopyManagementRevision[2]
Definition: scsi.h:3171
UCHAR ReadSpeedCurrent[2]
Definition: scsi.h:3152
UCHAR ReadSpeedMaximum[2]
Definition: scsi.h:3146
UCHAR WriteSpeedMaximum[2]
Definition: scsi.h:3163
UCHAR ReadBarCodeCapable
Definition: scsi.h:3131
UCHAR ObsoleteReserved[2]
Definition: scsi.h:3147
UCHAR ObsoleteReserved4[2]
Definition: scsi.h:3164
UCHAR BufferUnderrunFree
Definition: scsi.h:3123
UCHAR LoadingMechanismType
Definition: scsi.h:3137
UCHAR WriteSpeedCurrent[2]
Definition: scsi.h:3167
UCHAR NumberVolumeLevels[2]
Definition: scsi.h:3149
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2213 DUMMYUNIONNAME3
UCHAR ObsoleteReserved2[2]
Definition: scsi.h:3153
_ANONYMOUS_UNION union _CDVD_CAPABILITIES_PAGE::@2215 DUMMYUNIONNAME5
UCHAR SeperateChannelMute
Definition: scsi.h:3139
UCHAR Reserved10[2]
Definition: scsi.h:3172
UCHAR SupportsDiskPresent
Definition: scsi.h:3140
UCHAR ObsoleteReserved11[2]
Definition: scsi.h:3168
UCHAR RWInLeadInReadable
Definition: scsi.h:3143
UCHAR ChallengeKeyValue[10]
Definition: cdrw_hw.h:3594
UCHAR Reserved2[2]
Definition: scsi.h:3080
UCHAR EventStatusNotification[2]
Definition: scsi.h:3074
UCHAR KeyExchange[2]
Definition: scsi.h:3079
UCHAR CDSequentialRecordable[2]
Definition: scsi.h:3076
UCHAR DigitalOutput[2]
Definition: scsi.h:3075
UCHAR DVDSequentialRecordable[2]
Definition: scsi.h:3077
UCHAR PacketSMART[2]
Definition: scsi.h:3072
UCHAR RandomRecordable[2]
Definition: scsi.h:3078
UCHAR PersistantPrevent[2]
Definition: scsi.h:3073
UCHAR CDAudio[2]
Definition: scsi.h:3070
UCHAR EmbeddedChanger[2]
Definition: scsi.h:3071
UCHAR GroupTwoMinimumTimeout[2]
Definition: scsi.h:3094
UCHAR GroupOneMinimumTimeout[2]
Definition: scsi.h:3093
UCHAR DataLength[2]
Definition: cdrw_hw.h:3581
UCHAR DataLength[2]
Definition: scsi.h:2906
CDVD_KEY_DATA TitleKey
Definition: cdrw_hw.h:3619
UCHAR Reserved[4]
Definition: scsi.h:2198
_ANONYMOUS_UNION union _DATA_BLOCK_HEADER::@2194 DUMMYUNIONNAME
UCHAR DataMode
Definition: scsi.h:2197
UCHAR LogicalBlockAddress[4]
Definition: scsi.h:2200
struct _DATA_BLOCK_HEADER::@2194::@2195 MSF
UCHAR AdditionalSenseLength
Definition: scsi.h:2733
UCHAR DescriptorBuffer[ANYSIZE_ARRAY]
Definition: scsi.h:2734
UCHAR Reserved3[3]
Definition: scsi.h:2732
UCHAR AdditionalSenseCodeQualifier
Definition: scsi.h:2731
UCHAR AdditionalSenseCode
Definition: scsi.h:2730
UCHAR LastSessionLastTrackLsb
Definition: scsi.h:2151
UCHAR LastSessionLeadIn[4]
Definition: scsi.h:2163
UCHAR MrwStatus
Definition: scsi.h:2152
UCHAR LastSessionFirstTrackMsb
Definition: scsi.h:2160
UCHAR Reserved2
Definition: scsi.h:2154
UCHAR MrwDirtyBit
Definition: scsi.h:2153
UCHAR LastSessionLastTrackMsb
Definition: scsi.h:2161
UCHAR NumberOfSessionsLsb
Definition: scsi.h:2149
UCHAR Reserved4
Definition: scsi.h:2166
UCHAR DiscStatus
Definition: scsi.h:2144
UCHAR FirstTrackNumber
Definition: scsi.h:2148
UCHAR DiscType
Definition: scsi.h:2158
UCHAR NumberOfSessionsMsb
Definition: scsi.h:2159
UCHAR LastSessionStatus
Definition: scsi.h:2145
UCHAR Erasable
Definition: scsi.h:2146
UCHAR DiskBarCode[8]
Definition: scsi.h:2165
UCHAR LastPossibleLeadOutStartTime[4]
Definition: scsi.h:2164
UCHAR LastSessionFirstTrackLsb
Definition: scsi.h:2150
UCHAR Reserved1
Definition: scsi.h:2147
UCHAR NumberOPCEntries
Definition: scsi.h:2167
UCHAR DiskIdentification[4]
Definition: scsi.h:2162
OPC_TABLE_ENTRY OPCTable[1]
Definition: scsi.h:2168
UCHAR LastPossibleStartTime[4]
Definition: scsi.h:2189
UCHAR Reserved1
Definition: scsi.h:2176
UCHAR NumberOPCEntries
Definition: scsi.h:2192
UCHAR Reserved3[3]
Definition: scsi.h:2186
UCHAR LastSessionLastTrack
Definition: scsi.h:2180
UCHAR DiskStatus
Definition: scsi.h:2173
UCHAR NumberOfSessions
Definition: scsi.h:2178
UCHAR DiskBarCode[8]
Definition: scsi.h:2190
UCHAR FirstTrackNumber
Definition: scsi.h:2177
UCHAR Reserved4
Definition: scsi.h:2191
UCHAR Reserved2
Definition: scsi.h:2181
UCHAR DiskIdentification[4]
Definition: scsi.h:2187
UCHAR LastSessionFirstTrack
Definition: scsi.h:2179
UCHAR LastSessionLeadIn[4]
Definition: scsi.h:2188
UCHAR Erasable
Definition: scsi.h:2175
UCHAR LastSessionStatus
Definition: scsi.h:2174
UCHAR DiskType
Definition: scsi.h:2185
OPC_TABLE_ENTRY OPCTable[0]
Definition: scsi.h:2193
FORMATTED_CAPACITY_DESCRIPTOR Descriptors[0]
Definition: scsi.h:2134
UCHAR BlockLength[3]
Definition: scsi.h:2106
UCHAR NumberOfBlocks[4]
Definition: scsi.h:2103
UCHAR FormatSubType
Definition: scsi.h:2104
UCHAR FormatType
Definition: scsi.h:2105
UCHAR VendorSpecific
Definition: scsi.h:2111
UCHAR FormatDescriptorLength[2]
Definition: cdrw_hw.h:1909
FORMAT_DESCRIPTOR Descriptors[0]
Definition: scsi.h:2120
_ANONYMOUS_STRUCT struct _FOUR_BYTE::@2223 DUMMYSTRUCTNAME
UCHAR Byte0
Definition: tools.h:16
UCHAR Byte1
Definition: tools.h:17
UCHAR Byte2
Definition: tools.h:18
UCHAR Byte3
Definition: tools.h:19
ULONG AsULong
Definition: scsi.h:3439
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::@2199::@2200 DUMMYSTRUCTNAME
UCHAR DeviceTypeQualifier
Definition: cdrw_hw.h:1117
UCHAR Addr16
Definition: minitape.h:97
_ANONYMOUS_UNION union _INQUIRYDATA::@2199 DUMMYUNIONNAME
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:2773
UCHAR ProvisioningStatus
Definition: scsi.h:2775
ULONG LogicalBlockCount
Definition: scsi.h:2774
UCHAR Reserved2[3]
Definition: scsi.h:2777
LBA_STATUS_DESCRIPTOR Descriptors[0]
Definition: scsi.h:2783
UCHAR SPF
Definition: scsi.h:3347
UCHAR PageCode
Definition: scsi.h:3346
UCHAR DS
Definition: scsi.h:3348
UCHAR SubPageCode
Definition: scsi.h:3349
UCHAR PageLength[2]
Definition: scsi.h:3350
UCHAR ParameterLength
Definition: scsi.h:3285
UCHAR ParameterCode[2]
Definition: scsi.h:3273
UCHAR FormatAndLinking
Definition: scsi.h:3277
LOG_PARAMETER_HEADER Header
Definition: scsi.h:3367
UCHAR SelfTestNumber
Definition: scsi.h:3312
UCHAR SenseKey
Definition: scsi.h:3315
UCHAR AdditionalSenseCodeQualifier
Definition: scsi.h:3318
UCHAR AsByte[0]
Definition: scsi.h:3292
UCHAR Reserved1
Definition: scsi.h:3297
UCHAR Scope
Definition: scsi.h:3296
struct _LOG_PARAMETER::@2220::_SELF_TEST_RESULTS SELF_TEST_RESULTS
UCHAR ScanStatus
Definition: scsi.h:3330
UCHAR SelfTestResults
Definition: scsi.h:3309
struct _LOG_PARAMETER::@2220::_INFORMATIONAL_EXCEPTIONS INFORMATIONAL_EXCEPTIONS
UCHAR AdditionalSenseCode
Definition: scsi.h:3317
struct _LOG_PARAMETER::@2220::_SOLID_STATE_MEDIA SOLID_STATE_MEDIA
UCHAR PercentageUsed
Definition: scsi.h:3324
UCHAR Reserved
Definition: scsi.h:3301
UCHAR MostRecentTemperature
Definition: scsi.h:3339
UCHAR Temperature
Definition: scsi.h:3302
UCHAR ASC
Definition: scsi.h:3337
UCHAR ASCQ
Definition: scsi.h:3338
struct _LOG_PARAMETER::@2220::_THRESHOLD_RESOURCE_COUNT THRESHOLD_RESOURCE_COUNT
LOG_PARAMETER_HEADER Header
Definition: scsi.h:3289
struct _LOG_PARAMETER::@2220::_TEMPERATURE TEMPERATURE
UCHAR VendorSpecific
Definition: scsi.h:3319
struct _LOG_PARAMETER::@2220::_DATE_OF_MANUFACTURE DATE_OF_MANUFACTURE
struct _LOG_PARAMETER::@2220::_BACKGROUND_SCAN_STATUS BACKGROUND_SCAN_STATUS
UCHAR SelfTestCode
Definition: scsi.h:3311
UCHAR LunListLength[4]
Definition: scsi.h:3177
UCHAR Lun[0][8]
Definition: scsi.h:3179
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:2845
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:3411
UCHAR ExtendeSelfTestCompletionTime[2]
Definition: scsi.h:3413
UCHAR AutoloadMode
Definition: scsi.h:3405
UCHAR TMF_ONLY
Definition: scsi.h:3394
UCHAR Obsolete2
Definition: scsi.h:3400
UCHAR Obsolete1
Definition: scsi.h:3396
UCHAR PageLength
Definition: scsi.h:3389
UCHAR BusyTimeoutPeriod[2]
Definition: scsi.h:3412
UCHAR Reserved2
Definition: scsi.h:3406
UCHAR PageSavable
Definition: scsi.h:3388
UCHAR Reserved1
Definition: scsi.h:3387
UCHAR QueueAlgorithmModifier
Definition: scsi.h:3399
UCHAR UA_INTLCK_CTRL
Definition: scsi.h:3402
UCHAR PageCode
Definition: scsi.h:3386
UCHAR BusDisconnectTime[2]
Definition: scsi.h:2836
UCHAR BufferEmptyRatio
Definition: scsi.h:2834
UCHAR DataTransferDisconnect
Definition: scsi.h:2839
UCHAR MaximumBurstSize[2]
Definition: scsi.h:2838
UCHAR Reserved2[3]
Definition: scsi.h:2840
UCHAR BusInactivityLimit[2]
Definition: scsi.h:2835
UCHAR BusConnectTime[2]
Definition: scsi.h:2837
UCHAR BufferFullRatio
Definition: scsi.h:2833
UCHAR StepPlusePerCyclynder
Definition: scsi.h:2921
UCHAR BytesPerSector[2]
Definition: scsi.h:2908
UCHAR TransferRate[2]
Definition: scsi.h:2905
UCHAR HeadSettleDelay[2]
Definition: scsi.h:2914
UCHAR StartWritePrecom[2]
Definition: scsi.h:2910
UCHAR StartReducedCurrent[2]
Definition: scsi.h:2911
UCHAR NumberOfCylinders[2]
Definition: scsi.h:2909
UCHAR MediumRotationRate[2]
Definition: scsi.h:2930
UCHAR SurfaceFirst
Definition: scsi.h:2949
UCHAR HardSectorFormating
Definition: scsi.h:2951
UCHAR PageLength
Definition: scsi.h:2938
UCHAR Reserved2
Definition: scsi.h:2948
UCHAR Interleave[2]
Definition: scsi.h:2945
UCHAR TrackSkewFactor[2]
Definition: scsi.h:2946
UCHAR PageSavable
Definition: scsi.h:2937
UCHAR AlternateSectorsPerZone[2]
Definition: scsi.h:2940
UCHAR Reserved3[3]
Definition: scsi.h:2953
UCHAR BytesPerPhysicalSector[2]
Definition: scsi.h:2944
UCHAR TracksPerZone[2]
Definition: scsi.h:2939
UCHAR CylinderSkewFactor[2]
Definition: scsi.h:2947
UCHAR AlternateTracksPerZone[2]
Definition: scsi.h:2941
UCHAR RemovableMedia
Definition: scsi.h:2950
UCHAR SectorsPerTrack[2]
Definition: scsi.h:2943
UCHAR AlternateTracksPerLogicalUnit[2]
Definition: scsi.h:2942
UCHAR SoftSectorFormating
Definition: scsi.h:2952
UCHAR Reserved
Definition: scsi.h:2936
UCHAR PageCode
Definition: scsi.h:2935
UCHAR ReportCount[4]
Definition: scsi.h:3029
_ANONYMOUS_UNION union _MODE_INFO_EXCEPTIONS::@2209 DUMMYUNIONNAME
UCHAR IntervalTimer[4]
Definition: scsi.h:3028
_ANONYMOUS_STRUCT struct _MODE_INFO_EXCEPTIONS::@2209::@2210 DUMMYSTRUCTNAME
UCHAR PageSavable
Definition: scsi.h:2892
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:2891
UCHAR PageLength
Definition: cdrw_hw.h:3187
UCHAR LbaSpace
Definition: scsi.h:2895
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:2961
UCHAR StartWritePrecom[3]
Definition: scsi.h:2963
UCHAR DriveStepRate[2]
Definition: scsi.h:2965
UCHAR RotationalPositionLock
Definition: scsi.h:2967
UCHAR StartReducedCurrent[3]
Definition: scsi.h:2964
UCHAR LandZoneCyclinder[3]
Definition: scsi.h:2966
_ANONYMOUS_UNION union _NOTIFICATION_MEDIA_STATUS::@2192 DUMMYUNIONNAME
_ANONYMOUS_STRUCT struct _NOTIFICATION_MEDIA_STATUS::@2192::@2193 DUMMYSTRUCTNAME
Definition: scsi.h:2137
UCHAR OPCValue[6]
Definition: scsi.h:2139
UCHAR Speed[2]
Definition: scsi.h:2138
UCHAR WriteRotationControl
Definition: scsi.h:2293
UCHAR WriteSize[4]
Definition: scsi.h:2300
UCHAR WriteTime[4]
Definition: scsi.h:2301
UCHAR ChannelSelection
Definition: scsi.h:3188
UCHAR Volume
Definition: scsi.h:3189
UCHAR StandbyTimer[4]
Definition: scsi.h:3042
UCHAR IdleTimer[4]
Definition: scsi.h:3041
UCHAR ReservationKeyList[0][8]
Definition: scsi.h:2639
UCHAR AdditionalLength[4]
Definition: scsi.h:2638
UCHAR Generation[4]
Definition: scsi.h:2637
UCHAR ScopeSpecificAddress[4]
Definition: scsi.h:2644
UCHAR Generation[4]
Definition: scsi.h:2652
UCHAR AdditionalLength[4]
Definition: scsi.h:2653
PRI_RESERVATION_DESCRIPTOR Reservations[0]
Definition: scsi.h:2654
UCHAR ReservationKey[8]
Definition: scsi.h:2658
UCHAR ActivatePersistThroughPowerLoss
Definition: scsi.h:2661
UCHAR Obsolete[2]
Definition: scsi.h:2664
UCHAR ServiceActionReservationKey[8]
Definition: scsi.h:2659
UCHAR ScopeSpecificAddress[4]
Definition: scsi.h:2660
UCHAR BlockMinimumSize[2]
Definition: scsi.h:2794
UCHAR BlockMaximumSize[3]
Definition: scsi.h:2793
UCHAR Reserved
Definition: scsi.h:2792
UCHAR TotalBufferSize[4]
Definition: scsi.h:2802
UCHAR AvailableBufferSize[4]
Definition: scsi.h:2803
UCHAR ProtectionInfoExponent
Definition: scsi.h:2764
UCHAR ProtectionType
Definition: scsi.h:2760
UCHAR LogicalPerPhysicalExponent
Definition: scsi.h:2763
UCHAR Reserved3[16]
Definition: scsi.h:2769
UCHAR LowestAlignedBlock_MSB
Definition: scsi.h:2765
UCHAR LowestAlignedBlock_LSB
Definition: scsi.h:2768
UCHAR ProtectionEnable
Definition: scsi.h:2759
LARGE_INTEGER LogicalBlockAddress
Definition: scsi.h:2757
LARGE_INTEGER LogicalBlockAddress
Definition: scsi.h:2749
ULONG LogicalBlockAddress
Definition: cdrw_hw.h:1471
union _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS ExtendedArguments
SCSI_SENSE_DESCRIPTOR_HEADER Header
Definition: scsi.h:2707
SCSI_SENSE_DESCRIPTOR_HEADER Header
Definition: scsi.h:2699
SCSI_SENSE_DESCRIPTOR_HEADER Header
Definition: scsi.h:2691
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:3520
USHORT Port
Definition: scsi.h:3519
USHORT Type
Definition: scsi.h:3518
_Field_size_bytes_(AddressLength) UCHAR AddressData[ANYSIZE_ARRAY]
UCHAR Lun
Definition: scsi.h:3538
USHORT Port
Definition: scsi.h:3533
UCHAR Target
Definition: scsi.h:3537
_Field_range_(STOR_ADDRESS_TYPE_BTL8, STOR_ADDRESS_TYPE_BTL8) USHORT Type
UCHAR Path
Definition: scsi.h:3536
_Field_range_(STOR_ADDR_BTL8_ADDRESS_LENGTH, STOR_ADDR_BTL8_ADDRESS_LENGTH) ULONG AddressLength
UCHAR Reserved
Definition: scsi.h:3539
UCHAR NumberOfBytes[4]
Definition: scsi.h:3239
UCHAR PartitionNumber
Definition: scsi.h:3233
UCHAR EndOfPartition
Definition: scsi.h:3231
UCHAR BeginningOfPartition
Definition: scsi.h:3232
UCHAR LastBlock[4]
Definition: scsi.h:3236
UCHAR BlockPositionUnsupported
Definition: scsi.h:3229
UCHAR NumberOfBlocks[3]
Definition: scsi.h:3238
UCHAR FirstBlock[4]
Definition: scsi.h:3235
USHORT Reserved3
Definition: scsi.h:3234
UCHAR TrackSize[4]
Definition: scsi.h:2253
UCHAR TrackNumberLsb
Definition: scsi.h:2234
UCHAR Reserved7[2]
Definition: scsi.h:2257
UCHAR LastRecordedAddress[4]
Definition: scsi.h:2254
UCHAR TrackStartAddress[4]
Definition: scsi.h:2249
UCHAR TrackNumberMsb
Definition: scsi.h:2255
UCHAR FixedPacket
Definition: scsi.h:2242
UCHAR NextWritableAddress[4]
Definition: scsi.h:2250
UCHAR SessionNumberLsb
Definition: scsi.h:2235
UCHAR ReservedTrack
Definition: scsi.h:2245
UCHAR FreeBlocks[4]
Definition: scsi.h:2251
UCHAR SessionNumberMsb
Definition: scsi.h:2256
UCHAR FixedPacketSize[4]
Definition: scsi.h:2252
UCHAR FixedPacketSize[4]
Definition: scsi.h:2280
UCHAR SessionNumberLsb
Definition: scsi.h:2263
UCHAR TrackNumberLsb
Definition: scsi.h:2262
UCHAR TrackNumberMsb
Definition: scsi.h:2283
UCHAR FreeBlocks[4]
Definition: scsi.h:2279
UCHAR TrackStartAddress[4]
Definition: scsi.h:2277
UCHAR SessionNumberMsb
Definition: scsi.h:2284
UCHAR FixedPacket
Definition: scsi.h:2270
UCHAR NextWritableAddress[4]
Definition: scsi.h:2278
UCHAR ReadCompatibilityLba[4]
Definition: scsi.h:2286
UCHAR Reserved7[2]
Definition: scsi.h:2285
UCHAR LastRecordedAddress[4]
Definition: scsi.h:2282
UCHAR ReservedTrack
Definition: scsi.h:2273
UCHAR TrackSize[4]
Definition: scsi.h:2281
UCHAR FreeBlocks[4]
Definition: scsi.h:2228
UCHAR DataMode
Definition: scsi.h:2219
UCHAR FixedPacketSize[4]
Definition: scsi.h:2229
UCHAR SessionNumber
Definition: scsi.h:2213
UCHAR Reserved3
Definition: scsi.h:2225
UCHAR NextWritableAddress[4]
Definition: scsi.h:2227
UCHAR Reserved1
Definition: scsi.h:2214
UCHAR Reserved2
Definition: scsi.h:2218
UCHAR TrackMode
Definition: scsi.h:2215
UCHAR TrackNumber
Definition: scsi.h:2212
UCHAR TrackStartAddress[4]
Definition: scsi.h:2226
UCHAR StartingLba[8]
Definition: scsi.h:3244
UCHAR DataLength[2]
Definition: scsi.h:3250
UCHAR BlockDescrDataLength[2]
Definition: scsi.h:3251
UNMAP_BLOCK_DESCRIPTOR Descriptors[0]
Definition: scsi.h:3254
UCHAR ProductRevisionLevel[4]
Definition: scsi.h:2494
UCHAR IdentifyDeviceData[512]
Definition: scsi.h:2498
UCHAR DeviceSignature[20]
Definition: scsi.h:2495
UCHAR MaximumTransferLength[4]
Definition: scsi.h:2537
UCHAR UnmapGranularityAlignmentByte2
Definition: scsi.h:2547
UCHAR OptimalUnmapGranularity[4]
Definition: scsi.h:2542
UCHAR OptimalTransferLengthGranularity[2]
Definition: scsi.h:2536
UCHAR MaximumUnmapLBACount[4]
Definition: scsi.h:2540
UCHAR Descriptors[0]
Definition: scsi.h:2556
UCHAR Reserved1[28]
Definition: scsi.h:2553
UCHAR UnmapGranularityAlignmentByte3
Definition: scsi.h:2545
UCHAR OptimalTransferLength[4]
Definition: scsi.h:2538
UCHAR MaximumUnmapBlockDescriptorCount[4]
Definition: scsi.h:2541
UCHAR DeviceTypeQualifier
Definition: scsi.h:2529
UCHAR UnmapGranularityAlignmentByte1
Definition: scsi.h:2548
UCHAR MaximumCompareAndWriteLength
Definition: scsi.h:2535
UCHAR PageLength[2]
Definition: scsi.h:2531
UCHAR MaxPrefetchXDReadXDWriteTransferLength[4]
Definition: scsi.h:2539
UCHAR UnmapGranularityAlignmentByte0
Definition: scsi.h:2549
UCHAR UnmapGranularityAlignment[4]
Definition: scsi.h:2551
UCHAR Descriptors[0]
Definition: scsi.h:2483
UCHAR DeviceTypeQualifier
Definition: scsi.h:2432
UCHAR SerialNumber[0]
Definition: scsi.h:2436
UCHAR SupportedPageList[0]
Definition: scsi.h:2633
UCHAR ThirdPartyCopyDescriptors[ANYSIZE_ARRAY]
Definition: scsi.h:2508
UCHAR OptimalNumberOfNonSequentiallyWrittenSequentialWritePreferredZone[4]
Definition: scsi.h:2622
#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:1988
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::_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:1987
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::_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:3422
ULONGLONG AsULongLong
Definition: scsi.h:3429
UCHAR Byte0
Definition: scsi.h:3420
UCHAR Byte5
Definition: scsi.h:3425
UCHAR Byte7
Definition: scsi.h:3427
UCHAR Byte1
Definition: scsi.h:3421
UCHAR Byte3
Definition: scsi.h:3423
UCHAR Byte6
Definition: scsi.h:3426
_ANONYMOUS_STRUCT struct _EIGHT_BYTE::@2222 DUMMYSTRUCTNAME
UCHAR Byte4
Definition: scsi.h:3424
struct _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS::@810 Modify
struct _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS::@811 Synchronous
struct _SCSI_EXTENDED_MESSAGE::_EXTENDED_ARGUMENTS::@812 Wide
FIXED_SENSE_DATA FixedData
Definition: scsi.h:2738
DESCRIPTOR_SENSE_DATA DescriptorData
Definition: scsi.h:2739
UCHAR Byte0
Definition: scsi.h:3444
USHORT AsUShort
Definition: scsi.h:3447
_ANONYMOUS_STRUCT struct _TWO_BYTE::@2224 DUMMYSTRUCTNAME
UCHAR Byte1
Definition: scsi.h:3445
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options
Definition: wdfdevice.h:3534
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3771
_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