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
61#define SENSE_BUFFER_SIZE 18
62#define MAX_SENSE_BUFFER_SIZE 255
64#define FILE_DEVICE_SCSI 0x0000001b
65#define IOCTL_SCSI_EXECUTE_IN ((FILE_DEVICE_SCSI << 16) + 0x0011)
66#define IOCTL_SCSI_EXECUTE_OUT ((FILE_DEVICE_SCSI << 16) + 0x0012)
67#define IOCTL_SCSI_EXECUTE_NONE ((FILE_DEVICE_SCSI << 16) + 0x0013)
69#define MODE_PAGE_VENDOR_SPECIFIC 0x00
70#define MODE_PAGE_ERROR_RECOVERY 0x01
71#define MODE_PAGE_DISCONNECT 0x02
72#define MODE_PAGE_FORMAT_DEVICE 0x03
73#define MODE_PAGE_MRW 0x03
74#define MODE_PAGE_RIGID_GEOMETRY 0x04
75#define MODE_PAGE_FLEXIBILE 0x05
76#define MODE_PAGE_WRITE_PARAMETERS 0x05
77#define MODE_PAGE_VERIFY_ERROR 0x07
78#define MODE_PAGE_CACHING 0x08
79#define MODE_PAGE_PERIPHERAL 0x09
80#define MODE_PAGE_CONTROL 0x0A
81#define MODE_PAGE_MEDIUM_TYPES 0x0B
82#define MODE_PAGE_NOTCH_PARTITION 0x0C
83#define MODE_PAGE_CD_AUDIO_CONTROL 0x0E
84#define MODE_PAGE_DATA_COMPRESS 0x0F
85#define MODE_PAGE_DEVICE_CONFIG 0x10
86#define MODE_PAGE_XOR_CONTROL 0x10
87#define MODE_PAGE_MEDIUM_PARTITION 0x11
88#define MODE_PAGE_ENCLOSURE_SERVICES_MANAGEMENT 0x14
89#define MODE_PAGE_EXTENDED 0x15
90#define MODE_PAGE_EXTENDED_DEVICE_SPECIFIC 0x16
91#define MODE_PAGE_CDVD_FEATURE_SET 0x18
92#define MODE_PAGE_PROTOCOL_SPECIFIC_LUN 0x18
93#define MODE_PAGE_PROTOCOL_SPECIFIC_PORT 0x19
94#define MODE_PAGE_POWER_CONDITION 0x1A
95#define MODE_PAGE_LUN_MAPPING 0x1B
96#define MODE_PAGE_FAULT_REPORTING 0x1C
97#define MODE_PAGE_CDVD_INACTIVITY 0x1D
98#define MODE_PAGE_ELEMENT_ADDRESS 0x1D
99#define MODE_PAGE_TRANSPORT_GEOMETRY 0x1E
100#define MODE_PAGE_DEVICE_CAPABILITIES 0x1F
101#define MODE_PAGE_CAPABILITIES 0x2A
102#define MODE_SENSE_RETURN_ALL 0x3F
104#define MODE_SENSE_CURRENT_VALUES 0x00
105#define MODE_SENSE_CHANGEABLE_VALUES 0x40
106#define MODE_SENSE_DEFAULT_VAULES 0x80
107#define MODE_SENSE_SAVED_VALUES 0xc0
109#define SCSIOP_TEST_UNIT_READY 0x00
110#define SCSIOP_REZERO_UNIT 0x01
111#define SCSIOP_REWIND 0x01
112#define SCSIOP_REQUEST_BLOCK_ADDR 0x02
113#define SCSIOP_REQUEST_SENSE 0x03
114#define SCSIOP_FORMAT_UNIT 0x04
115#define SCSIOP_READ_BLOCK_LIMITS 0x05
116#define SCSIOP_REASSIGN_BLOCKS 0x07
117#define SCSIOP_INIT_ELEMENT_STATUS 0x07
118#define SCSIOP_READ6 0x08
119#define SCSIOP_RECEIVE 0x08
120#define SCSIOP_WRITE6 0x0A
121#define SCSIOP_PRINT 0x0A
122#define SCSIOP_SEND 0x0A
123#define SCSIOP_SEEK6 0x0B
124#define SCSIOP_TRACK_SELECT 0x0B
125#define SCSIOP_SLEW_PRINT 0x0B
126#define SCSIOP_SET_CAPACITY 0x0B
127#define SCSIOP_SEEK_BLOCK 0x0C
128#define SCSIOP_PARTITION 0x0D
129#define SCSIOP_READ_REVERSE 0x0F
130#define SCSIOP_WRITE_FILEMARKS 0x10
131#define SCSIOP_FLUSH_BUFFER 0x10
132#define SCSIOP_SPACE 0x11
133#define SCSIOP_INQUIRY 0x12
134#define SCSIOP_VERIFY6 0x13
135#define SCSIOP_RECOVER_BUF_DATA 0x14
136#define SCSIOP_MODE_SELECT 0x15
137#define SCSIOP_RESERVE_UNIT 0x16
138#define SCSIOP_RELEASE_UNIT 0x17
139#define SCSIOP_COPY 0x18
140#define SCSIOP_ERASE 0x19
141#define SCSIOP_MODE_SENSE 0x1A
142#define SCSIOP_START_STOP_UNIT 0x1B
143#define SCSIOP_STOP_PRINT 0x1B
144#define SCSIOP_LOAD_UNLOAD 0x1B
145#define SCSIOP_RECEIVE_DIAGNOSTIC 0x1C
146#define SCSIOP_SEND_DIAGNOSTIC 0x1D
147#define SCSIOP_MEDIUM_REMOVAL 0x1E
148#define SCSIOP_READ_FORMATTED_CAPACITY 0x23
149#define SCSIOP_READ_CAPACITY 0x25
150#define SCSIOP_READ 0x28
151#define SCSIOP_WRITE 0x2A
152#define SCSIOP_SEEK 0x2B
153#define SCSIOP_LOCATE 0x2B
154#define SCSIOP_POSITION_TO_ELEMENT 0x2B
155#define SCSIOP_WRITE_VERIFY 0x2E
156#define SCSIOP_VERIFY 0x2F
157#define SCSIOP_SEARCH_DATA_HIGH 0x30
158#define SCSIOP_SEARCH_DATA_EQUAL 0x31
159#define SCSIOP_SEARCH_DATA_LOW 0x32
160#define SCSIOP_SET_LIMITS 0x33
161#define SCSIOP_READ_POSITION 0x34
162#define SCSIOP_SYNCHRONIZE_CACHE 0x35
163#define SCSIOP_COMPARE 0x39
164#define SCSIOP_COPY_COMPARE 0x3A
165#define SCSIOP_WRITE_DATA_BUFF 0x3B
166#define SCSIOP_READ_DATA_BUFF 0x3C
167#define SCSIOP_WRITE_LONG 0x3F
168#define SCSIOP_CHANGE_DEFINITION 0x40
169#define SCSIOP_WRITE_SAME 0x41
170#define SCSIOP_READ_SUB_CHANNEL 0x42
171#define SCSIOP_READ_TOC 0x43
172#define SCSIOP_READ_HEADER 0x44
173#define SCSIOP_REPORT_DENSITY_SUPPORT 0x44
174#define SCSIOP_PLAY_AUDIO 0x45
175#define SCSIOP_GET_CONFIGURATION 0x46
176#define SCSIOP_PLAY_AUDIO_MSF 0x47
177#define SCSIOP_PLAY_TRACK_INDEX 0x48
178#define SCSIOP_PLAY_TRACK_RELATIVE 0x49
179#define SCSIOP_GET_EVENT_STATUS 0x4A
180#define SCSIOP_PAUSE_RESUME 0x4B
181#define SCSIOP_LOG_SELECT 0x4C
182#define SCSIOP_LOG_SENSE 0x4D
183#define SCSIOP_STOP_PLAY_SCAN 0x4E
184#define SCSIOP_XDWRITE 0x50
185#define SCSIOP_XPWRITE 0x51
186#define SCSIOP_READ_DISK_INFORMATION 0x51
187#define SCSIOP_READ_DISC_INFORMATION 0x51
188#define SCSIOP_READ_TRACK_INFORMATION 0x52
189#define SCSIOP_XDWRITE_READ 0x53
190#define SCSIOP_RESERVE_TRACK_RZONE 0x53
191#define SCSIOP_SEND_OPC_INFORMATION 0x54
192#define SCSIOP_MODE_SELECT10 0x55
193#define SCSIOP_RESERVE_UNIT10 0x56
194#define SCSIOP_RESERVE_ELEMENT 0x56
195#define SCSIOP_RELEASE_UNIT10 0x57
196#define SCSIOP_RELEASE_ELEMENT 0x57
197#define SCSIOP_REPAIR_TRACK 0x58
198#define SCSIOP_MODE_SENSE10 0x5A
199#define SCSIOP_CLOSE_TRACK_SESSION 0x5B
200#define SCSIOP_READ_BUFFER_CAPACITY 0x5C
201#define SCSIOP_SEND_CUE_SHEET 0x5D
202#define SCSIOP_PERSISTENT_RESERVE_IN 0x5E
203#define SCSIOP_PERSISTENT_RESERVE_OUT 0x5F
204#define SCSIOP_XDWRITE_EXTENDED16 0x80
205#define SCSIOP_WRITE_FILEMARKS16 0x80
206#define SCSIOP_REBUILD16 0x81
207#define SCSIOP_READ_REVERSE16 0x81
208#define SCSIOP_REGENERATE16 0x82
209#define SCSIOP_EXTENDED_COPY 0x83
210#define SCSIOP_RECEIVE_COPY_RESULTS 0x84
211#define SCSIOP_ATA_PASSTHROUGH16 0x85
212#define SCSIOP_ACCESS_CONTROL_IN 0x86
213#define SCSIOP_ACCESS_CONTROL_OUT 0x87
214#define SCSIOP_READ16 0x88
215#define SCSIOP_WRITE16 0x8A
216#define SCSIOP_READ_ATTRIBUTES 0x8C
217#define SCSIOP_WRITE_ATTRIBUTES 0x8D
218#define SCSIOP_WRITE_VERIFY16 0x8E
219#define SCSIOP_VERIFY16 0x8F
220#define SCSIOP_PREFETCH16 0x90
221#define SCSIOP_SYNCHRONIZE_CACHE16 0x91
222#define SCSIOP_SPACE16 0x91
223#define SCSIOP_LOCK_UNLOCK_CACHE16 0x92
224#define SCSIOP_LOCATE16 0x92
225#define SCSIOP_WRITE_SAME16 0x93
226#define SCSIOP_ERASE16 0x93
227#define SCSIOP_READ_CAPACITY16 0x9E
228#define SCSIOP_SERVICE_ACTION_IN16 0x9E
229#define SCSIOP_SERVICE_ACTION_OUT16 0x9F
230#define SCSIOP_REPORT_LUNS 0xA0
231#define SCSIOP_BLANK 0xA1
232#define SCSIOP_ATA_PASSTHROUGH12 0xA1
233#define SCSIOP_SEND_EVENT 0xA2
234#define SCSIOP_SEND_KEY 0xA3
235#define SCSIOP_MAINTENANCE_IN 0xA3
236#define SCSIOP_REPORT_KEY 0xA4
237#define SCSIOP_MAINTENANCE_OUT 0xA4
238#define SCSIOP_MOVE_MEDIUM 0xA5
239#define SCSIOP_LOAD_UNLOAD_SLOT 0xA6
240#define SCSIOP_EXCHANGE_MEDIUM 0xA6
241#define SCSIOP_SET_READ_AHEAD 0xA7
242#define SCSIOP_MOVE_MEDIUM_ATTACHED 0xA7
243#define SCSIOP_READ12 0xA8
244#define SCSIOP_GET_MESSAGE 0xA8
245#define SCSIOP_SERVICE_ACTION_OUT12 0xA9
246#define SCSIOP_WRITE12 0xAA
247#define SCSIOP_SEND_MESSAGE 0xAB
248#define SCSIOP_SERVICE_ACTION_IN12 0xAB
249#define SCSIOP_GET_PERFORMANCE 0xAC
250#define SCSIOP_READ_DVD_STRUCTURE 0xAD
251#define SCSIOP_WRITE_VERIFY12 0xAE
252#define SCSIOP_VERIFY12 0xAF
253#define SCSIOP_SEARCH_DATA_HIGH12 0xB0
254#define SCSIOP_SEARCH_DATA_EQUAL12 0xB1
255#define SCSIOP_SEARCH_DATA_LOW12 0xB2
256#define SCSIOP_SET_LIMITS12 0xB3
257#define SCSIOP_READ_ELEMENT_STATUS_ATTACHED 0xB4
258#define SCSIOP_REQUEST_VOL_ELEMENT 0xB5
259#define SCSIOP_SEND_VOLUME_TAG 0xB6
260#define SCSIOP_SET_STREAMING 0xB6
261#define SCSIOP_READ_DEFECT_DATA 0xB7
262#define SCSIOP_READ_ELEMENT_STATUS 0xB8
263#define SCSIOP_READ_CD_MSF 0xB9
264#define SCSIOP_SCAN_CD 0xBA
265#define SCSIOP_REDUNDANCY_GROUP_IN 0xBA
266#define SCSIOP_SET_CD_SPEED 0xBB
267#define SCSIOP_REDUNDANCY_GROUP_OUT 0xBB
268#define SCSIOP_PLAY_CD 0xBC
269#define SCSIOP_SPARE_IN 0xBC
270#define SCSIOP_MECHANISM_STATUS 0xBD
271#define SCSIOP_SPARE_OUT 0xBD
272#define SCSIOP_READ_CD 0xBE
273#define SCSIOP_VOLUME_SET_IN 0xBE
274#define SCSIOP_SEND_DVD_STRUCTURE 0xBF
275#define SCSIOP_VOLUME_SET_OUT 0xBF
276#define SCSIOP_INIT_ELEMENT_RANGE 0xE7
278#define SCSISTAT_GOOD 0x00
279#define SCSISTAT_CHECK_CONDITION 0x02
280#define SCSISTAT_CONDITION_MET 0x04
281#define SCSISTAT_BUSY 0x08
282#define SCSISTAT_INTERMEDIATE 0x10
283#define SCSISTAT_INTERMEDIATE_COND_MET 0x14
284#define SCSISTAT_RESERVATION_CONFLICT 0x18
285#define SCSISTAT_COMMAND_TERMINATED 0x22
286#define SCSISTAT_QUEUE_FULL 0x28
291#define SP_RETURN_NOT_FOUND 0
292#define SP_RETURN_FOUND 1
293#define SP_RETURN_ERROR 2
294#define SP_RETURN_BAD_CONFIG 3
296#define SRB_FUNCTION_EXECUTE_SCSI 0x00
297#define SRB_FUNCTION_CLAIM_DEVICE 0x01
298#define SRB_FUNCTION_IO_CONTROL 0x02
299#define SRB_FUNCTION_RECEIVE_EVENT 0x03
300#define SRB_FUNCTION_RELEASE_QUEUE 0x04
301#define SRB_FUNCTION_ATTACH_DEVICE 0x05
302#define SRB_FUNCTION_RELEASE_DEVICE 0x06
303#define SRB_FUNCTION_SHUTDOWN 0x07
304#define SRB_FUNCTION_FLUSH 0x08
305#define SRB_FUNCTION_ABORT_COMMAND 0x10
306#define SRB_FUNCTION_RELEASE_RECOVERY 0x11
307#define SRB_FUNCTION_RESET_BUS 0x12
308#define SRB_FUNCTION_RESET_DEVICE 0x13
309#define SRB_FUNCTION_TERMINATE_IO 0x14
310#define SRB_FUNCTION_FLUSH_QUEUE 0x15
311#define SRB_FUNCTION_REMOVE_DEVICE 0x16
312#define SRB_FUNCTION_WMI 0x17
313#define SRB_FUNCTION_LOCK_QUEUE 0x18
314#define SRB_FUNCTION_UNLOCK_QUEUE 0x19
315#define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20
316#define SRB_FUNCTION_SET_LINK_TIMEOUT 0x21
317#define SRB_FUNCTION_LINK_TIMEOUT_OCCURRED 0x22
318#define SRB_FUNCTION_LINK_TIMEOUT_COMPLETE 0x23
319#define SRB_FUNCTION_POWER 0x24
320#define SRB_FUNCTION_PNP 0x25
321#define SRB_FUNCTION_DUMP_POINTERS 0x26
323#define SRB_STATUS_PENDING 0x00
324#define SRB_STATUS_SUCCESS 0x01
325#define SRB_STATUS_ABORTED 0x02
326#define SRB_STATUS_ABORT_FAILED 0x03
327#define SRB_STATUS_ERROR 0x04
328#define SRB_STATUS_BUSY 0x05
329#define SRB_STATUS_INVALID_REQUEST 0x06
330#define SRB_STATUS_INVALID_PATH_ID 0x07
331#define SRB_STATUS_NO_DEVICE 0x08
332#define SRB_STATUS_TIMEOUT 0x09
333#define SRB_STATUS_SELECTION_TIMEOUT 0x0A
334#define SRB_STATUS_COMMAND_TIMEOUT 0x0B
335#define SRB_STATUS_MESSAGE_REJECTED 0x0D
336#define SRB_STATUS_BUS_RESET 0x0E
337#define SRB_STATUS_PARITY_ERROR 0x0F
338#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10
339#define SRB_STATUS_NO_HBA 0x11
340#define SRB_STATUS_DATA_OVERRUN 0x12
341#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13
342#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
343#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15
344#define SRB_STATUS_REQUEST_FLUSHED 0x16
345#define SRB_STATUS_INVALID_LUN 0x20
346#define SRB_STATUS_INVALID_TARGET_ID 0x21
347#define SRB_STATUS_BAD_FUNCTION 0x22
348#define SRB_STATUS_ERROR_RECOVERY 0x23
349#define SRB_STATUS_NOT_POWERED 0x24
350#define SRB_STATUS_LINK_DOWN 0x25
351#define SRB_STATUS_INTERNAL_ERROR 0x30
352#define SRB_STATUS_QUEUE_FROZEN 0x40
353#define SRB_STATUS_AUTOSENSE_VALID 0x80
354#define SRB_STATUS(Status) (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
356#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002
357#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004
358#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
360#define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010
361#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020
362#define SRB_FLAGS_DATA_IN 0x00000040
363#define SRB_FLAGS_DATA_OUT 0x00000080
364#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000
365#define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
367#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100
368#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200
369#define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400
371#define SRB_FLAGS_IS_ACTIVE 0x00010000
372#define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000
373#define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000
374#define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000
376#define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000
377#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000
379#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000
380#define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000
382#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
383#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
385#define SRB_SIMPLE_TAG_REQUEST 0x20
386#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21
387#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22
389#define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x01
390#define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x01
391#define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x01
393#define STOR_MAP_NO_BUFFERS (0)
394#define STOR_MAP_ALL_BUFFERS (1)
395#define STOR_MAP_NON_READ_WRITE_BUFFERS (2)
397#define VPD_SUPPORTED_PAGES 0x00
398#define VPD_SERIAL_NUMBER 0x80
399#define VPD_DEVICE_IDENTIFIERS 0x83
400#define VPD_MEDIA_SERIAL_NUMBER 0x84
401#define VPD_SOFTWARE_INTERFACE_IDENTIFIERS 0x84
402#define VPD_NETWORK_MANAGEMENT_ADDRESSES 0x85
403#define VPD_EXTENDED_INQUIRY_DATA 0x86
404#define VPD_MODE_PAGE_POLICY 0x87
405#define VPD_SCSI_PORTS 0x88
407#define SCSI_SENSE_NO_SENSE 0x00
408#define SCSI_SENSE_RECOVERED_ERROR 0x01
409#define SCSI_SENSE_NOT_READY 0x02
410#define SCSI_SENSE_MEDIUM_ERROR 0x03
411#define SCSI_SENSE_HARDWARE_ERROR 0x04
412#define SCSI_SENSE_ILLEGAL_REQUEST 0x05
413#define SCSI_SENSE_UNIT_ATTENTION 0x06
414#define SCSI_SENSE_DATA_PROTECT 0x07
415#define SCSI_SENSE_BLANK_CHECK 0x08
416#define SCSI_SENSE_UNIQUE 0x09
417#define SCSI_SENSE_COPY_ABORTED 0x0A
418#define SCSI_SENSE_ABORTED_COMMAND 0x0B
419#define SCSI_SENSE_EQUAL 0x0C
420#define SCSI_SENSE_VOL_OVERFLOW 0x0D
421#define SCSI_SENSE_MISCOMPARE 0x0E
422#define SCSI_SENSE_RESERVED 0x0F
569#if (NTDDI_VERSION >= NTDDI_WIN7)
650#if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64)
736 struct _CDB6READWRITE
854 struct _READ_DISK_INFORMATION
863 struct _READ_TRACK_INFORMATION
875 struct _RESERVE_TRACK_RZONE
882 struct _SEND_OPC_INFORMATION
917 struct _READ_BUFFER_CAPACITY
926 struct _SEND_CUE_SHEET
955 struct _PLAY_AUDIO_MSF
991 UCHAR StartingBlockAddress[4];
1028 struct _STOP_PLAY_SCAN
1096 struct _PLXTR_READ_CDDA
1112 struct _NEC_READ_CDDA
1162 struct _MODE_SELECT10
1254 struct _MEDIA_REMOVAL
1276 struct _REQUEST_BLOCK_ADDRESS
1295 struct _WRITE_TAPE_MARKS
1305 struct _SPACE_TAPE_MARKS
1326 struct _READ_POSITION
1335 struct _CDB6READWRITETAPE
1348 struct _INIT_ELEMENT_STATUS
1357 struct _INITIALIZE_ELEMENT_RANGE
1370 struct _POSITION_TO_ELEMENT
1395 struct _EXCHANGE_MEDIUM
1409 struct _READ_ELEMENT_STATUS
1422 struct _SEND_VOLUME_TAG
1437 struct _REQUEST_VOLUME_ELEMENT_ADDRESS
1474 struct _SYNCHRONIZE_CACHE10
1486 struct _GET_EVENT_STATUS_NOTIFICATION
1498 struct _GET_PERFORMANCE
1511 struct _READ_DVD_STRUCTURE
1524 struct _SET_STREAMING
1531 struct _SEND_DVD_STRUCTURE
1565 struct _SET_READ_AHEAD
1575 struct _READ_FORMATTED_CAPACITIES
1592 struct _PERSISTENT_RESERVE_IN
1601 struct _PERSISTENT_RESERVE_OUT
1612 struct _GET_CONFIGURATION
1622 struct _SET_CD_SPEED
1709 struct _SYNCHRONIZE_CACHE16
1720 struct _READ_CAPACITY16
1774#if (NTDDI_VERSION < NTDDI_WINXP)
1785 UCHAR ReservedBit:1;
1804#include <pshpack1.h>
1905#include <pshpack1.h>
2222(
NTAPI STOR_SYNCHRONIZED_ACCESS)(
2327#define REVERSE_BYTES_QUAD(Destination, Source) { \
2328 PEIGHT_BYTE d = (PEIGHT_BYTE)(Destination); \
2329 PEIGHT_BYTE s = (PEIGHT_BYTE)(Source); \
2330 d->Byte7 = s->Byte0; \
2331 d->Byte6 = s->Byte1; \
2332 d->Byte5 = s->Byte2; \
2333 d->Byte4 = s->Byte3; \
2334 d->Byte3 = s->Byte4; \
2335 d->Byte2 = s->Byte5; \
2336 d->Byte1 = s->Byte6; \
2337 d->Byte0 = s->Byte7; \
2340#define REVERSE_BYTES(Destination, Source) { \
2341 PFOUR_BYTE d = (PFOUR_BYTE)(Destination); \
2342 PFOUR_BYTE s = (PFOUR_BYTE)(Source); \
2343 d->Byte3 = s->Byte0; \
2344 d->Byte2 = s->Byte1; \
2345 d->Byte1 = s->Byte2; \
2346 d->Byte0 = s->Byte3; \
2349#define REVERSE_BYTES_SHORT(Destination, Source) { \
2350 PTWO_BYTE d = (PTWO_BYTE)(Destination); \
2351 PTWO_BYTE s = (PTWO_BYTE)(Source); \
2352 d->Byte1 = s->Byte0; \
2353 d->Byte0 = s->Byte1; \
2356#define StorPortCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
2399 _In_ PCCHAR DebugMessage,
2866 HwPassiveInitializeRoutine,
3047 AdapterDeviceObject,
3073 ScatterGatherBuffer,
3074 ScatterGatherBufferLength);
3169#define DebugPrint(x) StorPortDebugPrint x
3171#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
#define _In_reads_bytes_(size)
#define _Out_writes_bytes_(size)
#define _When_(expr, annos)
_In_ NDIS_ERROR_CODE ErrorCode
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
#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
struct _ACCESS_RANGE * PACCESS_RANGE
STORPORT_API PVOID NTAPI StorPortGetUncachedExtension(_In_ PVOID HwDeviceExtension, _In_ PPORT_CONFIGURATION_INFORMATION ConfigInfo, _In_ ULONG NumberOfBytes)
enum _VPD_IDENTIFIER_TYPE * PVPD_IDENTIFIER_TYPE
STORPORT_API VOID __cdecl StorPortNotification(_In_ SCSI_NOTIFICATION_TYPE NotificationType, _In_ PVOID HwDeviceExtension,...)
struct _MEMORY_REGION MEMORY_REGION
@ StorPowerDeviceUnspecified
struct _ACCESS_RANGE ACCESS_RANGE
BOOLEAN(STREAMAPI * PHW_INTERRUPT)(IN PVOID DeviceExtension)
STOR_PHYSICAL_ADDRESS RangeStart