24 #error STORPORT.H must be included instead of SCSI.H
28 #error STORPORT.H must be included instead of SRB.H
45#if (NTDDI_VERSION >= NTDDI_WIN8)
46#define SCSI_MAXIMUM_BUSES_PER_ADAPTER 255
48#define SCSI_MAXIMUM_TARGETS_PER_BUS 128
49#define SCSI_MAXIMUM_LUNS_PER_TARGET 255
50#define SCSI_MINIMUM_PHYSICAL_BREAKS 16
51#define SCSI_MAXIMUM_PHYSICAL_BREAKS 255
55#define SCSI_MAXIMUM_BUSES 8
56#define SCSI_MAXIMUM_TARGETS 8
57#define SCSI_MAXIMUM_LOGICAL_UNITS 8
60#define SCSI_DMA64_MINIPORT_SUPPORTED 0x01
61#define SCSI_DMA64_SYSTEM_SUPPORTED 0x80
62#if (NTDDI_VERSION > NTDDI_WS03SP1)
63#define SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED 0x02
66#define SP_UNINITIALIZED_VALUE ((ULONG) ~0)
67#define SP_UNTAGGED ((UCHAR) ~0)
72#if defined(_STORPORT_)
75#define STORPORT_API DECLSPEC_IMPORT
78#define DIRECT_ACCESS_DEVICE 0x00
79#define SEQUENTIAL_ACCESS_DEVICE 0x01
80#define PRINTER_DEVICE 0x02
81#define PROCESSOR_DEVICE 0x03
82#define WRITE_ONCE_READ_MULTIPLE_DEVICE 0x04
83#define READ_ONLY_DIRECT_ACCESS_DEVICE 0x05
84#define SCANNER_DEVICE 0x06
85#define OPTICAL_DEVICE 0x07
86#define MEDIUM_CHANGER 0x08
87#define COMMUNICATION_DEVICE 0x09
88#define ARRAY_CONTROLLER_DEVICE 0x0C
89#define SCSI_ENCLOSURE_DEVICE 0x0D
90#define REDUCED_BLOCK_DEVICE 0x0E
91#define OPTICAL_CARD_READER_WRITER_DEVICE 0x0F
92#define BRIDGE_CONTROLLER_DEVICE 0x10
93#define OBJECT_BASED_STORAGE_DEVICE 0x11
94#define LOGICAL_UNIT_NOT_PRESENT_DEVICE 0x7F
96#define DEVICE_CONNECTED 0x00
98#define CDB6GENERIC_LENGTH 6
99#define CDB10GENERIC_LENGTH 10
100#define CDB12GENERIC_LENGTH 12
102#define INQUIRYDATABUFFERSIZE 36
103#define SENSE_BUFFER_SIZE 18
104#define MAX_SENSE_BUFFER_SIZE 255
106#define FILE_DEVICE_SCSI 0x0000001b
107#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011)
108#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012)
109#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013)
111#define MODE_PAGE_VENDOR_SPECIFIC 0x00
112#define MODE_PAGE_ERROR_RECOVERY 0x01
113#define MODE_PAGE_DISCONNECT 0x02
114#define MODE_PAGE_FORMAT_DEVICE 0x03
115#define MODE_PAGE_MRW 0x03
116#define MODE_PAGE_RIGID_GEOMETRY 0x04
117#define MODE_PAGE_FLEXIBILE 0x05
118#define MODE_PAGE_WRITE_PARAMETERS 0x05
119#define MODE_PAGE_VERIFY_ERROR 0x07
120#define MODE_PAGE_CACHING 0x08
121#define MODE_PAGE_PERIPHERAL 0x09
122#define MODE_PAGE_CONTROL 0x0A
123#define MODE_PAGE_MEDIUM_TYPES 0x0B
124#define MODE_PAGE_NOTCH_PARTITION 0x0C
125#define MODE_PAGE_CD_AUDIO_CONTROL 0x0E
126#define MODE_PAGE_DATA_COMPRESS 0x0F
127#define MODE_PAGE_DEVICE_CONFIG 0x10
128#define MODE_PAGE_XOR_CONTROL 0x10
129#define MODE_PAGE_MEDIUM_PARTITION 0x11
130#define MODE_PAGE_ENCLOSURE_SERVICES_MANAGEMENT 0x14
131#define MODE_PAGE_EXTENDED 0x15
132#define MODE_PAGE_EXTENDED_DEVICE_SPECIFIC 0x16
133#define MODE_PAGE_CDVD_FEATURE_SET 0x18
134#define MODE_PAGE_PROTOCOL_SPECIFIC_LUN 0x18
135#define MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19
136#define MODE_PAGE_POWER_CONDITION 0x1A
137#define MODE_PAGE_LUN_MAPPING 0x1B
138#define MODE_PAGE_FAULT_REPORTING 0x1C
139#define MODE_PAGE_CDVD_INACTIVITY 0x1D
140#define MODE_PAGE_ELEMENT_ADDRESS 0x1D
141#define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E
142#define MODE_PAGE_DEVICE_CAPABILITIES 0x1F
143#define MODE_PAGE_CAPABILITIES 0x2A
144#define MODE_SENSE_RETURN_ALL 0x3F
146#define MODE_SENSE_CURRENT_VALUES 0x00
147#define MODE_SENSE_CHANGEABLE_VALUES 0x40
148#define MODE_SENSE_DEFAULT_VAULES 0x80
149#define MODE_SENSE_SAVED_VALUES 0xc0
151#define SCSIOP_TEST_UNIT_READY 0x00
152#define SCSIOP_REZERO_UNIT 0x01
153#define SCSIOP_REWIND 0x01
154#define SCSIOP_REQUEST_BLOCK_ADDR 0x02
155#define SCSIOP_REQUEST_SENSE 0x03
156#define SCSIOP_FORMAT_UNIT 0x04
157#define SCSIOP_READ_BLOCK_LIMITS 0x05
158#define SCSIOP_REASSIGN_BLOCKS 0x07
159#define SCSIOP_INIT_ELEMENT_STATUS 0x07
160#define SCSIOP_READ6 0x08
161#define SCSIOP_RECEIVE 0x08
162#define SCSIOP_WRITE6 0x0A
163#define SCSIOP_PRINT 0x0A
164#define SCSIOP_SEND 0x0A
165#define SCSIOP_SEEK6 0x0B
166#define SCSIOP_TRACK_SELECT 0x0B
167#define SCSIOP_SLEW_PRINT 0x0B
168#define SCSIOP_SET_CAPACITY 0x0B
169#define SCSIOP_SEEK_BLOCK 0x0C
170#define SCSIOP_PARTITION 0x0D
171#define SCSIOP_READ_REVERSE 0x0F
172#define SCSIOP_WRITE_FILEMARKS 0x10
173#define SCSIOP_FLUSH_BUFFER 0x10
174#define SCSIOP_SPACE 0x11
175#define SCSIOP_INQUIRY 0x12
176#define SCSIOP_VERIFY6 0x13
177#define SCSIOP_RECOVER_BUF_DATA 0x14
178#define SCSIOP_MODE_SELECT 0x15
179#define SCSIOP_RESERVE_UNIT 0x16
180#define SCSIOP_RELEASE_UNIT 0x17
181#define SCSIOP_COPY 0x18
182#define SCSIOP_ERASE 0x19
183#define SCSIOP_MODE_SENSE 0x1A
184#define SCSIOP_START_STOP_UNIT 0x1B
185#define SCSIOP_STOP_PRINT 0x1B
186#define SCSIOP_LOAD_UNLOAD 0x1B
187#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C
188#define SCSIOP_SEND_DIAGNOSTIC 0x1D
189#define SCSIOP_MEDIUM_REMOVAL 0x1E
190#define SCSIOP_READ_FORMATTED_CAPACITY 0x23
191#define SCSIOP_READ_CAPACITY 0x25
192#define SCSIOP_READ 0x28
193#define SCSIOP_WRITE 0x2A
194#define SCSIOP_SEEK 0x2B
195#define SCSIOP_LOCATE 0x2B
196#define SCSIOP_POSITION_TO_ELEMENT 0x2B
197#define SCSIOP_WRITE_VERIFY 0x2E
198#define SCSIOP_VERIFY 0x2F
199#define SCSIOP_SEARCH_DATA_HIGH 0x30
200#define SCSIOP_SEARCH_DATA_EQUAL 0x31
201#define SCSIOP_SEARCH_DATA_LOW 0x32
202#define SCSIOP_SET_LIMITS 0x33
203#define SCSIOP_READ_POSITION 0x34
204#define SCSIOP_SYNCHRONIZE_CACHE 0x35
205#define SCSIOP_COMPARE 0x39
206#define SCSIOP_COPY_COMPARE 0x3A
207#define SCSIOP_WRITE_DATA_BUFF 0x3B
208#define SCSIOP_READ_DATA_BUFF 0x3C
209#define SCSIOP_WRITE_LONG 0x3F
210#define SCSIOP_CHANGE_DEFINITION 0x40
211#define SCSIOP_WRITE_SAME 0x41
212#define SCSIOP_READ_SUB_CHANNEL 0x42
213#define SCSIOP_READ_TOC 0x43
214#define SCSIOP_READ_HEADER 0x44
215#define SCSIOP_REPORT_DENSITY_SUPPORT 0x44
216#define SCSIOP_PLAY_AUDIO 0x45
217#define SCSIOP_GET_CONFIGURATION 0x46
218#define SCSIOP_PLAY_AUDIO_MSF 0x47
219#define SCSIOP_PLAY_TRACK_INDEX 0x48
220#define SCSIOP_PLAY_TRACK_RELATIVE 0x49
221#define SCSIOP_GET_EVENT_STATUS 0x4A
222#define SCSIOP_PAUSE_RESUME 0x4B
223#define SCSIOP_LOG_SELECT 0x4C
224#define SCSIOP_LOG_SENSE 0x4D
225#define SCSIOP_STOP_PLAY_SCAN 0x4E
226#define SCSIOP_XDWRITE 0x50
227#define SCSIOP_XPWRITE 0x51
228#define SCSIOP_READ_DISK_INFORMATION 0x51
229#define SCSIOP_READ_DISC_INFORMATION 0x51
230#define SCSIOP_READ_TRACK_INFORMATION 0x52
231#define SCSIOP_XDWRITE_READ 0x53
232#define SCSIOP_RESERVE_TRACK_RZONE 0x53
233#define SCSIOP_SEND_OPC_INFORMATION 0x54
234#define SCSIOP_MODE_SELECT10 0x55
235#define SCSIOP_RESERVE_UNIT10 0x56
236#define SCSIOP_RESERVE_ELEMENT 0x56
237#define SCSIOP_RELEASE_UNIT10 0x57
238#define SCSIOP_RELEASE_ELEMENT 0x57
239#define SCSIOP_REPAIR_TRACK 0x58
240#define SCSIOP_MODE_SENSE10 0x5A
241#define SCSIOP_CLOSE_TRACK_SESSION 0x5B
242#define SCSIOP_READ_BUFFER_CAPACITY 0x5C
243#define SCSIOP_SEND_CUE_SHEET 0x5D
244#define SCSIOP_PERSISTENT_RESERVE_IN 0x5E
245#define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F
246#define SCSIOP_XDWRITE_EXTENDED16 0x80
247#define SCSIOP_WRITE_FILEMARKS16 0x80
248#define SCSIOP_REBUILD16 0x81
249#define SCSIOP_READ_REVERSE16 0x81
250#define SCSIOP_REGENERATE16 0x82
251#define SCSIOP_EXTENDED_COPY 0x83
252#define SCSIOP_RECEIVE_COPY_RESULTS 0x84
253#define SCSIOP_ATA_PASSTHROUGH16 0x85
254#define SCSIOP_ACCESS_CONTROL_IN 0x86
255#define SCSIOP_ACCESS_CONTROL_OUT 0x87
256#define SCSIOP_READ16 0x88
257#define SCSIOP_WRITE16 0x8A
258#define SCSIOP_READ_ATTRIBUTES 0x8C
259#define SCSIOP_WRITE_ATTRIBUTES 0x8D
260#define SCSIOP_WRITE_VERIFY16 0x8E
261#define SCSIOP_VERIFY16 0x8F
262#define SCSIOP_PREFETCH16 0x90
263#define SCSIOP_SYNCHRONIZE_CACHE16 0x91
264#define SCSIOP_SPACE16 0x91
265#define SCSIOP_LOCK_UNLOCK_CACHE16 0x92
266#define SCSIOP_LOCATE16 0x92
267#define SCSIOP_WRITE_SAME16 0x93
268#define SCSIOP_ERASE16 0x93
269#define SCSIOP_READ_CAPACITY16 0x9E
270#define SCSIOP_SERVICE_ACTION_IN16 0x9E
271#define SCSIOP_SERVICE_ACTION_OUT16 0x9F
272#define SCSIOP_REPORT_LUNS 0xA0
273#define SCSIOP_BLANK 0xA1
274#define SCSIOP_ATA_PASSTHROUGH12 0xA1
275#define SCSIOP_SEND_EVENT 0xA2
276#define SCSIOP_SEND_KEY 0xA3
277#define SCSIOP_MAINTENANCE_IN 0xA3
278#define SCSIOP_REPORT_KEY 0xA4
279#define SCSIOP_MAINTENANCE_OUT 0xA4
280#define SCSIOP_MOVE_MEDIUM 0xA5
281#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6
282#define SCSIOP_EXCHANGE_MEDIUM 0xA6
283#define SCSIOP_SET_READ_AHEAD 0xA7
284#define SCSIOP_MOVE_MEDIUM_ATTACHED 0xA7
285#define SCSIOP_READ12 0xA8
286#define SCSIOP_GET_MESSAGE 0xA8
287#define SCSIOP_SERVICE_ACTION_OUT12 0xA9
288#define SCSIOP_WRITE12 0xAA
289#define SCSIOP_SEND_MESSAGE 0xAB
290#define SCSIOP_SERVICE_ACTION_IN12 0xAB
291#define SCSIOP_GET_PERFORMANCE 0xAC
292#define SCSIOP_READ_DVD_STRUCTURE 0xAD
293#define SCSIOP_WRITE_VERIFY12 0xAE
294#define SCSIOP_VERIFY12 0xAF
295#define SCSIOP_SEARCH_DATA_HIGH12 0xB0
296#define SCSIOP_SEARCH_DATA_EQUAL12 0xB1
297#define SCSIOP_SEARCH_DATA_LOW12 0xB2
298#define SCSIOP_SET_LIMITS12 0xB3
299#define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4
300#define SCSIOP_REQUEST_VOL_ELEMENT 0xB5
301#define SCSIOP_SEND_VOLUME_TAG 0xB6
302#define SCSIOP_SET_STREAMING 0xB6
303#define SCSIOP_READ_DEFECT_DATA 0xB7
304#define SCSIOP_READ_ELEMENT_STATUS 0xB8
305#define SCSIOP_READ_CD_MSF 0xB9
306#define SCSIOP_SCAN_CD 0xBA
307#define SCSIOP_REDUNDANCY_GROUP_IN 0xBA
308#define SCSIOP_SET_CD_SPEED 0xBB
309#define SCSIOP_REDUNDANCY_GROUP_OUT 0xBB
310#define SCSIOP_PLAY_CD 0xBC
311#define SCSIOP_SPARE_IN 0xBC
312#define SCSIOP_MECHANISM_STATUS 0xBD
313#define SCSIOP_SPARE_OUT 0xBD
314#define SCSIOP_READ_CD 0xBE
315#define SCSIOP_VOLUME_SET_IN 0xBE
316#define SCSIOP_SEND_DVD_STRUCTURE 0xBF
317#define SCSIOP_VOLUME_SET_OUT 0xBF
318#define SCSIOP_INIT_ELEMENT_RANGE 0xE7
320#define SCSISTAT_GOOD 0x00
321#define SCSISTAT_CHECK_CONDITION 0x02
322#define SCSISTAT_CONDITION_MET 0x04
323#define SCSISTAT_BUSY 0x08
324#define SCSISTAT_INTERMEDIATE 0x10
325#define SCSISTAT_INTERMEDIATE_COND_MET 0x14
326#define SCSISTAT_RESERVATION_CONFLICT 0x18
327#define SCSISTAT_COMMAND_TERMINATED 0x22
328#define SCSISTAT_QUEUE_FULL 0x28
333#define SP_RETURN_NOT_FOUND 0
334#define SP_RETURN_FOUND 1
335#define SP_RETURN_ERROR 2
336#define SP_RETURN_BAD_CONFIG 3
339#define SRB_FUNCTION_EXECUTE_SCSI 0x00
340#define SRB_FUNCTION_CLAIM_DEVICE 0x01
341#define SRB_FUNCTION_IO_CONTROL 0x02
342#define SRB_FUNCTION_RECEIVE_EVENT 0x03
343#define SRB_FUNCTION_RELEASE_QUEUE 0x04
344#define SRB_FUNCTION_ATTACH_DEVICE 0x05
345#define SRB_FUNCTION_RELEASE_DEVICE 0x06
346#define SRB_FUNCTION_SHUTDOWN 0x07
347#define SRB_FUNCTION_FLUSH 0x08
348#define SRB_FUNCTION_ABORT_COMMAND 0x10
349#define SRB_FUNCTION_RELEASE_RECOVERY 0x11
350#define SRB_FUNCTION_RESET_BUS 0x12
351#define SRB_FUNCTION_RESET_DEVICE 0x13
352#define SRB_FUNCTION_TERMINATE_IO 0x14
353#define SRB_FUNCTION_FLUSH_QUEUE 0x15
354#define SRB_FUNCTION_REMOVE_DEVICE 0x16
355#define SRB_FUNCTION_WMI 0x17
356#define SRB_FUNCTION_LOCK_QUEUE 0x18
357#define SRB_FUNCTION_UNLOCK_QUEUE 0x19
358#define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20
359#define SRB_FUNCTION_SET_LINK_TIMEOUT 0x21
360#define SRB_FUNCTION_LINK_TIMEOUT_OCCURRED 0x22
361#define SRB_FUNCTION_LINK_TIMEOUT_COMPLETE 0x23
362#define SRB_FUNCTION_POWER 0x24
363#define SRB_FUNCTION_PNP 0x25
364#define SRB_FUNCTION_DUMP_POINTERS 0x26
367#define SRB_STATUS_PENDING 0x00
368#define SRB_STATUS_SUCCESS 0x01
369#define SRB_STATUS_ABORTED 0x02
370#define SRB_STATUS_ABORT_FAILED 0x03
371#define SRB_STATUS_ERROR 0x04
372#define SRB_STATUS_BUSY 0x05
373#define SRB_STATUS_INVALID_REQUEST 0x06
374#define SRB_STATUS_INVALID_PATH_ID 0x07
375#define SRB_STATUS_NO_DEVICE 0x08
376#define SRB_STATUS_TIMEOUT 0x09
377#define SRB_STATUS_SELECTION_TIMEOUT 0x0A
378#define SRB_STATUS_COMMAND_TIMEOUT 0x0B
379#define SRB_STATUS_MESSAGE_REJECTED 0x0D
380#define SRB_STATUS_BUS_RESET 0x0E
381#define SRB_STATUS_PARITY_ERROR 0x0F
382#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10
383#define SRB_STATUS_NO_HBA 0x11
384#define SRB_STATUS_DATA_OVERRUN 0x12
385#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13
386#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
387#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15
388#define SRB_STATUS_REQUEST_FLUSHED 0x16
389#define SRB_STATUS_INVALID_LUN 0x20
390#define SRB_STATUS_INVALID_TARGET_ID 0x21
391#define SRB_STATUS_BAD_FUNCTION 0x22
392#define SRB_STATUS_ERROR_RECOVERY 0x23
393#define SRB_STATUS_NOT_POWERED 0x24
394#define SRB_STATUS_LINK_DOWN 0x25
395#define SRB_STATUS_INTERNAL_ERROR 0x30
396#define SRB_STATUS_QUEUE_FROZEN 0x40
397#define SRB_STATUS_AUTOSENSE_VALID 0x80
398#define SRB_STATUS(Status) (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
401#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002
402#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004
403#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
405#define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010
406#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020
407#define SRB_FLAGS_DATA_IN 0x00000040
408#define SRB_FLAGS_DATA_OUT 0x00000080
409#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000
410#define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
412#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100
413#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200
414#define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400
416#define SRB_FLAGS_IS_ACTIVE 0x00010000
417#define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000
418#define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000
419#define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000
421#define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000
422#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000
424#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000
425#define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000
427#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
428#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
430#define SRB_SIMPLE_TAG_REQUEST 0x20
431#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21
432#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22
434#define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x01
435#define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x01
436#define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x01
438#define STOR_MAP_NO_BUFFERS (0)
439#define STOR_MAP_ALL_BUFFERS (1)
440#define STOR_MAP_NON_READ_WRITE_BUFFERS (2)
442#define VPD_SUPPORTED_PAGES 0x00
443#define VPD_SERIAL_NUMBER 0x80
444#define VPD_DEVICE_IDENTIFIERS 0x83
445#define VPD_MEDIA_SERIAL_NUMBER 0x84
446#define VPD_SOFTWARE_INTERFACE_IDENTIFIERS 0x84
447#define VPD_NETWORK_MANAGEMENT_ADDRESSES 0x85
448#define VPD_EXTENDED_INQUIRY_DATA 0x86
449#define VPD_MODE_PAGE_POLICY 0x87
450#define VPD_SCSI_PORTS 0x88
452#define SCSI_SENSE_NO_SENSE 0x00
453#define SCSI_SENSE_RECOVERED_ERROR 0x01
454#define SCSI_SENSE_NOT_READY 0x02
455#define SCSI_SENSE_MEDIUM_ERROR 0x03
456#define SCSI_SENSE_HARDWARE_ERROR 0x04
457#define SCSI_SENSE_ILLEGAL_REQUEST 0x05
458#define SCSI_SENSE_UNIT_ATTENTION 0x06
459#define SCSI_SENSE_DATA_PROTECT 0x07
460#define SCSI_SENSE_BLANK_CHECK 0x08
461#define SCSI_SENSE_UNIQUE 0x09
462#define SCSI_SENSE_COPY_ABORTED 0x0A
463#define SCSI_SENSE_ABORTED_COMMAND 0x0B
464#define SCSI_SENSE_EQUAL 0x0C
465#define SCSI_SENSE_VOL_OVERFLOW 0x0D
466#define SCSI_SENSE_MISCOMPARE 0x0E
467#define SCSI_SENSE_RESERVED 0x0F
614#if (NTDDI_VERSION >= NTDDI_WIN7)
695#if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64)
781 struct _CDB6READWRITE
899 struct _READ_DISK_INFORMATION
908 struct _READ_TRACK_INFORMATION
920 struct _RESERVE_TRACK_RZONE
927 struct _SEND_OPC_INFORMATION
962 struct _READ_BUFFER_CAPACITY
971 struct _SEND_CUE_SHEET
1000 struct _PLAY_AUDIO_MSF
1036 UCHAR StartingBlockAddress[4];
1037 UCHAR PlayLength[4];
1073 struct _STOP_PLAY_SCAN
1141 struct _PLXTR_READ_CDDA
1157 struct _NEC_READ_CDDA
1207 struct _MODE_SELECT10
1299 struct _MEDIA_REMOVAL
1321 struct _REQUEST_BLOCK_ADDRESS
1340 struct _WRITE_TAPE_MARKS
1350 struct _SPACE_TAPE_MARKS
1371 struct _READ_POSITION
1380 struct _CDB6READWRITETAPE
1393 struct _INIT_ELEMENT_STATUS
1402 struct _INITIALIZE_ELEMENT_RANGE
1415 struct _POSITION_TO_ELEMENT
1440 struct _EXCHANGE_MEDIUM
1454 struct _READ_ELEMENT_STATUS
1467 struct _SEND_VOLUME_TAG
1482 struct _REQUEST_VOLUME_ELEMENT_ADDRESS
1519 struct _SYNCHRONIZE_CACHE10
1531 struct _GET_EVENT_STATUS_NOTIFICATION
1543 struct _GET_PERFORMANCE
1556 struct _READ_DVD_STRUCTURE
1569 struct _SET_STREAMING
1576 struct _SEND_DVD_STRUCTURE
1610 struct _SET_READ_AHEAD
1620 struct _READ_FORMATTED_CAPACITIES
1637 struct _PERSISTENT_RESERVE_IN
1646 struct _PERSISTENT_RESERVE_OUT
1657 struct _GET_CONFIGURATION
1667 struct _SET_CD_SPEED
1754 struct _SYNCHRONIZE_CACHE16
1765 struct _READ_CAPACITY16
1819#if (NTDDI_VERSION < NTDDI_WINXP)
1830 UCHAR ReservedBit:1;
1849#include <pshpack1.h>
1950#include <pshpack1.h>
2267(
NTAPI STOR_SYNCHRONIZED_ACCESS)(
2372#define REVERSE_BYTES_QUAD(Destination, Source) { \
2373 PEIGHT_BYTE d = (PEIGHT_BYTE)(Destination); \
2374 PEIGHT_BYTE s = (PEIGHT_BYTE)(Source); \
2375 d->Byte7 = s->Byte0; \
2376 d->Byte6 = s->Byte1; \
2377 d->Byte5 = s->Byte2; \
2378 d->Byte4 = s->Byte3; \
2379 d->Byte3 = s->Byte4; \
2380 d->Byte2 = s->Byte5; \
2381 d->Byte1 = s->Byte6; \
2382 d->Byte0 = s->Byte7; \
2385#define REVERSE_BYTES(Destination, Source) { \
2386 PFOUR_BYTE d = (PFOUR_BYTE)(Destination); \
2387 PFOUR_BYTE s = (PFOUR_BYTE)(Source); \
2388 d->Byte3 = s->Byte0; \
2389 d->Byte2 = s->Byte1; \
2390 d->Byte1 = s->Byte2; \
2391 d->Byte0 = s->Byte3; \
2394#define REVERSE_BYTES_SHORT(Destination, Source) { \
2395 PTWO_BYTE d = (PTWO_BYTE)(Destination); \
2396 PTWO_BYTE s = (PTWO_BYTE)(Source); \
2397 d->Byte1 = s->Byte0; \
2398 d->Byte0 = s->Byte1; \
2401#define StorPortCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
2444 _In_ PCCHAR DebugMessage,
2911 HwPassiveInitializeRoutine,
3092 AdapterDeviceObject,
3118 ScatterGatherBuffer,
3119 ScatterGatherBufferLength);
3214#define DebugPrint(x) StorPortDebugPrint x
3216#define DebugPrint(x)
#define WriteBuffer(BaseIoAddress, Buffer, Count)
#define ReadBuffer(BaseIoAddress, Buffer, Count)
BOOL Query(LPCTSTR *ServiceArgs, DWORD ArgCount, BOOL bExtended)
PDEVICE_OBJECT PhysicalDeviceObject
_In_ PSCSI_REQUEST_BLOCK Srb
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
_In_z_ PCCHAR _In_ PDEVICE_OBJECT LowerDeviceObject
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
VOID(NTAPI * PHW_DMA_STARTED)(IN PVOID DeviceExtension)
_SCSI_ADAPTER_CONTROL_TYPE
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
_SCSI_ADAPTER_CONTROL_STATUS
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
BOOLEAN(NTAPI * PHW_STARTIO)(IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
BOOLEAN(NTAPI * PHW_ADAPTER_STATE)(IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState)
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
SCSI_ADAPTER_CONTROL_STATUS(NTAPI * PHW_ADAPTER_CONTROL)(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
ULONG(NTAPI * PHW_FIND_ADAPTER)(IN PVOID DeviceExtension, IN PVOID HwContext, IN PVOID BusInformation, IN PCHAR ArgumentString, IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, OUT PBOOLEAN Again)
BOOLEAN(NTAPI * PHW_INITIALIZE)(IN PVOID DeviceExtension)
_Must_inspect_result_ __in_opt PWDF_OBJECT_ATTRIBUTES __in PVOID __in __out WDFMEMORY * PMemory
enum _INTERFACE_TYPE INTERFACE_TYPE
_In_ NDIS_ERROR_CODE ErrorCode
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
#define _In_reads_bytes_(s)
#define _Out_writes_bytes_(s)
#define _ANONYMOUS_STRUCT
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
enum _KINTERRUPT_MODE KINTERRUPT_MODE
enum _DMA_SPEED DMA_SPEED
enum _DMA_WIDTH DMA_WIDTH
enum _STOR_PNP_ACTION STOR_PNP_ACTION
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
enum _STOR_DEVICE_POWER_STATE STOR_DEVICE_POWER_STATE
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
enum _STOR_POWER_ACTION STOR_POWER_ACTION
VOID(NTAPI * PHW_DMA_STARTED)(_In_ PVOID DeviceExtension)
STORPORT_API BOOLEAN NTAPI StorPortSetDeviceQueueDepth(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG Depth)
FORCEINLINE VOID StorPortReleaseSpinLock(_In_ PVOID DeviceExtension, _Inout_ PSTOR_LOCK_HANDLE LockHandle)
BOOLEAN(NTAPI * PHW_BUILDIO)(_In_ PVOID DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
@ StorPowerActionWarmEject
@ StorPowerActionShutdown
@ StorPowerActionReserved
@ StorPowerActionShutdownReset
@ StorPowerActionHibernate
@ StorPowerActionShutdownOff
struct _SCSI_REQUEST_BLOCK SCSI_REQUEST_BLOCK
struct _STARTIO_PERFORMANCE_PARAMETERS STARTIO_PERFORMANCE_PARAMETERS
VOID(NTAPI * PStorPortPutScatterGatherList)(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SCATTER_GATHER_LIST ScatterGatherList, _In_ BOOLEAN WriteToDevice)
struct _ACCESS_RANGE ACCESS_RANGE
union _EIGHT_BYTE EIGHT_BYTE
enum _STOR_PNP_ACTION STOR_PNP_ACTION
struct _INQUIRYDATA * PINQUIRYDATA
struct _SCSI_PNP_REQUEST_BLOCK * PSCSI_PNP_REQUEST_BLOCK
struct _STOR_SCATTER_GATHER_LIST STOR_SCATTER_GATHER_LIST
FORCEINLINE ULONG StorPortReleaseMSISpinLock(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _In_ ULONG OldIrql)
struct _READ_CAPACITY_DATA_EX READ_CAPACITY_DATA_EX
STORPORT_API VOID __cdecl StorPortDebugPrint(_In_ ULONG DebugPrintLevel, _In_ PCCHAR DebugMessage,...)
FORCEINLINE ULONG StorPortGetSystemAddress(_In_ PVOID HwDeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Out_ PVOID *SystemAddress)
STORPORT_API UCHAR NTAPI StorPortReadPortUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port)
STORPORT_API VOID NTAPI StorPortWritePortUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port, _In_ ULONG Value)
FORCEINLINE ULONG StorPortAllocateMdl(_In_ PVOID HwDeviceExtension, _In_ PVOID BufferPointer, _In_ ULONG NumberOfBytes, _Out_ PVOID *Mdl)
enum _STOR_PNP_ACTION * PSTOR_PNP_ACTION
@ ScsiQuerySupportedControlTypes
@ MakeAdapterControlTypeSizeOfUlong
struct _READ_CAPACITY_DATA * PREAD_CAPACITY_DATA
struct _STOR_SCATTER_GATHER_ELEMENT * PSTOR_SCATTER_GATHER_ELEMENT
BOOLEAN(NTAPI * PHW_STARTIO)(_In_ PVOID DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
STORPORT_API VOID NTAPI StorPortReadPortBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Port, _In_ PUSHORT Buffer, _In_ ULONG Count)
STORPORT_API UCHAR NTAPI StorPortReadRegisterUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register)
struct _STOR_LOG_EVENT_DETAILS * PSTOR_LOG_EVENT_DETAILS
STORPORT_API VOID NTAPI StorPortWritePortUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Port, _In_ USHORT Value)
FORCEINLINE ULONG StorPortGetMSIInfo(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _Out_ PMESSAGE_INTERRUPT_INFORMATION InterruptInfo)
STORPORT_API BOOLEAN NTAPI StorPortBusy(_In_ PVOID HwDeviceExtension, _In_ ULONG RequestsToComplete)
struct _VPD_IDENTIFICATION_PAGE VPD_IDENTIFICATION_PAGE
FORCEINLINE ULONG StorPortGetStartIoPerfParams(_In_ PVOID HwDeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Inout_ PSTARTIO_PERFORMANCE_PARAMETERS StartIoPerfParams)
PVOID(NTAPI * PStorPortAllocatePool)(_In_ ULONG NumberOfBytes, _In_ ULONG Tag, _In_ PVOID HwDeviceExtension, _Out_ PVOID *PMdl)
struct _VPD_SERIAL_NUMBER_PAGE VPD_SERIAL_NUMBER_PAGE
FORCEINLINE BOOLEAN StorPortIssueDpc(_In_ PVOID DeviceExtension, _In_ PSTOR_DPC Dpc, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
@ StorQueryResourceRequirements
@ StorFilterResourceRequirements
FORCEINLINE ULONG StorPortAllocatePool(_In_ PVOID HwDeviceExtension, _In_ ULONG NumberOfBytes, _In_ ULONG Tag, _Out_ PVOID *BufferPointer)
struct _VPD_SERIAL_NUMBER_PAGE * PVPD_SERIAL_NUMBER_PAGE
struct _PORT_CONFIGURATION_INFORMATION * PPORT_CONFIGURATION_INFORMATION
STORPORT_API BOOLEAN NTAPI StorPortRegistryWrite(_In_ PVOID HwDeviceExtension, _In_ PUCHAR ValueName, _In_ ULONG Global, _In_ ULONG Type, _In_ PUCHAR Buffer, _In_ ULONG BufferLength)
enum _SCSI_NOTIFICATION_TYPE * PSCSI_NOTIFICATION_TYPE
struct _VPD_MEDIA_SERIAL_NUMBER_PAGE VPD_MEDIA_SERIAL_NUMBER_PAGE
struct _VPD_SUPPORTED_PAGES_PAGE VPD_SUPPORTED_PAGES_PAGE
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
enum _VPD_IDENTIFIER_TYPE VPD_IDENTIFIER_TYPE
enum _STOR_DEVICE_POWER_STATE * PSTOR_DEVICE_POWER_STATE
STORPORT_API BOOLEAN NTAPI StorPortDeviceBusy(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG RequestsToComplete)
struct _LUN_LIST LUN_LIST
FORCEINLINE ULONG StorPortCompleteServiceIrp(_In_ PVOID HwDeviceExtension, _In_ PVOID Irp)
struct _PERF_CONFIGURATION_DATA PERF_CONFIGURATION_DATA
@ ExtFunctionFreeContiguousMemorySpecifyCache
@ ExtFunctionGetGroupAffinity
@ ExtFunctionGetNodeAffinity
@ ExtFunctionCompleteServiceIrp
@ ExtFunctionAllocateContiguousMemorySpecifyCacheNode
@ ExtFunctionGetOriginalMdl
@ ExtFunctionGetDeviceObjects
@ ExtFunctionAcquireMSISpinLock
@ ExtFunctionInitializePerformanceOptimizations
@ ExtFunctionGetLogicalProcessorRelationship
@ ExtFunctionGetMessageInterruptInformation
@ ExtFunctionGetSystemAddress
@ ExtFunctionGetStartIoPerformanceParameters
@ ExtFunctionLogSystemEvent
@ ExtFunctionBuildScatterGatherList
@ ExtFunctionPutScatterGatherList
@ ExtFunctionReleaseMSISpinLock
@ ExtFunctionGetActiveGroupCount
@ ExtFunctionBuildMdlForNonPagedPool
@ ExtFunctionGetCurrentProcessorNumber
@ ExtFunctionGetHighestNodeNumber
@ ExtFunctionAllocatePool
@ ExtFunctionGetActiveNodeCount
enum _STOR_EVENT_ASSOCIATION_ENUM STOR_EVENT_ASSOCIATION_ENUM
FORCEINLINE ULONG StorPortGetDeviceObjects(_In_ PVOID HwDeviceExtension, _Out_ PVOID *AdapterDeviceObject, _Out_ PVOID *PhysicalDeviceObject, _Out_ PVOID *LowerDeviceObject)
@ ScsiAdapterControlSuccess
@ ScsiAdapterControlUnsuccessful
struct _STOR_LOCK_HANDLE STOR_LOCK_HANDLE
struct _HW_INITIALIZATION_DATA * PHW_INITIALIZATION_DATA
_STOR_SYNCHRONIZATION_MODEL
@ StorSynchronizeFullDuplex
@ StorSynchronizeHalfDuplex
STORPORT_API PVOID NTAPI StorPortGetLogicalUnit(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
STORPORT_API ULONG NTAPI StorPortInitialize(_In_ PVOID Argument1, _In_ PVOID Argument2, _In_ PHW_INITIALIZATION_DATA HwInitializationData, _In_opt_ PVOID Unused)
struct _READ_CAPACITY_DATA READ_CAPACITY_DATA
struct _SCSI_WMI_REQUEST_BLOCK SCSI_WMI_REQUEST_BLOCK
STORPORT_API ULONG NTAPI StorPortReadRegisterUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register)
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
BOOLEAN(NTAPI * PStorPortGetMessageInterruptInformation)(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _Out_ PMESSAGE_INTERRUPT_INFORMATION InterruptInfo)
FORCEINLINE ULONG StorPortBuildMdlForNonPagedPool(_In_ PVOID HwDeviceExtension, _Inout_ PVOID Mdl)
STORPORT_API VOID NTAPI StorPortReadPortBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port, _In_ PULONG Buffer, _In_ ULONG Count)
_STOR_EVENT_ASSOCIATION_ENUM
@ StorEventTargetAssociation
@ StorEventInvalidAssociation
@ StorEventAdapterAssociation
@ StorEventLunAssociation
STORPORT_API VOID NTAPI StorPortWriteRegisterUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register, _In_ ULONG Value)
enum _SCSI_ADAPTER_CONTROL_STATUS SCSI_ADAPTER_CONTROL_STATUS
enum _STOR_DEVICE_POWER_STATE STOR_DEVICE_POWER_STATE
STORPORT_API VOID NTAPI StorPortMoveMemory(_Out_writes_bytes_(Length) PVOID WriteBuffer, _In_reads_bytes_(Length) PVOID ReadBuffer, _In_ ULONG Length)
FORCEINLINE VOID StorPortAcquireSpinLock(_In_ PVOID DeviceExtension, _In_ STOR_SPINLOCK SpinLock, _In_ PVOID LockContext, _Inout_ PSTOR_LOCK_HANDLE LockHandle)
STORPORT_API VOID NTAPI StorPortSynchronizeAccess(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, _In_opt_ PVOID Context)
enum _VPD_CODE_SET VPD_CODE_SET
enum _GETSGSTATUS * PGETSGSTATUS
struct _VPD_SUPPORTED_PAGES_PAGE * PVPD_SUPPORTED_PAGES_PAGE
STORPORT_API ULONG NTAPI StorPortGetBusData(_In_ PVOID DeviceExtension, _In_ ULONG BusDataType, _In_ ULONG SystemIoBusNumber, _In_ ULONG SlotNumber, _Out_ _When_(Length !=0, _Out_writes_bytes_(Length)) PVOID Buffer, _In_ ULONG Length)
union _EIGHT_BYTE * PEIGHT_BYTE
struct _STOR_DEVICE_CAPABILITIES STOR_DEVICE_CAPABILITIES
struct _SCSI_PNP_REQUEST_BLOCK SCSI_PNP_REQUEST_BLOCK
struct _STOR_DPC STOR_DPC
struct _VPD_IDENTIFICATION_PAGE * PVPD_IDENTIFICATION_PAGE
struct _MEMORY_REGION * PMEMORY_REGION
struct _MODE_PARAMETER_HEADER10 MODE_PARAMETER_HEADER10
struct _DPC_BUFFER DPC_BUFFER
enum _STORPORT_FUNCTION_CODE STORPORT_FUNCTION_CODE
union _FOUR_BYTE FOUR_BYTE
struct _STOR_DEVICE_CAPABILITIES * PSTOR_DEVICE_CAPABILITIES
struct _HW_INITIALIZATION_DATA HW_INITIALIZATION_DATA
struct _SCSI_POWER_REQUEST_BLOCK SCSI_POWER_REQUEST_BLOCK
struct _SENSE_DATA * PSENSE_DATA
STORPORT_API VOID NTAPI StorPortWriteRegisterUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register, _In_ USHORT Value)
struct _STORPORT_EXTENDED_FUNCTIONS STORPORT_EXTENDED_FUNCTIONS
struct _SCSI_POWER_REQUEST_BLOCK * PSCSI_POWER_REQUEST_BLOCK
VOID(NTAPI * PHW_TIMER)(_In_ PVOID DeviceExtension)
STORPORT_API VOID NTAPI StorPortWritePortBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Port, _In_ PUSHORT Buffer, _In_ ULONG Count)
struct _STOR_SCATTER_GATHER_ELEMENT STOR_SCATTER_GATHER_ELEMENT
struct _MODE_PARAMETER_HEADER MODE_PARAMETER_HEADER
FORCEINLINE ULONG StorPortInitializePerfOpts(_In_ PVOID HwDeviceExtension, _In_ BOOLEAN Query, _Inout_ PPERF_CONFIGURATION_DATA PerfConfigData)
BOOLEAN(NTAPI * PHW_INTERRUPT)(_In_ PVOID DeviceExtension)
STORPORT_API VOID NTAPI StorPortFreeRegistryBuffer(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Buffer)
struct _LUN_LIST * PLUN_LIST
struct _VPD_IDENTIFICATION_DESCRIPTOR * PVPD_IDENTIFICATION_DESCRIPTOR
STORPORT_API BOOLEAN NTAPI StorPortValidateRange(_In_ PVOID HwDeviceExtension, _In_ INTERFACE_TYPE BusType, _In_ ULONG SystemIoBusNumber, _In_ STOR_PHYSICAL_ADDRESS IoAddress, _In_ ULONG NumberOfBytes, _In_ BOOLEAN InIoSpace)
STORPORT_API PSTOR_SCATTER_GATHER_LIST NTAPI StorPortGetScatterGatherList(_In_ PVOID DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
STORPORT_API VOID NTAPI StorPortReadRegisterBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register, _In_ PUCHAR Buffer, _In_ ULONG Count)
STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortGetPhysicalAddress(_In_ PVOID HwDeviceExtension, _In_opt_ PSCSI_REQUEST_BLOCK Srb, _In_ PVOID VirtualAddress, _Out_ ULONG *Length)
union _TWO_BYTE * PTWO_BYTE
union _FOUR_BYTE * PFOUR_BYTE
STORPORT_API BOOLEAN NTAPI StorPortRegistryRead(_In_ PVOID HwDeviceExtension, _In_ PUCHAR ValueName, _In_ ULONG Global, _In_ ULONG Type, _In_ PUCHAR Buffer, _In_ PULONG BufferLength)
FORCEINLINE BOOLEAN StorPortEnablePassiveInitialization(_In_ PVOID DeviceExtension, _In_ PHW_PASSIVE_INITIALIZE_ROUTINE HwPassiveInitializeRoutine)
STORPORT_API ULONG NTAPI StorPortReadPortUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port)
FORCEINLINE ULONG StorPortFreeMdl(_In_ PVOID HwDeviceExtension, _In_ PVOID Mdl)
struct _MODE_PARAMETER_HEADER10 * PMODE_PARAMETER_HEADER10
STORPORT_API BOOLEAN NTAPI StorPortPauseDevice(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG TimeOut)
STORPORT_API VOID NTAPI StorPortWritePortUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ UCHAR Value)
struct _STORPORT_EXTENDED_FUNCTIONS * PSTORPORT_EXTENDED_FUNCTIONS
VOID(NTAPI * PpostScaterGatherExecute)(_In_ PVOID *DeviceObject, _In_ PVOID *Irp, _In_ PSTOR_SCATTER_GATHER_LIST ScatterGather, _In_ PVOID Context)
BOOLEAN(NTAPI * PHW_ADAPTER_STATE)(IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState)
FORCEINLINE ULONG StorPortBuildScatterGatherList(_In_ PVOID HwDeviceExtension, _In_ PVOID Mdl, _In_ PVOID CurrentVa, _In_ ULONG Length, _In_ PpostScaterGatherExecute ExecutionRoutine, _In_ PVOID Context, _In_ BOOLEAN WriteToDevice, _Inout_ PVOID ScatterGatherBuffer, _In_ ULONG ScatterGatherBufferLength)
STORPORT_API PUCHAR NTAPI StorPortAllocateRegistryBuffer(_In_ PVOID HwDeviceExtension, _In_ PULONG Length)
STOR_SYNCHRONIZED_ACCESS * PSTOR_SYNCHRONIZED_ACCESS
enum _STOR_SPINLOCK STOR_SPINLOCK
BOOLEAN(* PHW_PASSIVE_INITIALIZE_ROUTINE)(_In_ PVOID DeviceExtension)
STORPORT_API VOID NTAPI StorPortReadPortBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ PUCHAR Buffer, _In_ ULONG Count)
STORPORT_API BOOLEAN NTAPI StorPortReady(_In_ PVOID HwDeviceExtension)
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
struct _SENSE_DATA SENSE_DATA
STORPORT_API ULONG64 NTAPI StorPortConvertPhysicalAddressToUlong64(_In_ STOR_PHYSICAL_ADDRESS Address)
struct _STOR_SCATTER_GATHER_LIST * PSTOR_SCATTER_GATHER_LIST
STORPORT_API ULONG StorPortExtendedFunction(_In_ STORPORT_FUNCTION_CODE FunctionCode, _In_ PVOID HwDeviceExtension,...)
struct _READ_CAPACITY_DATA_EX * PREAD_CAPACITY_DATA_EX
FORCEINLINE ULONG StorPortLogSystemEvent(_In_ PVOID HwDeviceExtension, _Inout_ PSTOR_LOG_EVENT_DETAILS LogDetails, _Inout_ PULONG MaximumSize)
BOOLEAN(NTAPI * PHW_INITIALIZE)(_In_ PVOID DeviceExtension)
STORPORT_API VOID NTAPI StorPortWritePortBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ PUCHAR Buffer, _In_ ULONG Count)
struct _MESSAGE_INTERRUPT_INFORMATION * PMESSAGE_INTERRUPT_INFORMATION
struct _SCSI_REQUEST_BLOCK * PSCSI_REQUEST_BLOCK
STORPORT_API VOID NTAPI StorPortCompleteRequest(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ UCHAR SrbStatus)
STORPORT_API ULONG NTAPI StorPortSetBusDataByOffset(_In_ PVOID DeviceExtension, _In_ ULONG BusDataType, _In_ ULONG SystemIoBusNumber, _In_ ULONG SlotNumber, _In_reads_bytes_(Length) PVOID Buffer, _In_ ULONG Offset, _In_ ULONG Length)
STORPORT_API PVOID NTAPI StorPortGetDeviceBase(_In_ PVOID HwDeviceExtension, _In_ INTERFACE_TYPE BusType, _In_ ULONG SystemIoBusNumber, _In_ STOR_PHYSICAL_ADDRESS IoAddress, _In_ ULONG NumberOfBytes, _In_ BOOLEAN InIoSpace)
VOID(* PHW_DPC_ROUTINE)(_In_ PSTOR_DPC Dpc, _In_ PVOID HwDeviceExtension, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
struct _STOR_LOCK_HANDLE * PSTOR_LOCK_HANDLE
struct _MESSAGE_INTERRUPT_INFORMATION MESSAGE_INTERRUPT_INFORMATION
STORPORT_API VOID NTAPI StorPortQuerySystemTime(_Out_ PLARGE_INTEGER CurrentTime)
STORPORT_API USHORT NTAPI StorPortReadPortUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Port)
struct _VPD_MEDIA_SERIAL_NUMBER_PAGE * PVPD_MEDIA_SERIAL_NUMBER_PAGE
struct _STOR_LOG_EVENT_DETAILS STOR_LOG_EVENT_DETAILS
enum _STOR_DMA_WIDTH STOR_DMA_WIDTH
struct _PORT_CONFIGURATION_INFORMATION PORT_CONFIGURATION_INFORMATION
STORPORT_API BOOLEAN NTAPI StorPortDeviceReady(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
enum _STOR_POWER_ACTION * PSTOR_POWER_ACTION
STORPORT_API VOID NTAPI StorPortReadRegisterBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register, _In_ PULONG Buffer, _In_ ULONG Count)
STORPORT_API BOOLEAN NTAPI StorPortPause(_In_ PVOID HwDeviceExtension, _In_ ULONG TimeOut)
enum _STOR_POWER_ACTION STOR_POWER_ACTION
STORPORT_API PVOID NTAPI StorPortGetVirtualAddress(_In_ PVOID HwDeviceExtension, _In_ STOR_PHYSICAL_ADDRESS PhysicalAddress)
FORCEINLINE ULONG StorPortGetOriginalMdl(_In_ PVOID HwDeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Out_ PVOID *Mdl)
STORPORT_API VOID NTAPI StorPortWritePortBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port, _In_ PULONG Buffer, _In_ ULONG Count)
STORPORT_API VOID NTAPI StorPortWriteRegisterUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register, _In_ UCHAR Value)
struct _SCSI_WMI_REQUEST_BLOCK * PSCSI_WMI_REQUEST_BLOCK
STORPORT_API PSCSI_REQUEST_BLOCK NTAPI StorPortGetSrb(_In_ PVOID DeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ LONG QueueTag)
SCSI_ADAPTER_CONTROL_STATUS(NTAPI * PHW_ADAPTER_CONTROL)(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
@ VpdIdentifierTypeSCSINameString
@ VpdIdentifierTypeVendorId
@ VpdIdentifierTypeMD5LogicalUnitId
@ VpdIdentifierTypeTargetPortGroup
@ VpdIdentifierTypeLogicalUnitGroup
@ VpdIdentifierTypeFCPHName
@ VpdIdentifierTypePortRelative
@ VpdIdentifierTypeVendorSpecific
STORPORT_API USHORT NTAPI StorPortReadRegisterUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register)
STORPORT_API VOID NTAPI StorPortStallExecution(_In_ ULONG Delay)
STORPORT_API VOID NTAPI StorPortReadRegisterBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register, _In_ PUSHORT Buffer, _In_ ULONG Count)
enum _VPD_ASSOCIATION * PVPD_ASSOCIATION
FORCEINLINE ULONG StorPortPutScatterGatherList(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SCATTER_GATHER_LIST ScatterGatherList, _In_ BOOLEAN WriteToDevice)
STORPORT_API BOOLEAN NTAPI StorPortResume(_In_ PVOID HwDeviceExtension)
STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register, _In_ PUSHORT Buffer, _In_ ULONG Count)
struct _INQUIRYDATA INQUIRYDATA
enum _SCSI_ADAPTER_CONTROL_TYPE * PSCSI_ADAPTER_CONTROL_TYPE
struct _PERF_CONFIGURATION_DATA * PPERF_CONFIGURATION_DATA
PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS
enum _STORPORT_FUNCTION_CODE * PSTORPORT_FUNCTION_CODE
struct _MODE_PARAMETER_BLOCK * PMODE_PARAMETER_BLOCK
enum _VPD_CODE_SET * PVPD_CODE_SET
STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register, _In_ PULONG Buffer, _In_ ULONG Count)
STORPORT_API VOID NTAPI StorPortFreeDeviceBase(_In_ PVOID HwDeviceExtension, _In_ PVOID MappedAddress)
STORPORT_API BOOLEAN NTAPI StorPortResumeDevice(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
@ GetExtendedFunctionTable
@ EnablePassiveInitialization
FORCEINLINE ULONG StorPortAcquireMSISpinLock(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _In_ PULONG OldIrql)
enum _SCSI_ADAPTER_CONTROL_STATUS * PSCSI_ADAPTER_CONTROL_STATUS
enum _GETSGSTATUS GETSGSTATUS
GETSGSTATUS(NTAPI * PStorPortBuildScatterGatherList)(_In_ PVOID HwDeviceExtension, _In_ PVOID Mdl, _In_ PVOID CurrentVa, _In_ ULONG Length, _In_ PpostScaterGatherExecute ExecutionRoutine, _In_ PVOID Context, _In_ BOOLEAN WriteToDevice, _Inout_ PVOID ScatterGatherBuffer, _In_ ULONG ScatterGatherBufferLength)
enum _VPD_ASSOCIATION VPD_ASSOCIATION
FORCEINLINE VOID StorPortInitializeDpc(_In_ PVOID DeviceExtension, _Out_ PSTOR_DPC Dpc, _In_ PHW_DPC_ROUTINE HwDpcRoutine)
struct _STARTIO_PERFORMANCE_PARAMETERS * PSTARTIO_PERFORMANCE_PARAMETERS
struct _MODE_PARAMETER_BLOCK MODE_PARAMETER_BLOCK
FORCEINLINE ULONG StorPortFreePool(_In_ PVOID HwDeviceExtension, _In_ PVOID BufferPointer)
STORPORT_API VOID NTAPI StorPortLogError(_In_ PVOID HwDeviceExtension, _In_opt_ PSCSI_REQUEST_BLOCK Srb, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG ErrorCode, _In_ ULONG UniqueId)
struct _MODE_PARAMETER_HEADER * PMODE_PARAMETER_HEADER
STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register, _In_ PUCHAR Buffer, _In_ ULONG Count)
struct _VPD_IDENTIFICATION_DESCRIPTOR VPD_IDENTIFICATION_DESCRIPTOR
VOID(NTAPI * PStorPortFreePool)(_In_ PVOID PMemory, _In_ PVOID HwDeviceExtension, _In_opt_ PVOID PMdl)
enum _STOR_SYNCHRONIZATION_MODEL STOR_SYNCHRONIZATION_MODEL
STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortConvertUlong64ToPhysicalAddress(_In_ ULONG64 UlongAddress)
ULONG(NTAPI * PHW_FIND_ADAPTER)(IN PVOID DeviceExtension, IN PVOID HwContext, IN PVOID BusInformation, IN PCHAR ArgumentString, IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, OUT PBOOLEAN Again)
PVOID(NTAPI * PStorPortGetSystemAddress)(_In_ PSCSI_REQUEST_BLOCK Srb)
struct _STOR_DPC * PSTOR_DPC