6 * This file is part of the w32api package.
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
11 * THIS SOFTWARE IS NOT COPYRIGHTED
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
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.
30 #if defined(_STORPORT_)
33 #define STORPORT_API DECLSPEC_IMPORT
36 #define DIRECT_ACCESS_DEVICE 0x00
37 #define SEQUENTIAL_ACCESS_DEVICE 0x01
38 #define PRINTER_DEVICE 0x02
39 #define PROCESSOR_DEVICE 0x03
40 #define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04
41 #define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05
42 #define SCANNER_DEVICE 0x06
43 #define OPTICAL_DEVICE 0x07
44 #define MEDIUM_CHANGER 0x08
45 #define COMMUNICATION_DEVICE 0x09
46 #define ARRAY_CONTROLLER_DEVICE 0x0C
47 #define SCSI_ENCLOSURE_DEVICE 0x0D
48 #define REDUCED_BLOCK_DEVICE 0x0E
49 #define OPTICAL_CARD_READER_WRITER_DEVICE 0x0F
50 #define BRIDGE_CONTROLLER_DEVICE 0x10
51 #define OBJECT_BASED_STORAGE_DEVICE 0x11
52 #define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F
54 #define DEVICE_CONNECTED 0x00
56 #define CDB6GENERIC_LENGTH 6
57 #define CDB10GENERIC_LENGTH 10
58 #define CDB12GENERIC_LENGTH 12
60 #define INQUIRYDATABUFFERSIZE 36
62 #define MODE_PAGE_VENDOR_SPECIFIC 0x00
63 #define MODE_PAGE_ERROR_RECOVERY 0x01
64 #define MODE_PAGE_DISCONNECT 0x02
65 #define MODE_PAGE_FORMAT_DEVICE 0x03
66 #define MODE_PAGE_MRW 0x03
67 #define MODE_PAGE_RIGID_GEOMETRY 0x04
68 #define MODE_PAGE_FLEXIBILE 0x05
69 #define MODE_PAGE_WRITE_PARAMETERS 0x05
70 #define MODE_PAGE_VERIFY_ERROR 0x07
71 #define MODE_PAGE_CACHING 0x08
72 #define MODE_PAGE_PERIPHERAL 0x09
73 #define MODE_PAGE_CONTROL 0x0A
74 #define MODE_PAGE_MEDIUM_TYPES 0x0B
75 #define MODE_PAGE_NOTCH_PARTITION 0x0C
76 #define MODE_PAGE_CD_AUDIO_CONTROL 0x0E
77 #define MODE_PAGE_DATA_COMPRESS 0x0F
78 #define MODE_PAGE_DEVICE_CONFIG 0x10
79 #define MODE_PAGE_XOR_CONTROL 0x10
80 #define MODE_PAGE_MEDIUM_PARTITION 0x11
81 #define MODE_PAGE_ENCLOSURE_SERVICES_MANAGEMENT 0x14
82 #define MODE_PAGE_EXTENDED 0x15
83 #define MODE_PAGE_EXTENDED_DEVICE_SPECIFIC 0x16
84 #define MODE_PAGE_CDVD_FEATURE_SET 0x18
85 #define MODE_PAGE_PROTOCOL_SPECIFIC_LUN 0x18
86 #define MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19
87 #define MODE_PAGE_POWER_CONDITION 0x1A
88 #define MODE_PAGE_LUN_MAPPING 0x1B
89 #define MODE_PAGE_FAULT_REPORTING 0x1C
90 #define MODE_PAGE_CDVD_INACTIVITY 0x1D
91 #define MODE_PAGE_ELEMENT_ADDRESS 0x1D
92 #define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E
93 #define MODE_PAGE_DEVICE_CAPABILITIES 0x1F
94 #define MODE_PAGE_CAPABILITIES 0x2A
95 #define MODE_SENSE_RETURN_ALL 0x3F
97 #define MODE_SENSE_CURRENT_VALUES 0x00
98 #define MODE_SENSE_CHANGEABLE_VALUES 0x40
99 #define MODE_SENSE_DEFAULT_VAULES 0x80
100 #define MODE_SENSE_SAVED_VALUES 0xc0
102 #define SCSIOP_TEST_UNIT_READY 0x00
103 #define SCSIOP_REZERO_UNIT 0x01
104 #define SCSIOP_REWIND 0x01
105 #define SCSIOP_REQUEST_BLOCK_ADDR 0x02
106 #define SCSIOP_REQUEST_SENSE 0x03
107 #define SCSIOP_FORMAT_UNIT 0x04
108 #define SCSIOP_READ_BLOCK_LIMITS 0x05
109 #define SCSIOP_REASSIGN_BLOCKS 0x07
110 #define SCSIOP_INIT_ELEMENT_STATUS 0x07
111 #define SCSIOP_READ6 0x08
112 #define SCSIOP_RECEIVE 0x08
113 #define SCSIOP_WRITE6 0x0A
114 #define SCSIOP_PRINT 0x0A
115 #define SCSIOP_SEND 0x0A
116 #define SCSIOP_SEEK6 0x0B
117 #define SCSIOP_TRACK_SELECT 0x0B
118 #define SCSIOP_SLEW_PRINT 0x0B
119 #define SCSIOP_SET_CAPACITY 0x0B
120 #define SCSIOP_SEEK_BLOCK 0x0C
121 #define SCSIOP_PARTITION 0x0D
122 #define SCSIOP_READ_REVERSE 0x0F
123 #define SCSIOP_WRITE_FILEMARKS 0x10
124 #define SCSIOP_FLUSH_BUFFER 0x10
125 #define SCSIOP_SPACE 0x11
126 #define SCSIOP_INQUIRY 0x12
127 #define SCSIOP_VERIFY6 0x13
128 #define SCSIOP_RECOVER_BUF_DATA 0x14
129 #define SCSIOP_MODE_SELECT 0x15
130 #define SCSIOP_RESERVE_UNIT 0x16
131 #define SCSIOP_RELEASE_UNIT 0x17
132 #define SCSIOP_COPY 0x18
133 #define SCSIOP_ERASE 0x19
134 #define SCSIOP_MODE_SENSE 0x1A
135 #define SCSIOP_START_STOP_UNIT 0x1B
136 #define SCSIOP_STOP_PRINT 0x1B
137 #define SCSIOP_LOAD_UNLOAD 0x1B
138 #define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C
139 #define SCSIOP_SEND_DIAGNOSTIC 0x1D
140 #define SCSIOP_MEDIUM_REMOVAL 0x1E
141 #define SCSIOP_READ_FORMATTED_CAPACITY 0x23
142 #define SCSIOP_READ_CAPACITY 0x25
143 #define SCSIOP_READ 0x28
144 #define SCSIOP_WRITE 0x2A
145 #define SCSIOP_SEEK 0x2B
146 #define SCSIOP_LOCATE 0x2B
147 #define SCSIOP_POSITION_TO_ELEMENT 0x2B
148 #define SCSIOP_WRITE_VERIFY 0x2E
149 #define SCSIOP_VERIFY 0x2F
150 #define SCSIOP_SEARCH_DATA_HIGH 0x30
151 #define SCSIOP_SEARCH_DATA_EQUAL 0x31
152 #define SCSIOP_SEARCH_DATA_LOW 0x32
153 #define SCSIOP_SET_LIMITS 0x33
154 #define SCSIOP_READ_POSITION 0x34
155 #define SCSIOP_SYNCHRONIZE_CACHE 0x35
156 #define SCSIOP_COMPARE 0x39
157 #define SCSIOP_COPY_COMPARE 0x3A
158 #define SCSIOP_WRITE_DATA_BUFF 0x3B
159 #define SCSIOP_READ_DATA_BUFF 0x3C
160 #define SCSIOP_WRITE_LONG 0x3F
161 #define SCSIOP_CHANGE_DEFINITION 0x40
162 #define SCSIOP_WRITE_SAME 0x41
163 #define SCSIOP_READ_SUB_CHANNEL 0x42
164 #define SCSIOP_READ_TOC 0x43
165 #define SCSIOP_READ_HEADER 0x44
166 #define SCSIOP_REPORT_DENSITY_SUPPORT 0x44
167 #define SCSIOP_PLAY_AUDIO 0x45
168 #define SCSIOP_GET_CONFIGURATION 0x46
169 #define SCSIOP_PLAY_AUDIO_MSF 0x47
170 #define SCSIOP_PLAY_TRACK_INDEX 0x48
171 #define SCSIOP_PLAY_TRACK_RELATIVE 0x49
172 #define SCSIOP_GET_EVENT_STATUS 0x4A
173 #define SCSIOP_PAUSE_RESUME 0x4B
174 #define SCSIOP_LOG_SELECT 0x4C
175 #define SCSIOP_LOG_SENSE 0x4D
176 #define SCSIOP_STOP_PLAY_SCAN 0x4E
177 #define SCSIOP_XDWRITE 0x50
178 #define SCSIOP_XPWRITE 0x51
179 #define SCSIOP_READ_DISK_INFORMATION 0x51
180 #define SCSIOP_READ_DISC_INFORMATION 0x51
181 #define SCSIOP_READ_TRACK_INFORMATION 0x52
182 #define SCSIOP_XDWRITE_READ 0x53
183 #define SCSIOP_RESERVE_TRACK_RZONE 0x53
184 #define SCSIOP_SEND_OPC_INFORMATION 0x54
185 #define SCSIOP_MODE_SELECT10 0x55
186 #define SCSIOP_RESERVE_UNIT10 0x56
187 #define SCSIOP_RESERVE_ELEMENT 0x56
188 #define SCSIOP_RELEASE_UNIT10 0x57
189 #define SCSIOP_RELEASE_ELEMENT 0x57
190 #define SCSIOP_REPAIR_TRACK 0x58
191 #define SCSIOP_MODE_SENSE10 0x5A
192 #define SCSIOP_CLOSE_TRACK_SESSION 0x5B
193 #define SCSIOP_READ_BUFFER_CAPACITY 0x5C
194 #define SCSIOP_SEND_CUE_SHEET 0x5D
195 #define SCSIOP_PERSISTENT_RESERVE_IN 0x5E
196 #define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F
197 #define SCSIOP_XDWRITE_EXTENDED16 0x80
198 #define SCSIOP_WRITE_FILEMARKS16 0x80
199 #define SCSIOP_REBUILD16 0x81
200 #define SCSIOP_READ_REVERSE16 0x81
201 #define SCSIOP_REGENERATE16 0x82
202 #define SCSIOP_EXTENDED_COPY 0x83
203 #define SCSIOP_RECEIVE_COPY_RESULTS 0x84
204 #define SCSIOP_ATA_PASSTHROUGH16 0x85
205 #define SCSIOP_ACCESS_CONTROL_IN 0x86
206 #define SCSIOP_ACCESS_CONTROL_OUT 0x87
207 #define SCSIOP_READ16 0x88
208 #define SCSIOP_WRITE16 0x8A
209 #define SCSIOP_READ_ATTRIBUTES 0x8C
210 #define SCSIOP_WRITE_ATTRIBUTES 0x8D
211 #define SCSIOP_WRITE_VERIFY16 0x8E
212 #define SCSIOP_VERIFY16 0x8F
213 #define SCSIOP_PREFETCH16 0x90
214 #define SCSIOP_SYNCHRONIZE_CACHE16 0x91
215 #define SCSIOP_SPACE16 0x91
216 #define SCSIOP_LOCK_UNLOCK_CACHE16 0x92
217 #define SCSIOP_LOCATE16 0x92
218 #define SCSIOP_WRITE_SAME16 0x93
219 #define SCSIOP_ERASE16 0x93
220 #define SCSIOP_READ_CAPACITY16 0x9E
221 #define SCSIOP_SERVICE_ACTION_IN16 0x9E
222 #define SCSIOP_SERVICE_ACTION_OUT16 0x9F
223 #define SCSIOP_REPORT_LUNS 0xA0
224 #define SCSIOP_BLANK 0xA1
225 #define SCSIOP_ATA_PASSTHROUGH12 0xA1
226 #define SCSIOP_SEND_EVENT 0xA2
227 #define SCSIOP_SEND_KEY 0xA3
228 #define SCSIOP_MAINTENANCE_IN 0xA3
229 #define SCSIOP_REPORT_KEY 0xA4
230 #define SCSIOP_MAINTENANCE_OUT 0xA4
231 #define SCSIOP_MOVE_MEDIUM 0xA5
232 #define SCSIOP_LOAD_UNLOAD_SLOT 0xA6
233 #define SCSIOP_EXCHANGE_MEDIUM 0xA6
234 #define SCSIOP_SET_READ_AHEAD 0xA7
235 #define SCSIOP_MOVE_MEDIUM_ATTACHED 0xA7
236 #define SCSIOP_READ12 0xA8
237 #define SCSIOP_GET_MESSAGE 0xA8
238 #define SCSIOP_SERVICE_ACTION_OUT12 0xA9
239 #define SCSIOP_WRITE12 0xAA
240 #define SCSIOP_SEND_MESSAGE 0xAB
241 #define SCSIOP_SERVICE_ACTION_IN12 0xAB
242 #define SCSIOP_GET_PERFORMANCE 0xAC
243 #define SCSIOP_READ_DVD_STRUCTURE 0xAD
244 #define SCSIOP_WRITE_VERIFY12 0xAE
245 #define SCSIOP_VERIFY12 0xAF
246 #define SCSIOP_SEARCH_DATA_HIGH12 0xB0
247 #define SCSIOP_SEARCH_DATA_EQUAL12 0xB1
248 #define SCSIOP_SEARCH_DATA_LOW12 0xB2
249 #define SCSIOP_SET_LIMITS12 0xB3
250 #define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4
251 #define SCSIOP_REQUEST_VOL_ELEMENT 0xB5
252 #define SCSIOP_SEND_VOLUME_TAG 0xB6
253 #define SCSIOP_SET_STREAMING 0xB6
254 #define SCSIOP_READ_DEFECT_DATA 0xB7
255 #define SCSIOP_READ_ELEMENT_STATUS 0xB8
256 #define SCSIOP_READ_CD_MSF 0xB9
257 #define SCSIOP_SCAN_CD 0xBA
258 #define SCSIOP_REDUNDANCY_GROUP_IN 0xBA
259 #define SCSIOP_SET_CD_SPEED 0xBB
260 #define SCSIOP_REDUNDANCY_GROUP_OUT 0xBB
261 #define SCSIOP_PLAY_CD 0xBC
262 #define SCSIOP_SPARE_IN 0xBC
263 #define SCSIOP_MECHANISM_STATUS 0xBD
264 #define SCSIOP_SPARE_OUT 0xBD
265 #define SCSIOP_READ_CD 0xBE
266 #define SCSIOP_VOLUME_SET_IN 0xBE
267 #define SCSIOP_SEND_DVD_STRUCTURE 0xBF
268 #define SCSIOP_VOLUME_SET_OUT 0xBF
269 #define SCSIOP_INIT_ELEMENT_RANGE 0xE7
271 #define SCSISTAT_GOOD 0x00
272 #define SCSISTAT_CHECK_CONDITION 0x02
273 #define SCSISTAT_CONDITION_MET 0x04
274 #define SCSISTAT_BUSY 0x08
275 #define SCSISTAT_INTERMEDIATE 0x10
276 #define SCSISTAT_INTERMEDIATE_COND_MET 0x14
277 #define SCSISTAT_RESERVATION_CONFLICT 0x18
278 #define SCSISTAT_COMMAND_TERMINATED 0x22
279 #define SCSISTAT_QUEUE_FULL 0x28
284 #define SP_RETURN_NOT_FOUND 0
285 #define SP_RETURN_FOUND 1
286 #define SP_RETURN_ERROR 2
287 #define SP_RETURN_BAD_CONFIG 3
289 #define SRB_FUNCTION_EXECUTE_SCSI 0x00
290 #define SRB_FUNCTION_CLAIM_DEVICE 0x01
291 #define SRB_FUNCTION_IO_CONTROL 0x02
292 #define SRB_FUNCTION_RECEIVE_EVENT 0x03
293 #define SRB_FUNCTION_RELEASE_QUEUE 0x04
294 #define SRB_FUNCTION_ATTACH_DEVICE 0x05
295 #define SRB_FUNCTION_RELEASE_DEVICE 0x06
296 #define SRB_FUNCTION_SHUTDOWN 0x07
297 #define SRB_FUNCTION_FLUSH 0x08
298 #define SRB_FUNCTION_ABORT_COMMAND 0x10
299 #define SRB_FUNCTION_RELEASE_RECOVERY 0x11
300 #define SRB_FUNCTION_RESET_BUS 0x12
301 #define SRB_FUNCTION_RESET_DEVICE 0x13
302 #define SRB_FUNCTION_TERMINATE_IO 0x14
303 #define SRB_FUNCTION_FLUSH_QUEUE 0x15
304 #define SRB_FUNCTION_REMOVE_DEVICE 0x16
305 #define SRB_FUNCTION_WMI 0x17
306 #define SRB_FUNCTION_LOCK_QUEUE 0x18
307 #define SRB_FUNCTION_UNLOCK_QUEUE 0x19
308 #define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20
309 #define SRB_FUNCTION_SET_LINK_TIMEOUT 0x21
310 #define SRB_FUNCTION_LINK_TIMEOUT_OCCURRED 0x22
311 #define SRB_FUNCTION_LINK_TIMEOUT_COMPLETE 0x23
312 #define SRB_FUNCTION_POWER 0x24
313 #define SRB_FUNCTION_PNP 0x25
314 #define SRB_FUNCTION_DUMP_POINTERS 0x26
316 #define SRB_STATUS_PENDING 0x00
317 #define SRB_STATUS_SUCCESS 0x01
318 #define SRB_STATUS_ABORTED 0x02
319 #define SRB_STATUS_ABORT_FAILED 0x03
320 #define SRB_STATUS_ERROR 0x04
321 #define SRB_STATUS_BUSY 0x05
322 #define SRB_STATUS_INVALID_REQUEST 0x06
323 #define SRB_STATUS_INVALID_PATH_ID 0x07
324 #define SRB_STATUS_NO_DEVICE 0x08
325 #define SRB_STATUS_TIMEOUT 0x09
326 #define SRB_STATUS_SELECTION_TIMEOUT 0x0A
327 #define SRB_STATUS_COMMAND_TIMEOUT 0x0B
328 #define SRB_STATUS_MESSAGE_REJECTED 0x0D
329 #define SRB_STATUS_BUS_RESET 0x0E
330 #define SRB_STATUS_PARITY_ERROR 0x0F
331 #define SRB_STATUS_REQUEST_SENSE_FAILED 0x10
332 #define SRB_STATUS_NO_HBA 0x11
333 #define SRB_STATUS_DATA_OVERRUN 0x12
334 #define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13
335 #define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
336 #define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15
337 #define SRB_STATUS_REQUEST_FLUSHED 0x16
338 #define SRB_STATUS_INVALID_LUN 0x20
339 #define SRB_STATUS_INVALID_TARGET_ID 0x21
340 #define SRB_STATUS_BAD_FUNCTION 0x22
341 #define SRB_STATUS_ERROR_RECOVERY 0x23
342 #define SRB_STATUS_NOT_POWERED 0x24
343 #define SRB_STATUS_LINK_DOWN 0x25
344 #define SRB_STATUS_INTERNAL_ERROR 0x30
345 #define SRB_STATUS_QUEUE_FROZEN 0x40
346 #define SRB_STATUS_AUTOSENSE_VALID 0x80
347 #define SRB_STATUS(Status) (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
349 #define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002
350 #define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004
351 #define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
353 #define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010
354 #define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020
355 #define SRB_FLAGS_DATA_IN 0x00000040
356 #define SRB_FLAGS_DATA_OUT 0x00000080
357 #define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000
358 #define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
360 #define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100
361 #define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200
362 #define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400
364 #define SRB_FLAGS_IS_ACTIVE 0x00010000
365 #define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000
366 #define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000
367 #define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000
369 #define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000
370 #define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000
372 #define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000
373 #define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000
375 #define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
376 #define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
378 #define SRB_SIMPLE_TAG_REQUEST 0x20
379 #define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21
380 #define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22
382 #define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x01
383 #define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x01
384 #define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x01
386 #define STOR_MAP_NO_BUFFERS (0)
387 #define STOR_MAP_ALL_BUFFERS (1)
388 #define STOR_MAP_NON_READ_WRITE_BUFFERS (2)
390 #define VPD_SUPPORTED_PAGES 0x00
391 #define VPD_SERIAL_NUMBER 0x80
392 #define VPD_DEVICE_IDENTIFIERS 0x83
393 #define VPD_MEDIA_SERIAL_NUMBER 0x84
394 #define VPD_SOFTWARE_INTERFACE_IDENTIFIERS 0x84
395 #define VPD_NETWORK_MANAGEMENT_ADDRESSES 0x85
396 #define VPD_EXTENDED_INQUIRY_DATA 0x86
397 #define VPD_MODE_PAGE_POLICY 0x87
398 #define VPD_SCSI_PORTS 0x88
400 typedef enum _STOR_SYNCHRONIZATION_MODEL
402 StorSynchronizeHalfDuplex
,
403 StorSynchronizeFullDuplex
404 } STOR_SYNCHRONIZATION_MODEL
;
406 typedef enum _STOR_DMA_WIDTH
410 Dma64BitScatterGather
,
414 typedef enum _STOR_SPINLOCK
421 typedef enum _SCSI_ADAPTER_CONTROL_TYPE
423 ScsiQuerySupportedControlTypes
= 0,
427 ScsiSetRunningConfig
,
428 ScsiAdapterControlMax
,
429 MakeAdapterControlTypeSizeOfUlong
= 0xffffffff
430 } SCSI_ADAPTER_CONTROL_TYPE
, *PSCSI_ADAPTER_CONTROL_TYPE
;
432 typedef enum _SCSI_ADAPTER_CONTROL_STATUS
434 ScsiAdapterControlSuccess
= 0,
435 ScsiAdapterControlUnsuccessful
436 } SCSI_ADAPTER_CONTROL_STATUS
, *PSCSI_ADAPTER_CONTROL_STATUS
;
438 typedef enum _SCSI_NOTIFICATION_TYPE
453 BufferOverrunDetected
,
455 GetExtendedFunctionTable
,
456 EnablePassiveInitialization
= 0x1000,
461 } SCSI_NOTIFICATION_TYPE
, *PSCSI_NOTIFICATION_TYPE
;
463 typedef enum _STOR_DEVICE_POWER_STATE
465 StorPowerDeviceUnspecified
= 0,
470 StorPowerDeviceMaximum
471 } STOR_DEVICE_POWER_STATE
, *PSTOR_DEVICE_POWER_STATE
;
473 typedef enum _STOR_POWER_ACTION
475 StorPowerActionNone
= 0,
476 StorPowerActionReserved
,
477 StorPowerActionSleep
,
478 StorPowerActionHibernate
,
479 StorPowerActionShutdown
,
480 StorPowerActionShutdownReset
,
481 StorPowerActionShutdownOff
,
482 StorPowerActionWarmEject
483 } STOR_POWER_ACTION
, *PSTOR_POWER_ACTION
;
485 typedef enum _STOR_PNP_ACTION
487 StorStartDevice
= 0x0,
488 StorRemoveDevice
= 0x2,
489 StorStopDevice
= 0x4,
490 StorQueryCapabilities
= 0x9,
491 StorQueryResourceRequirements
= 0xB,
492 StorFilterResourceRequirements
= 0xD,
493 StorSurpriseRemoval
= 0x17
494 } STOR_PNP_ACTION
, *PSTOR_PNP_ACTION
;
496 typedef enum _VPD_CODE_SET
498 VpdCodeSetReserved
= 0,
499 VpdCodeSetBinary
= 1,
502 } VPD_CODE_SET
, *PVPD_CODE_SET
;
504 typedef enum _VPD_ASSOCIATION
509 VpdAssocReserved1
= 3,
510 VpdAssocReserved2
= 4
511 } VPD_ASSOCIATION
, *PVPD_ASSOCIATION
;
513 typedef enum _VPD_IDENTIFIER_TYPE
515 VpdIdentifierTypeVendorSpecific
= 0,
516 VpdIdentifierTypeVendorId
= 1,
517 VpdIdentifierTypeEUI64
= 2,
518 VpdIdentifierTypeFCPHName
= 3,
519 VpdIdentifierTypePortRelative
= 4,
520 VpdIdentifierTypeTargetPortGroup
= 5,
521 VpdIdentifierTypeLogicalUnitGroup
= 6,
522 VpdIdentifierTypeMD5LogicalUnitId
= 7,
523 VpdIdentifierTypeSCSINameString
= 8
524 } VPD_IDENTIFIER_TYPE
, *PVPD_IDENTIFIER_TYPE
;
526 typedef struct _SCSI_REQUEST_BLOCK
538 UCHAR SenseInfoBufferLength
;
540 ULONG DataTransferLength
;
543 PVOID SenseInfoBuffer
;
544 struct _SCSI_REQUEST_BLOCK
*NextSrb
;
545 PVOID OriginalRequest
;
549 ULONG InternalStatus
;
551 ULONG LinkTimeoutValue
;
557 } SCSI_REQUEST_BLOCK
, *PSCSI_REQUEST_BLOCK
;
559 typedef struct _SCSI_WMI_REQUEST_BLOCK
564 UCHAR WMISubFunction
;
572 ULONG DataTransferLength
;
577 PVOID OriginalRequest
;
580 #if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64)
584 } SCSI_WMI_REQUEST_BLOCK
, *PSCSI_WMI_REQUEST_BLOCK
;
586 typedef struct _SCSI_POWER_REQUEST_BLOCK
595 STOR_DEVICE_POWER_STATE DevicePowerState
;
597 ULONG DataTransferLength
;
600 PVOID SenseInfoBuffer
;
601 struct _SCSI_REQUEST_BLOCK
*NextSrb
;
602 PVOID OriginalRequest
;
604 STOR_POWER_ACTION PowerAction
;
609 } SCSI_POWER_REQUEST_BLOCK
, *PSCSI_POWER_REQUEST_BLOCK
;
611 typedef struct _STOR_DEVICE_CAPABILITIES
616 ULONG LockSupported
:1;
617 ULONG EjectSupported
:1;
621 ULONG SilentInstall
:1;
622 ULONG SurpriseRemovalOK
:1;
623 ULONG NoDisplayInUI
:1;
624 } STOR_DEVICE_CAPABILITIES
, *PSTOR_DEVICE_CAPABILITIES
;
626 typedef struct _SCSI_PNP_REQUEST_BLOCK
631 UCHAR PnPSubFunction
;
635 STOR_PNP_ACTION PnPAction
;
637 ULONG DataTransferLength
;
640 PVOID SenseInfoBuffer
;
641 struct _SCSI_REQUEST_BLOCK
*NextSrb
;
642 PVOID OriginalRequest
;
649 } SCSI_PNP_REQUEST_BLOCK
, *PSCSI_PNP_REQUEST_BLOCK
;
651 #include <pshpack1.h>
658 UCHAR CommandUniqueBits
:4;
659 UCHAR LogicalUnitNumber
:3;
660 UCHAR CommandUniqueBytes
[3];
664 UCHAR VendorUnique
:2;
665 } CDB6GENERIC
, *PCDB6GENERIC
;
666 struct _CDB6READWRITE
669 UCHAR LogicalBlockMsb1
:5;
670 UCHAR LogicalUnitNumber
:3;
671 UCHAR LogicalBlockMsb0
;
672 UCHAR LogicalBlockLsb
;
673 UCHAR TransferBlocks
;
675 } CDB6READWRITE
, *PCDB6READWRITE
;
680 UCHAR LogicalUnitNumber
:3;
683 UCHAR AllocationLength
;
685 } CDB6INQUIRY
, *PCDB6INQUIRY
;
689 UCHAR EnableVitalProductData
:1;
690 UCHAR CommandSupportData
:1;
694 UCHAR AllocationLength
;
696 } CDB6INQUIRY3
, *PCDB6INQUIRY3
;
704 UCHAR LogicalUnitNumber
:3;
705 UCHAR VerificationLength
[3];
707 } CDB6VERIFY
, *PCDB6VERIFY
;
711 UCHAR FormatControl
:5;
712 UCHAR LogicalUnitNumber
:3;
717 } CDB6FORMAT
, *PCDB6FORMAT
;
721 UCHAR RelativeAddress
:1;
723 UCHAR ForceUnitAccess
:1;
724 UCHAR DisablePageOut
:1;
725 UCHAR LogicalUnitNumber
:3;
726 UCHAR LogicalBlockByte0
;
727 UCHAR LogicalBlockByte1
;
728 UCHAR LogicalBlockByte2
;
729 UCHAR LogicalBlockByte3
;
731 UCHAR TransferBlocksMsb
;
732 UCHAR TransferBlocksLsb
;
738 UCHAR RelativeAddress
:1;
740 UCHAR ForceUnitAccess
:1;
741 UCHAR DisablePageOut
:1;
742 UCHAR LogicalUnitNumber
:3;
743 UCHAR LogicalBlock
[4];
744 UCHAR TransferLength
[4];
752 UCHAR ForceUnitAccess
:1;
753 UCHAR DisablePageOut
:1;
755 UCHAR LogicalBlock
[8];
756 UCHAR TransferLength
[4];
764 UCHAR LogicalUnitNumber
:3;
768 } PAUSE_RESUME
, *PPAUSE_RESUME
;
775 UCHAR LogicalUnitNumber
:3;
780 UCHAR AllocationLength
[2];
783 } READ_TOC
, *PREAD_TOC
;
784 struct _READ_DISK_INFORMATION
790 UCHAR AllocationLength
[2];
792 } READ_DISK_INFORMATION
, *PREAD_DISK_INFORMATION
;
793 struct _READ_TRACK_INFORMATION
800 UCHAR BlockAddress
[4];
802 UCHAR AllocationLength
[2];
804 } READ_TRACK_INFORMATION
, *PREAD_TRACK_INFORMATION
;
805 struct _RESERVE_TRACK_RZONE
809 UCHAR ReservationSize
[4];
811 } RESERVE_TRACK_RZONE
, *PRESERVE_TRACK_RZONE
;
812 struct _SEND_OPC_INFORMATION
821 UCHAR ParameterListLength
[2];
823 } SEND_OPC_INFORMATION
, *PSEND_OPC_INFORMATION
;
830 UCHAR TrackNumber
[2];
833 } REPAIR_TRACK
, *PREPAIR_TRACK
;
843 UCHAR TrackNumber
[2];
846 } CLOSE_TRACK
, *PCLOSE_TRACK
;
847 struct _READ_BUFFER_CAPACITY
853 UCHAR AllocationLength
[2];
855 } READ_BUFFER_CAPACITY
, *PREAD_BUFFER_CAPACITY
;
856 struct _SEND_CUE_SHEET
860 UCHAR CueSheetSize
[3];
862 } SEND_CUE_SHEET
, *PSEND_CUE_SHEET
;
870 UCHAR LogicalBlockAddress
[4];
872 UCHAR AllocationLength
[2];
874 } READ_HEADER
, *PREAD_HEADER
;
879 UCHAR LogicalUnitNumber
:3;
880 UCHAR StartingBlockAddress
[4];
884 } PLAY_AUDIO
, *PPLAY_AUDIO
;
885 struct _PLAY_AUDIO_MSF
889 UCHAR LogicalUnitNumber
:3;
898 } PLAY_AUDIO_MSF
, *PPLAY_AUDIO_MSF
;
906 UCHAR AddressOrTrack
[4];
909 } BLANK_MEDIA
, *PBLANK_MEDIA
;
915 UCHAR ExpectedSectorType
:3;
917 _ANONYMOUS_UNION
union
921 UCHAR StartingBlockAddress
[4];
943 } PLAY_CD
, *PPLAY_CD
;
947 UCHAR RelativeAddress
:1;
951 UCHAR StartingAddress
[4];
957 } SCAN_CD
, *PSCAN_CD
;
958 struct _STOP_PLAY_SCAN
965 } STOP_PLAY_SCAN
, *PSTOP_PLAY_SCAN
;
972 UCHAR LogicalUnitNumber
:3;
979 UCHAR AllocationLength
[2];
981 } SUBCHANNEL
, *PSUBCHANNEL
;
985 UCHAR RelativeAddress
:1;
987 UCHAR ExpectedSectorType
:3;
989 UCHAR StartingLBA
[4];
990 UCHAR TransferBlocks
[3];
994 UCHAR IncludeUserData
:1;
996 UCHAR IncludeSyncData
:1;
997 UCHAR SubChannelSelection
:3;
1000 } READ_CD
, *PREAD_CD
;
1003 UCHAR OperationCode
;
1004 UCHAR RelativeAddress
:1;
1006 UCHAR ExpectedSectorType
:3;
1019 UCHAR IncludeUserData
:1;
1021 UCHAR IncludeSyncData
:1;
1022 UCHAR SubChannelSelection
:3;
1025 } READ_CD_MSF
, *PREAD_CD_MSF
;
1026 struct _PLXTR_READ_CDDA
1028 UCHAR OperationCode
;
1030 UCHAR LogicalUnitNumber
:3;
1031 UCHAR LogicalBlockByte0
;
1032 UCHAR LogicalBlockByte1
;
1033 UCHAR LogicalBlockByte2
;
1034 UCHAR LogicalBlockByte3
;
1035 UCHAR TransferBlockByte0
;
1036 UCHAR TransferBlockByte1
;
1037 UCHAR TransferBlockByte2
;
1038 UCHAR TransferBlockByte3
;
1041 } PLXTR_READ_CDDA
, *PPLXTR_READ_CDDA
;
1042 struct _NEC_READ_CDDA
1044 UCHAR OperationCode
;
1046 UCHAR LogicalBlockByte0
;
1047 UCHAR LogicalBlockByte1
;
1048 UCHAR LogicalBlockByte2
;
1049 UCHAR LogicalBlockByte3
;
1051 UCHAR TransferBlockByte0
;
1052 UCHAR TransferBlockByte1
;
1054 } NEC_READ_CDDA
, *PNEC_READ_CDDA
;
1057 UCHAR OperationCode
;
1061 UCHAR LogicalUnitNumber
:3;
1065 UCHAR AllocationLength
;
1067 } MODE_SENSE
, *PMODE_SENSE
;
1068 struct _MODE_SENSE10
1070 UCHAR OperationCode
;
1074 UCHAR LogicalUnitNumber
:3;
1078 UCHAR AllocationLength
[2];
1080 } MODE_SENSE10
, *PMODE_SENSE10
;
1083 UCHAR OperationCode
;
1087 UCHAR LogicalUnitNumber
:3;
1089 UCHAR ParameterListLength
;
1091 } MODE_SELECT
, *PMODE_SELECT
;
1092 struct _MODE_SELECT10
1094 UCHAR OperationCode
;
1098 UCHAR LogicalUnitNumber
:3;
1100 UCHAR ParameterListLength
[2];
1102 } MODE_SELECT10
, *PMODE_SELECT10
;
1105 UCHAR OperationCode
;
1110 UCHAR LogicalUnitNumber
:3;
1112 UCHAR LogicalBlockAddress
[4];
1119 UCHAR OperationCode
;
1123 UCHAR LogicalUnitNumber
:3;
1128 UCHAR ParameterPointer
[2];
1129 UCHAR AllocationLength
[2];
1131 } LOGSENSE
, *PLOGSENSE
;
1134 UCHAR OperationCode
;
1138 UCHAR LogicalUnitNumber
:3;
1142 UCHAR ParameterListLength
[2];
1144 } LOGSELECT
, *PLOGSELECT
;
1147 UCHAR OperationCode
;
1149 UCHAR LogicalUnitNumber
:3;
1150 UCHAR TransferLength
[3];
1155 UCHAR OperationCode
;
1157 UCHAR LogicalUnitNumber
:3;
1158 UCHAR LogicalBlockAddress
[4];
1164 UCHAR OperationCode
;
1168 UCHAR LogicalUnitNumber
:3;
1174 UCHAR OperationCode
;
1177 UCHAR LogicalUnitNumber
:3;
1183 } START_STOP
, *PSTART_STOP
;
1184 struct _MEDIA_REMOVAL
1186 UCHAR OperationCode
;
1188 UCHAR LogicalUnitNumber
:3;
1194 } MEDIA_REMOVAL
, *PMEDIA_REMOVAL
;
1197 UCHAR OperationCode
;
1200 UCHAR BlockAddress
[3];
1204 UCHAR VendorUnique
:2;
1205 } SEEK_BLOCK
, *PSEEK_BLOCK
;
1206 struct _REQUEST_BLOCK_ADDRESS
1208 UCHAR OperationCode
;
1210 UCHAR AllocationLength
;
1214 UCHAR VendorUnique
:2;
1215 } REQUEST_BLOCK_ADDRESS
, *PREQUEST_BLOCK_ADDRESS
;
1218 UCHAR OperationCode
;
1221 UCHAR PartitionSelect
:6;
1224 } PARTITION
, *PPARTITION
;
1225 struct _WRITE_TAPE_MARKS
1227 UCHAR OperationCode
;
1229 UCHAR WriteSetMarks
:1;
1231 UCHAR LogicalUnitNumber
:3;
1232 UCHAR TransferLength
[3];
1234 } WRITE_TAPE_MARKS
, *PWRITE_TAPE_MARKS
;
1235 struct _SPACE_TAPE_MARKS
1237 UCHAR OperationCode
;
1240 UCHAR LogicalUnitNumber
:3;
1252 UCHAR VendorUnique
:2;
1255 } SPACE_TAPE_MARKS
, *PSPACE_TAPE_MARKS
;
1256 struct _READ_POSITION
1264 } READ_POSITION
, *PREAD_POSITION
;
1265 struct _CDB6READWRITETAPE
1267 UCHAR OperationCode
;
1268 UCHAR VendorSpecific
:5;
1270 UCHAR TransferLenMSB
;
1272 UCHAR TransferLenLSB
;
1276 UCHAR VendorUnique
:2;
1277 } CDB6READWRITETAPE
, *PCDB6READWRITETAPE
;
1278 struct _INIT_ELEMENT_STATUS
1280 UCHAR OperationCode
;
1282 UCHAR LogicalUnitNubmer
:3;
1286 } INIT_ELEMENT_STATUS
, *PINIT_ELEMENT_STATUS
;
1287 struct _INITIALIZE_ELEMENT_RANGE
1289 UCHAR OperationCode
;
1292 UCHAR LogicalUnitNubmer
:3;
1293 UCHAR FirstElementAddress
[2];
1295 UCHAR NumberOfElements
[2];
1299 } INITIALIZE_ELEMENT_RANGE
, *PINITIALIZE_ELEMENT_RANGE
;
1300 struct _POSITION_TO_ELEMENT
1302 UCHAR OperationCode
;
1304 UCHAR LogicalUnitNumber
:3;
1305 UCHAR TransportElementAddress
[2];
1306 UCHAR DestinationElementAddress
[2];
1311 } POSITION_TO_ELEMENT
, *PPOSITION_TO_ELEMENT
;
1314 UCHAR OperationCode
;
1316 UCHAR LogicalUnitNumber
:3;
1317 UCHAR TransportElementAddress
[2];
1318 UCHAR SourceElementAddress
[2];
1319 UCHAR DestinationElementAddress
[2];
1324 } MOVE_MEDIUM
, *PMOVE_MEDIUM
;
1325 struct _EXCHANGE_MEDIUM
1327 UCHAR OperationCode
;
1329 UCHAR LogicalUnitNumber
:3;
1330 UCHAR TransportElementAddress
[2];
1331 UCHAR SourceElementAddress
[2];
1332 UCHAR Destination1ElementAddress
[2];
1333 UCHAR Destination2ElementAddress
[2];
1338 } EXCHANGE_MEDIUM
, *PEXCHANGE_MEDIUM
;
1339 struct _READ_ELEMENT_STATUS
1341 UCHAR OperationCode
;
1342 UCHAR ElementType
:4;
1344 UCHAR LogicalUnitNumber
:3;
1345 UCHAR StartingElementAddress
[2];
1346 UCHAR NumberOfElements
[2];
1348 UCHAR AllocationLength
[3];
1351 } READ_ELEMENT_STATUS
, *PREAD_ELEMENT_STATUS
;
1352 struct _SEND_VOLUME_TAG
1354 UCHAR OperationCode
;
1355 UCHAR ElementType
:4;
1357 UCHAR LogicalUnitNumber
:3;
1358 UCHAR StartingElementAddress
[2];
1363 UCHAR ParameterListLength
[2];
1366 } SEND_VOLUME_TAG
, *PSEND_VOLUME_TAG
;
1367 struct _REQUEST_VOLUME_ELEMENT_ADDRESS
1369 UCHAR OperationCode
;
1370 UCHAR ElementType
:4;
1372 UCHAR LogicalUnitNumber
:3;
1373 UCHAR StartingElementAddress
[2];
1374 UCHAR NumberElements
[2];
1376 UCHAR AllocationLength
[3];
1379 } REQUEST_VOLUME_ELEMENT_ADDRESS
, *PREQUEST_VOLUME_ELEMENT_ADDRESS
;
1382 UCHAR OperationCode
;
1393 } LOAD_UNLOAD
, *PLOAD_UNLOAD
;
1396 UCHAR OperationCode
;
1400 UCHAR AllocationLength
[2];
1403 } MECH_STATUS
, *PMECH_STATUS
;
1404 struct _SYNCHRONIZE_CACHE10
1406 UCHAR OperationCode
;
1411 UCHAR LogicalBlockAddress
[4];
1413 UCHAR BlockCount
[2];
1415 } SYNCHRONIZE_CACHE10
, *PSYNCHRONIZE_CACHE10
;
1416 struct _GET_EVENT_STATUS_NOTIFICATION
1418 UCHAR OperationCode
;
1423 UCHAR NotificationClassRequest
;
1425 UCHAR EventListLength
[2];
1427 } GET_EVENT_STATUS_NOTIFICATION
, *PGET_EVENT_STATUS_NOTIFICATION
;
1428 struct _GET_PERFORMANCE
1430 UCHAR OperationCode
;
1435 UCHAR StartingLBA
[4];
1437 UCHAR MaximumNumberOfDescriptors
[2];
1441 struct _READ_DVD_STRUCTURE
1443 UCHAR OperationCode
;
1446 UCHAR RMDBlockNumber
[4];
1449 UCHAR AllocationLength
[2];
1453 } READ_DVD_STRUCTURE
, *PREAD_DVD_STRUCTURE
;
1454 struct _SET_STREAMING
1456 UCHAR OperationCode
;
1458 UCHAR ParameterListLength
[2];
1461 struct _SEND_DVD_STRUCTURE
1463 UCHAR OperationCode
;
1468 UCHAR ParameterListLength
[2];
1471 } SEND_DVD_STRUCTURE
, *PSEND_DVD_STRUCTURE
;
1474 UCHAR OperationCode
;
1478 UCHAR ParameterListLength
[2];
1482 } SEND_KEY
, *PSEND_KEY
;
1485 UCHAR OperationCode
;
1488 UCHAR LogicalBlockAddress
[4];
1490 UCHAR AllocationLength
[2];
1494 } REPORT_KEY
, *PREPORT_KEY
;
1495 struct _SET_READ_AHEAD
1497 UCHAR OperationCode
;
1500 UCHAR TriggerLBA
[4];
1501 UCHAR ReadAheadLBA
[4];
1504 } SET_READ_AHEAD
, *PSET_READ_AHEAD
;
1505 struct _READ_FORMATTED_CAPACITIES
1507 UCHAR OperationCode
;
1511 UCHAR AllocationLength
[2];
1513 } READ_FORMATTED_CAPACITIES
, *PREAD_FORMATTED_CAPACITIES
;
1516 UCHAR OperationCode
;
1518 UCHAR AllocationLength
[4];
1521 } REPORT_LUNS
, *PREPORT_LUNS
;
1522 struct _PERSISTENT_RESERVE_IN
1524 UCHAR OperationCode
;
1525 UCHAR ServiceAction
:5;
1528 UCHAR AllocationLength
[2];
1530 } PERSISTENT_RESERVE_IN
, *PPERSISTENT_RESERVE_IN
;
1531 struct _PERSISTENT_RESERVE_OUT
1533 UCHAR OperationCode
;
1534 UCHAR ServiceAction
:5;
1539 UCHAR ParameterListLength
[2];
1541 } PERSISTENT_RESERVE_OUT
, *PPERSISTENT_RESERVE_OUT
;
1542 struct _GET_CONFIGURATION
1544 UCHAR OperationCode
;
1545 UCHAR RequestType
:1;
1547 UCHAR StartingFeature
[2];
1549 UCHAR AllocationLength
[2];
1551 } GET_CONFIGURATION
, *PGET_CONFIGURATION
;
1552 struct _SET_CD_SPEED
1554 UCHAR OperationCode
;
1555 _ANONYMOUS_UNION
union
1558 _ANONYMOUS_STRUCT
struct
1560 UCHAR RotationControl
:2;
1565 UCHAR WriteSpeed
[2];
1568 } SET_CD_SPEED
, *PSET_CD_SPEED
;
1571 UCHAR OperationCode
;
1572 UCHAR RelativeAddress
:1;
1574 UCHAR ForceUnitAccess
:1;
1575 UCHAR DisablePageOut
:1;
1576 UCHAR LogicalUnitNumber
:3;
1577 UCHAR LogicalBlock
[4];
1578 UCHAR TransferLength
[4];
1585 UCHAR OperationCode
;
1586 UCHAR RelativeAddress
:1;
1589 UCHAR ForceUnitAccess
:1;
1590 UCHAR DisablePageOut
:1;
1591 UCHAR LogicalUnitNumber
:3;
1592 UCHAR LogicalBlock
[4];
1593 UCHAR TransferLength
[4];
1600 UCHAR OperationCode
;
1602 UCHAR ForceUnitAccess
:1;
1603 UCHAR DisablePageOut
:1;
1604 UCHAR ReadProtect
:3;
1605 UCHAR LogicalBlock
[8];
1606 UCHAR TransferLength
[4];
1613 UCHAR OperationCode
;
1615 UCHAR ForceUnitAccess
:1;
1616 UCHAR DisablePageOut
:1;
1617 UCHAR WriteProtect
:3;
1618 UCHAR LogicalBlock
[8];
1619 UCHAR TransferLength
[4];
1626 UCHAR OperationCode
;
1629 UCHAR BlockVerify
:1;
1631 UCHAR DisablePageOut
:1;
1632 UCHAR VerifyProtect
:3;
1633 UCHAR LogicalBlock
[8];
1634 UCHAR VerificationLength
[4];
1639 struct _SYNCHRONIZE_CACHE16
1641 UCHAR OperationCode
;
1645 UCHAR LogicalBlock
[8];
1646 UCHAR BlockCount
[4];
1649 } SYNCHRONIZE_CACHE16
;
1650 struct _READ_CAPACITY16
1652 UCHAR OperationCode
;
1653 UCHAR ServiceAction
:5;
1655 UCHAR LogicalBlock
[8];
1656 UCHAR BlockCount
[4];
1665 typedef union _EIGHT_BYTE
1678 ULONGLONG AsULongLong
;
1679 } EIGHT_BYTE
, *PEIGHT_BYTE
;
1681 typedef union _FOUR_BYTE
1691 } FOUR_BYTE
, *PFOUR_BYTE
;
1693 typedef union _TWO_BYTE
1701 } TWO_BYTE
, *PTWO_BYTE
;
1702 #include <poppack.h>
1704 #if (NTDDI_VERSION < NTDDI_WINXP)
1705 typedef struct _INQUIRYDATA
1708 UCHAR DeviceTypeQualifier
:3;
1709 UCHAR DeviceTypeModifier
:7;
1710 UCHAR RemovableMedia
:1;
1712 UCHAR ResponseDataFormat
:4;
1715 UCHAR ReservedBit
:1;
1717 UCHAR AdditionalLength
;
1720 UCHAR CommandQueue
:1;
1722 UCHAR LinkedCommands
:1;
1723 UCHAR Synchronous
:1;
1726 UCHAR RelativeAddressing
:1;
1728 UCHAR ProductId
[16];
1729 UCHAR ProductRevisionLevel
[4];
1730 UCHAR VendorSpecific
[20];
1731 UCHAR Reserved3
[40];
1732 } INQUIRYDATA
, *PINQUIRYDATA
;
1734 #include <pshpack1.h>
1735 typedef struct _INQUIRYDATA
1738 UCHAR DeviceTypeQualifier
:3;
1739 UCHAR DeviceTypeModifier
:7;
1740 UCHAR RemovableMedia
:1;
1746 UCHAR ANSIVersion
:3;
1747 UCHAR ECMAVersion
:3;
1751 UCHAR ResponseDataFormat
:4;
1754 UCHAR TerminateTask
:1;
1756 UCHAR AdditionalLength
;
1761 UCHAR MediumChanger
:1;
1763 UCHAR ReservedBit2
:1;
1764 UCHAR EnclosureServices
:1;
1765 UCHAR ReservedBit3
:1;
1767 UCHAR CommandQueue
:1;
1768 UCHAR TransferDisable
:1;
1769 UCHAR LinkedCommands
:1;
1770 UCHAR Synchronous
:1;
1773 UCHAR RelativeAddressing
:1;
1775 UCHAR ProductId
[16];
1776 UCHAR ProductRevisionLevel
[4];
1777 UCHAR VendorSpecific
[20];
1778 UCHAR Reserved3
[40];
1779 } INQUIRYDATA
, *PINQUIRYDATA
;
1780 #include <poppack.h>
1783 typedef struct _VPD_MEDIA_SERIAL_NUMBER_PAGE
1786 UCHAR DeviceTypeQualifier
:3;
1790 UCHAR SerialNumber
[0];
1791 } VPD_MEDIA_SERIAL_NUMBER_PAGE
, *PVPD_MEDIA_SERIAL_NUMBER_PAGE
;
1793 typedef struct _VPD_SERIAL_NUMBER_PAGE
1796 UCHAR DeviceTypeQualifier
:3;
1800 UCHAR SerialNumber
[0];
1801 } VPD_SERIAL_NUMBER_PAGE
, *PVPD_SERIAL_NUMBER_PAGE
;
1803 typedef struct _VPD_IDENTIFICATION_DESCRIPTOR
1807 UCHAR IdentifierType
:4;
1808 UCHAR Association
:2;
1811 UCHAR IdentifierLength
;
1812 UCHAR Identifier
[0];
1813 } VPD_IDENTIFICATION_DESCRIPTOR
, *PVPD_IDENTIFICATION_DESCRIPTOR
;
1815 typedef struct _VPD_IDENTIFICATION_PAGE
1818 UCHAR DeviceTypeQualifier
:3;
1822 UCHAR Descriptors
[0];
1823 } VPD_IDENTIFICATION_PAGE
, *PVPD_IDENTIFICATION_PAGE
;
1825 typedef struct _VPD_SUPPORTED_PAGES_PAGE
1828 UCHAR DeviceTypeQualifier
:3;
1832 UCHAR SupportedPageList
[0];
1833 } VPD_SUPPORTED_PAGES_PAGE
, *PVPD_SUPPORTED_PAGES_PAGE
;
1835 #include <pshpack1.h>
1836 typedef struct _READ_CAPACITY_DATA
1838 ULONG LogicalBlockAddress
;
1839 ULONG BytesPerBlock
;
1840 } READ_CAPACITY_DATA
, *PREAD_CAPACITY_DATA
;
1842 typedef struct _READ_CAPACITY_DATA_EX
1844 LARGE_INTEGER LogicalBlockAddress
;
1845 ULONG BytesPerBlock
;
1846 } READ_CAPACITY_DATA_EX
, *PREAD_CAPACITY_DATA_EX
;
1848 typedef struct _MODE_PARAMETER_HEADER
1850 UCHAR ModeDataLength
;
1852 UCHAR DeviceSpecificParameter
;
1853 UCHAR BlockDescriptorLength
;
1854 }MODE_PARAMETER_HEADER
, *PMODE_PARAMETER_HEADER
;
1856 typedef struct _MODE_PARAMETER_HEADER10
1858 UCHAR ModeDataLength
[2];
1860 UCHAR DeviceSpecificParameter
;
1862 UCHAR BlockDescriptorLength
[2];
1863 }MODE_PARAMETER_HEADER10
, *PMODE_PARAMETER_HEADER10
;
1865 typedef struct _MODE_PARAMETER_BLOCK
1868 UCHAR NumberOfBlocks
[3];
1870 UCHAR BlockLength
[3];
1871 }MODE_PARAMETER_BLOCK
, *PMODE_PARAMETER_BLOCK
;
1873 typedef struct _LUN_LIST
1875 UCHAR LunListLength
[4];
1877 #if !defined(__midl)
1880 } LUN_LIST
, *PLUN_LIST
;
1881 #include <poppack.h>
1883 typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS
;
1885 typedef struct _ACCESS_RANGE
1887 STOR_PHYSICAL_ADDRESS RangeStart
;
1889 BOOLEAN RangeInMemory
;
1890 } ACCESS_RANGE
, *PACCESS_RANGE
;
1892 typedef struct _MEMORY_REGION
1895 PHYSICAL_ADDRESS PhysicalBase
;
1897 } MEMORY_REGION
, *PMEMORY_REGION
;
1899 typedef struct _PORT_CONFIGURATION_INFORMATION
1902 ULONG SystemIoBusNumber
;
1903 INTERFACE_TYPE AdapterInterfaceType
;
1904 ULONG BusInterruptLevel
;
1905 ULONG BusInterruptVector
;
1906 KINTERRUPT_MODE InterruptMode
;
1907 ULONG MaximumTransferLength
;
1908 ULONG NumberOfPhysicalBreaks
;
1913 ULONG AlignmentMask
;
1914 ULONG NumberOfAccessRanges
;
1915 ACCESS_RANGE (*AccessRanges
)[];
1917 UCHAR NumberOfBuses
;
1918 CCHAR InitiatorBusId
[8];
1919 BOOLEAN ScatterGather
;
1922 BOOLEAN AdapterScansDown
;
1923 BOOLEAN AtdiskPrimaryClaimed
;
1924 BOOLEAN AtdiskSecondaryClaimed
;
1925 BOOLEAN Dma32BitAddresses
;
1928 BOOLEAN NeedPhysicalAddresses
;
1929 BOOLEAN TaggedQueuing
;
1930 BOOLEAN AutoRequestSense
;
1931 BOOLEAN MultipleRequestPerLu
;
1932 BOOLEAN ReceiveEvent
;
1933 BOOLEAN RealModeInitialized
;
1934 BOOLEAN BufferAccessScsiPortControlled
;
1935 UCHAR MaximumNumberOfTargets
;
1936 UCHAR ReservedUchars
[2];
1938 ULONG BusInterruptLevel2
;
1939 ULONG BusInterruptVector2
;
1940 KINTERRUPT_MODE InterruptMode2
;
1943 DMA_WIDTH DmaWidth2
;
1944 DMA_SPEED DmaSpeed2
;
1945 ULONG DeviceExtensionSize
;
1946 ULONG SpecificLuExtensionSize
;
1947 ULONG SrbExtensionSize
;
1948 UCHAR Dma64BitAddresses
;
1949 BOOLEAN ResetTargetSupported
;
1950 UCHAR MaximumNumberOfLogicalUnits
;
1951 BOOLEAN WmiDataProvider
;
1952 STOR_SYNCHRONIZATION_MODEL SynchronizationModel
;
1953 } PORT_CONFIGURATION_INFORMATION
, *PPORT_CONFIGURATION_INFORMATION
;
1955 typedef struct _STOR_SCATTER_GATHER_ELEMENT
1957 STOR_PHYSICAL_ADDRESS PhysicalAddress
;
1960 } STOR_SCATTER_GATHER_ELEMENT
, *PSTOR_SCATTER_GATHER_ELEMENT
;
1962 typedef struct _STOR_SCATTER_GATHER_LIST
1964 ULONG NumberOfElements
;
1966 STOR_SCATTER_GATHER_ELEMENT List
[];
1967 } STOR_SCATTER_GATHER_LIST
, *PSTOR_SCATTER_GATHER_LIST
;
1969 typedef struct _DPC_BUFFER
1979 PVOID DeferredRoutine
;
1980 PVOID DeferredContext
;
1981 PVOID SystemArgument1
;
1982 PVOID SystemArgument2
;
1986 typedef struct _STOR_DPC
1990 } STOR_DPC
, *PSTOR_DPC
;
1992 typedef struct _STOR_LOCK_HANDLE
2004 } STOR_LOCK_HANDLE
, *PSTOR_LOCK_HANDLE
;
2008 (NTAPI
*PHW_INITIALIZE
)(
2009 _In_ PVOID DeviceExtension
);
2013 (NTAPI
*PHW_BUILDIO
)(
2014 _In_ PVOID DeviceExtension
,
2015 _In_ PSCSI_REQUEST_BLOCK Srb
);
2019 (NTAPI
*PHW_STARTIO
)(
2020 _In_ PVOID DeviceExtension
,
2021 _In_ PSCSI_REQUEST_BLOCK Srb
);
2025 (NTAPI
*PHW_INTERRUPT
)(
2026 _In_ PVOID DeviceExtension
);
2031 _In_ PVOID DeviceExtension
);
2035 (NTAPI
*PHW_DMA_STARTED
)(
2036 _In_ PVOID DeviceExtension
);
2040 (NTAPI
*PHW_FIND_ADAPTER
)(
2041 IN PVOID DeviceExtension
,
2043 IN PVOID BusInformation
,
2044 IN PCHAR ArgumentString
,
2045 IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo
,
2046 OUT PBOOLEAN Again
);
2050 (NTAPI
*PHW_RESET_BUS
)(
2051 IN PVOID DeviceExtension
,
2056 (NTAPI
*PHW_ADAPTER_STATE
)(
2057 IN PVOID DeviceExtension
,
2059 IN BOOLEAN SaveState
);
2062 SCSI_ADAPTER_CONTROL_STATUS
2063 (NTAPI
*PHW_ADAPTER_CONTROL
)(
2064 IN PVOID DeviceExtension
,
2065 IN SCSI_ADAPTER_CONTROL_TYPE ControlType
,
2066 IN PVOID Parameters
);
2070 (*PHW_PASSIVE_INITIALIZE_ROUTINE
)(
2071 _In_ PVOID DeviceExtension
);
2077 _In_ PVOID HwDeviceExtension
,
2078 _In_ PVOID SystemArgument1
,
2079 _In_ PVOID SystemArgument2
);
2083 (NTAPI STOR_SYNCHRONIZED_ACCESS
)(
2084 _In_ PVOID HwDeviceExtension
,
2085 _In_ PVOID Context
);
2087 typedef STOR_SYNCHRONIZED_ACCESS
*PSTOR_SYNCHRONIZED_ACCESS
;
2089 typedef struct _HW_INITIALIZATION_DATA
2091 ULONG HwInitializationDataSize
;
2092 INTERFACE_TYPE AdapterInterfaceType
;
2093 PHW_INITIALIZE HwInitialize
;
2094 PHW_STARTIO HwStartIo
;
2095 PHW_INTERRUPT HwInterrupt
;
2096 PHW_FIND_ADAPTER HwFindAdapter
;
2097 PHW_RESET_BUS HwResetBus
;
2098 PHW_DMA_STARTED HwDmaStarted
;
2099 PHW_ADAPTER_STATE HwAdapterState
;
2100 ULONG DeviceExtensionSize
;
2101 ULONG SpecificLuExtensionSize
;
2102 ULONG SrbExtensionSize
;
2103 ULONG NumberOfAccessRanges
;
2106 BOOLEAN NeedPhysicalAddresses
;
2107 BOOLEAN TaggedQueuing
;
2108 BOOLEAN AutoRequestSense
;
2109 BOOLEAN MultipleRequestPerLu
;
2110 BOOLEAN ReceiveEvent
;
2111 USHORT VendorIdLength
;
2113 USHORT ReservedUshort
;
2114 USHORT DeviceIdLength
;
2116 PHW_ADAPTER_CONTROL HwAdapterControl
;
2117 PHW_BUILDIO HwBuildIo
;
2118 } HW_INITIALIZATION_DATA
, *PHW_INITIALIZATION_DATA
;
2122 #define REVERSE_BYTES_QUAD(Destination, Source) { \
2123 PEIGHT_BYTE d = (PEIGHT_BYTE)(Destination); \
2124 PEIGHT_BYTE s = (PEIGHT_BYTE)(Source); \
2125 d->Byte7 = s->Byte0; \
2126 d->Byte6 = s->Byte1; \
2127 d->Byte5 = s->Byte2; \
2128 d->Byte4 = s->Byte3; \
2129 d->Byte3 = s->Byte4; \
2130 d->Byte2 = s->Byte5; \
2131 d->Byte1 = s->Byte6; \
2132 d->Byte0 = s->Byte7; \
2135 #define REVERSE_BYTES(Destination, Source) { \
2136 PFOUR_BYTE d = (PFOUR_BYTE)(Destination); \
2137 PFOUR_BYTE s = (PFOUR_BYTE)(Source); \
2138 d->Byte3 = s->Byte0; \
2139 d->Byte2 = s->Byte1; \
2140 d->Byte1 = s->Byte2; \
2141 d->Byte0 = s->Byte3; \
2144 #define REVERSE_BYTES_SHORT(Destination, Source) { \
2145 PTWO_BYTE d = (PTWO_BYTE)(Destination); \
2146 PTWO_BYTE s = (PTWO_BYTE)(Source); \
2147 d->Byte1 = s->Byte0; \
2148 d->Byte0 = s->Byte1; \
2151 #define StorPortCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
2156 StorPortAllocateRegistryBuffer(
2157 _In_ PVOID HwDeviceExtension
,
2158 _In_ PULONG Length
);
2164 _In_ PVOID HwDeviceExtension
,
2165 _In_ ULONG RequestsToComplete
);
2170 StorPortCompleteRequest(
2171 _In_ PVOID HwDeviceExtension
,
2173 _In_ UCHAR TargetId
,
2175 _In_ UCHAR SrbStatus
);
2180 StorPortConvertPhysicalAddressToUlong64(
2181 _In_ STOR_PHYSICAL_ADDRESS Address
);
2184 STOR_PHYSICAL_ADDRESS
2186 StorPortConvertUlong64ToPhysicalAddress(
2187 _In_ ULONG64 UlongAddress
);
2193 _In_ ULONG DebugPrintLevel
,
2194 _In_ PCCHAR DebugMessage
,
2201 _In_ PVOID HwDeviceExtension
,
2203 _In_ UCHAR TargetId
,
2205 _In_ ULONG RequestsToComplete
);
2210 StorPortDeviceReady(
2211 _In_ PVOID HwDeviceExtension
,
2213 _In_ UCHAR TargetId
,
2219 StorPortFreeDeviceBase(
2220 _In_ PVOID HwDeviceExtension
,
2221 _In_ PVOID MappedAddress
);
2226 StorPortFreeRegistryBuffer(
2227 _In_ PVOID HwDeviceExtension
,
2228 _In_ PUCHAR Buffer
);
2234 _In_ PVOID DeviceExtension
,
2235 _In_ ULONG BusDataType
,
2236 _In_ ULONG SystemIoBusNumber
,
2237 _In_ ULONG SlotNumber
,
2238 _Out_
_When_(Length
!= 0, _Out_writes_bytes_(Length
)) PVOID Buffer
,
2244 StorPortGetDeviceBase(
2245 _In_ PVOID HwDeviceExtension
,
2246 _In_ INTERFACE_TYPE BusType
,
2247 _In_ ULONG SystemIoBusNumber
,
2248 _In_ STOR_PHYSICAL_ADDRESS IoAddress
,
2249 _In_ ULONG NumberOfBytes
,
2250 _In_ BOOLEAN InIoSpace
);
2255 StorPortGetLogicalUnit(
2256 _In_ PVOID HwDeviceExtension
,
2258 _In_ UCHAR TargetId
,
2262 STOR_PHYSICAL_ADDRESS
2264 StorPortGetPhysicalAddress(
2265 _In_ PVOID HwDeviceExtension
,
2266 _In_opt_ PSCSI_REQUEST_BLOCK Srb
,
2267 _In_ PVOID VirtualAddress
,
2268 _Out_ ULONG
*Length
);
2271 PSTOR_SCATTER_GATHER_LIST
2273 StorPortGetScatterGatherList(
2274 _In_ PVOID DeviceExtension
,
2275 _In_ PSCSI_REQUEST_BLOCK Srb
);
2281 _In_ PVOID DeviceExtension
,
2283 _In_ UCHAR TargetId
,
2285 _In_ LONG QueueTag
);
2290 StorPortGetUncachedExtension(
2291 _In_ PVOID HwDeviceExtension
,
2292 _In_ PPORT_CONFIGURATION_INFORMATION ConfigInfo
,
2293 _In_ ULONG NumberOfBytes
);
2298 StorPortGetVirtualAddress(
2299 _In_ PVOID HwDeviceExtension
,
2300 _In_ STOR_PHYSICAL_ADDRESS PhysicalAddress
);
2306 _In_ PVOID Argument1
,
2307 _In_ PVOID Argument2
,
2308 _In_ PHW_INITIALIZATION_DATA HwInitializationData
,
2309 _In_opt_ PVOID Unused
);
2315 _In_ PVOID HwDeviceExtension
,
2316 _In_opt_ PSCSI_REQUEST_BLOCK Srb
,
2318 _In_ UCHAR TargetId
,
2320 _In_ ULONG ErrorCode
,
2321 _In_ ULONG UniqueId
);
2327 _Out_writes_bytes_(Length
) PVOID WriteBuffer
,
2328 _In_reads_bytes_(Length
) PVOID ReadBuffer
,
2334 StorPortNotification(
2335 _In_ SCSI_NOTIFICATION_TYPE NotificationType
,
2336 _In_ PVOID HwDeviceExtension
,
2342 StorPortQuerySystemTime(
2343 _Out_ PLARGE_INTEGER CurrentTime
);
2349 _In_ PVOID HwDeviceExtension
,
2350 _In_ ULONG TimeOut
);
2355 StorPortPauseDevice(
2356 _In_ PVOID HwDeviceExtension
,
2358 _In_ UCHAR TargetId
,
2360 _In_ ULONG TimeOut
);
2365 StorPortReadPortBufferUchar(
2366 _In_ PVOID HwDeviceExtension
,
2374 StorPortReadPortBufferUlong(
2375 _In_ PVOID HwDeviceExtension
,
2383 StorPortReadPortBufferUshort(
2384 _In_ PVOID HwDeviceExtension
,
2386 _In_ PUSHORT Buffer
,
2392 StorPortReadPortUchar(
2393 _In_ PVOID HwDeviceExtension
,
2399 StorPortReadPortUlong(
2400 _In_ PVOID HwDeviceExtension
,
2406 StorPortReadPortUshort(
2407 _In_ PVOID HwDeviceExtension
,
2413 StorPortReadRegisterBufferUchar(
2414 _In_ PVOID HwDeviceExtension
,
2415 _In_ PUCHAR Register
,
2422 StorPortReadRegisterBufferUlong(
2423 _In_ PVOID HwDeviceExtension
,
2424 _In_ PULONG Register
,
2431 StorPortReadRegisterBufferUshort(
2432 _In_ PVOID HwDeviceExtension
,
2433 _In_ PUSHORT Register
,
2434 _In_ PUSHORT Buffer
,
2440 StorPortReadRegisterUchar(
2441 _In_ PVOID HwDeviceExtension
,
2442 _In_ PUCHAR Register
);
2447 StorPortReadRegisterUlong(
2448 _In_ PVOID HwDeviceExtension
,
2449 _In_ PULONG Register
);
2454 StorPortReadRegisterUshort(
2455 _In_ PVOID HwDeviceExtension
,
2456 _In_ PUSHORT Register
);
2462 _In_ PVOID HwDeviceExtension
);
2467 StorPortRegistryRead(
2468 _In_ PVOID HwDeviceExtension
,
2469 _In_ PUCHAR ValueName
,
2473 _In_ PULONG BufferLength
);
2478 StorPortRegistryWrite(
2479 _In_ PVOID HwDeviceExtension
,
2480 _In_ PUCHAR ValueName
,
2484 _In_ ULONG BufferLength
);
2490 _In_ PVOID HwDeviceExtension
);
2495 StorPortResumeDevice(
2496 _In_ PVOID HwDeviceExtension
,
2498 _In_ UCHAR TargetId
,
2504 StorPortSetBusDataByOffset(
2505 _In_ PVOID DeviceExtension
,
2506 _In_ ULONG BusDataType
,
2507 _In_ ULONG SystemIoBusNumber
,
2508 _In_ ULONG SlotNumber
,
2509 _In_reads_bytes_(Length
) PVOID Buffer
,
2516 StorPortSetDeviceQueueDepth(
2517 _In_ PVOID HwDeviceExtension
,
2519 _In_ UCHAR TargetId
,
2526 StorPortStallExecution(
2532 StorPortSynchronizeAccess(
2533 _In_ PVOID HwDeviceExtension
,
2534 _In_ PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine
,
2535 _In_opt_ PVOID Context
);
2540 StorPortValidateRange(
2541 _In_ PVOID HwDeviceExtension
,
2542 _In_ INTERFACE_TYPE BusType
,
2543 _In_ ULONG SystemIoBusNumber
,
2544 _In_ STOR_PHYSICAL_ADDRESS IoAddress
,
2545 _In_ ULONG NumberOfBytes
,
2546 _In_ BOOLEAN InIoSpace
);
2551 StorPortWritePortBufferUchar(
2552 _In_ PVOID HwDeviceExtension
,
2560 StorPortWritePortBufferUlong(
2561 _In_ PVOID HwDeviceExtension
,
2569 StorPortWritePortBufferUshort(
2570 _In_ PVOID HwDeviceExtension
,
2572 _In_ PUSHORT Buffer
,
2578 StorPortWritePortUchar(
2579 _In_ PVOID HwDeviceExtension
,
2586 StorPortWritePortUlong(
2587 _In_ PVOID HwDeviceExtension
,
2594 StorPortWritePortUshort(
2595 _In_ PVOID HwDeviceExtension
,
2602 StorPortWriteRegisterBufferUchar(
2603 _In_ PVOID HwDeviceExtension
,
2604 _In_ PUCHAR Register
,
2611 StorPortWriteRegisterBufferUlong(
2612 _In_ PVOID HwDeviceExtension
,
2613 _In_ PULONG Register
,
2620 StorPortWriteRegisterBufferUshort(
2621 _In_ PVOID HwDeviceExtension
,
2622 _In_ PUSHORT Register
,
2623 _In_ PUSHORT Buffer
,
2629 StorPortWriteRegisterUchar(
2630 _In_ PVOID HwDeviceExtension
,
2631 _In_ PUCHAR Register
,
2637 StorPortWriteRegisterUlong(
2638 _In_ PVOID HwDeviceExtension
,
2639 _In_ PULONG Register
,
2645 StorPortWriteRegisterUshort(
2646 _In_ PVOID HwDeviceExtension
,
2647 _In_ PUSHORT Register
,
2653 StorPortEnablePassiveInitialization(
2654 _In_ PVOID DeviceExtension
,
2655 _In_ PHW_PASSIVE_INITIALIZE_ROUTINE HwPassiveInitializeRoutine
)
2659 StorPortNotification(EnablePassiveInitialization
,
2661 HwPassiveInitializeRoutine
,
2663 return (BOOLEAN
)Succ
;
2668 StorPortInitializeDpc(
2669 _In_ PVOID DeviceExtension
,
2670 _Out_ PSTOR_DPC Dpc
,
2671 _In_ PHW_DPC_ROUTINE HwDpcRoutine
)
2673 StorPortNotification(InitializeDpc
,
2682 _In_ PVOID DeviceExtension
,
2684 _In_ PVOID SystemArgument1
,
2685 _In_ PVOID SystemArgument2
)
2689 StorPortNotification(IssueDpc
,
2695 return (BOOLEAN
)Succ
;
2700 StorPortAcquireSpinLock(
2701 _In_ PVOID DeviceExtension
,
2702 _In_ STOR_SPINLOCK SpinLock
,
2703 _In_ PVOID LockContext
,
2704 _Inout_ PSTOR_LOCK_HANDLE LockHandle
)
2706 StorPortNotification(AcquireSpinLock
,
2715 StorPortReleaseSpinLock(
2716 _In_ PVOID DeviceExtension
,
2717 _Inout_ PSTOR_LOCK_HANDLE LockHandle
)
2719 StorPortNotification(ReleaseSpinLock
,
2725 #define DebugPrint(x) StorPortDebugPrint x
2727 #define DebugPrint(x)
2734 #endif /* _NTSTORPORT_ */