ReactOS 0.4.15-dev-6068-g8061a6f
storport.h
Go to the documentation of this file.
1/*
2 * storport.h
3 *
4 * StorPort interface
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23#ifndef _NTSTORPORT_
24#define _NTSTORPORT_
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30#if defined(_STORPORT_)
31#define STORPORT_API
32#else
33#define STORPORT_API DECLSPEC_IMPORT
34#endif
35
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
53
54#define DEVICE_CONNECTED 0x00
55
56#define CDB6GENERIC_LENGTH 6
57#define CDB10GENERIC_LENGTH 10
58#define CDB12GENERIC_LENGTH 12
59
60#define INQUIRYDATABUFFERSIZE 36
61#define SENSE_BUFFER_SIZE 18
62#define MAX_SENSE_BUFFER_SIZE 255
63
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)
68
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
103
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
108
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
277
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
287
288#define SETBITON 1
289#define SETBITOFF 0
290
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
295
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
322
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))
355
356#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002
357#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004
358#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
359
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)
366
367#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100
368#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200
369#define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400
370
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
375
376#define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000
377#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000
378
379#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000
380#define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000
381
382#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
383#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
384
385#define SRB_SIMPLE_TAG_REQUEST 0x20
386#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21
387#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22
388
389#define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x01
390#define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x01
391#define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x01
392
393#define STOR_MAP_NO_BUFFERS (0)
394#define STOR_MAP_ALL_BUFFERS (1)
395#define STOR_MAP_NON_READ_WRITE_BUFFERS (2)
396
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
406
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
423
425{
429
430typedef enum _STOR_DMA_WIDTH
431{
437
438typedef enum _STOR_SPINLOCK
439{
444
446{
455
457{
461
463{
486
488{
496
498{
508
510{
519
520typedef enum _VPD_CODE_SET
521{
527
529{
536
538{
549
551{
569#if (NTDDI_VERSION >= NTDDI_WIN7)
579#endif
581
583{
589
590typedef enum _GETSGSTATUS
591{
595
596typedef struct _SCSI_REQUEST_BLOCK
597{
604 UCHAR Lun;
617 union
618 {
622 };
623#if defined(_WIN64)
625#endif
626 UCHAR Cdb[16];
628
629typedef struct _SCSI_WMI_REQUEST_BLOCK
630{
637 UCHAR Lun;
640 UCHAR Reserved2[2];
650#if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64)
651 ULONG Reserved6;
652#endif
653 UCHAR Reserved5[16];
655
656typedef struct _SCSI_POWER_REQUEST_BLOCK
657{
664 UCHAR Lun;
675#if defined(_WIN64)
677#endif
678 UCHAR Reserved5[16];
680
681typedef struct _STOR_DEVICE_CAPABILITIES
682{
684 ULONG DeviceD1:1;
685 ULONG DeviceD2:1;
690 ULONG UniqueID:1;
695
696typedef struct _SCSI_PNP_REQUEST_BLOCK
697{
704 UCHAR Lun;
715#if defined(_WIN64)
717#endif
718 UCHAR Reserved4[16];
720
721#include <pshpack1.h>
722typedef union _CDB
723{
724 struct _CDB6GENERIC
725 {
731 UCHAR Link:1;
732 UCHAR Flag:1;
733 UCHAR Reserved:4;
736 struct _CDB6READWRITE
737 {
746 struct _CDB6INQUIRY
747 {
756 struct _CDB6INQUIRY3
757 {
767 struct _CDB6VERIFY
768 {
770 UCHAR Fixed:1;
773 UCHAR Reserved:2;
778 struct _CDB6FORMAT
779 {
788 struct _CDB10
789 {
804 } CDB10, *PCDB10;
805 struct _CDB12
806 {
817 } CDB12, *PCDB12;
818 struct _CDB16
819 {
829 } CDB16, *PCDB16;
830 struct _PAUSE_RESUME
831 {
835 UCHAR Reserved2[6];
839 struct _READ_TOC
840 {
843 UCHAR Msf:1;
846 UCHAR Format2:4;
848 UCHAR Reserved3[3];
851 UCHAR Control:6;
852 UCHAR Format:2;
854 struct _READ_DISK_INFORMATION
855 {
858 UCHAR Lun:3;
859 UCHAR Reserved2[5];
863 struct _READ_TRACK_INFORMATION
864 {
866 UCHAR Track:1;
869 UCHAR Lun:3;
875 struct _RESERVE_TRACK_RZONE
876 {
878 UCHAR Reserved1[4];
882 struct _SEND_OPC_INFORMATION
883 {
885 UCHAR DoOpc:1;
887 UCHAR Exclude0:1;
888 UCHAR Exclude1:1;
890 UCHAR Reserved3[4];
894 struct _REPAIR_TRACK
895 {
899 UCHAR Reserved2[2];
901 UCHAR Reserved3[3];
904 struct _CLOSE_TRACK
905 {
909 UCHAR Track:1;
910 UCHAR Session:1;
914 UCHAR Reserved4[3];
917 struct _READ_BUFFER_CAPACITY
918 {
922 UCHAR Reserved2[5];
926 struct _SEND_CUE_SHEET
927 {
929 UCHAR Reserved[5];
933 struct _READ_HEADER
934 {
937 UCHAR Msf:1;
939 UCHAR Lun:3;
945 struct _PLAY_AUDIO
946 {
952 UCHAR PlayLength[2];
955 struct _PLAY_AUDIO_MSF
956 {
969 struct _BLANK_MEDIA
970 {
977 UCHAR Reserved3[5];
980 struct _PLAY_CD
981 {
984 UCHAR CMSF:1;
986 UCHAR Lun:3;
987 _ANONYMOUS_UNION union
988 {
989 struct _LBA
990 {
991 UCHAR StartingBlockAddress[4];
992 UCHAR PlayLength[4];
994 struct _MSF
995 {
997 UCHAR StartingM;
998 UCHAR StartingS;
999 UCHAR StartingF;
1000 UCHAR EndingM;
1001 UCHAR EndingS;
1002 UCHAR EndingF;
1006 UCHAR Audio:1;
1007 UCHAR Composite:1;
1008 UCHAR Port1:1;
1009 UCHAR Port2:1;
1010 UCHAR Reserved2:3;
1011 UCHAR Speed:1;
1012 UCHAR Control;
1013 } PLAY_CD, *PPLAY_CD;
1014 struct _SCAN_CD
1015 {
1018 UCHAR Reserved1:3;
1019 UCHAR Direct:1;
1020 UCHAR Lun:3;
1022 UCHAR Reserved2[3];
1023 UCHAR Reserved3:6;
1024 UCHAR Type:2;
1026 UCHAR Control;
1027 } SCAN_CD, *PSCAN_CD;
1028 struct _STOP_PLAY_SCAN
1029 {
1031 UCHAR Reserved1:5;
1032 UCHAR Lun:3;
1033 UCHAR Reserved2[7];
1034 UCHAR Control;
1036 struct _SUBCHANNEL
1037 {
1039 UCHAR Reserved0:1;
1040 UCHAR Msf:1;
1041 UCHAR Reserved1:3;
1043 UCHAR Reserved2:6;
1044 UCHAR SubQ:1;
1045 UCHAR Reserved3:1;
1046 UCHAR Format;
1047 UCHAR Reserved4[2];
1050 UCHAR Control;
1052 struct _READ_CD
1053 {
1056 UCHAR Reserved0:1;
1058 UCHAR Lun:3;
1059 UCHAR StartingLBA[4];
1061 UCHAR Reserved2:1;
1062 UCHAR ErrorFlags:2;
1063 UCHAR IncludeEDC:1;
1065 UCHAR HeaderCode:2;
1068 UCHAR Reserved3:5;
1069 UCHAR Control;
1070 } READ_CD, *PREAD_CD;
1071 struct _READ_CD_MSF
1072 {
1075 UCHAR Reserved1:1;
1077 UCHAR Lun:3;
1082 UCHAR EndingM;
1083 UCHAR EndingS;
1084 UCHAR EndingF;
1086 UCHAR Reserved4:1;
1087 UCHAR ErrorFlags:2;
1088 UCHAR IncludeEDC:1;
1090 UCHAR HeaderCode:2;
1093 UCHAR Reserved5:5;
1094 UCHAR Control;
1096 struct _PLXTR_READ_CDDA
1097 {
1099 UCHAR Reserved0:5;
1109 UCHAR SubCode;
1110 UCHAR Control;
1112 struct _NEC_READ_CDDA
1113 {
1123 UCHAR Control;
1125 struct _MODE_SENSE
1126 {
1128 UCHAR Reserved1:3;
1129 UCHAR Dbd:1;
1130 UCHAR Reserved2:1;
1132 UCHAR PageCode:6;
1133 UCHAR Pc:2;
1136 UCHAR Control;
1138 struct _MODE_SENSE10
1139 {
1141 UCHAR Reserved1:3;
1142 UCHAR Dbd:1;
1143 UCHAR Reserved2:1;
1145 UCHAR PageCode:6;
1146 UCHAR Pc:2;
1147 UCHAR Reserved3[4];
1149 UCHAR Control;
1151 struct _MODE_SELECT
1152 {
1154 UCHAR SPBit:1;
1155 UCHAR Reserved1:3;
1156 UCHAR PFBit:1;
1158 UCHAR Reserved2[2];
1160 UCHAR Control;
1162 struct _MODE_SELECT10
1163 {
1165 UCHAR SPBit:1;
1166 UCHAR Reserved1:3;
1167 UCHAR PFBit:1;
1169 UCHAR Reserved2[5];
1171 UCHAR Control;
1173 struct _LOCATE
1174 {
1176 UCHAR Immediate:1;
1177 UCHAR CPBit:1;
1178 UCHAR BTBit:1;
1179 UCHAR Reserved1:2;
1185 UCHAR Control;
1186 } LOCATE, *PLOCATE;
1187 struct _LOGSENSE
1188 {
1190 UCHAR SPBit:1;
1191 UCHAR PPCBit:1;
1192 UCHAR Reserved1:3;
1194 UCHAR PageCode:6;
1195 UCHAR PCBit:2;
1200 UCHAR Control;
1201 } LOGSENSE, *PLOGSENSE;
1202 struct _LOGSELECT
1203 {
1205 UCHAR SPBit:1;
1206 UCHAR PCRBit:1;
1207 UCHAR Reserved1:3;
1209 UCHAR Reserved:6;
1210 UCHAR PCBit:2;
1211 UCHAR Reserved2[4];
1213 UCHAR Control;
1215 struct _PRINT
1216 {
1218 UCHAR Reserved:5;
1221 UCHAR Control;
1222 } PRINT, *PPRINT;
1223 struct _SEEK
1224 {
1226 UCHAR Reserved1:5;
1229 UCHAR Reserved2[3];
1230 UCHAR Control;
1231 } SEEK, *PSEEK;
1232 struct _ERASE
1233 {
1235 UCHAR Long:1;
1236 UCHAR Immediate:1;
1237 UCHAR Reserved1:3;
1239 UCHAR Reserved2[3];
1240 UCHAR Control;
1241 } ERASE, *PERASE;
1242 struct _START_STOP
1243 {
1245 UCHAR Immediate:1;
1246 UCHAR Reserved1:4;
1248 UCHAR Reserved2[2];
1249 UCHAR Start:1;
1250 UCHAR LoadEject:1;
1251 UCHAR Reserved3:6;
1252 UCHAR Control;
1254 struct _MEDIA_REMOVAL
1255 {
1257 UCHAR Reserved1:5;
1259 UCHAR Reserved2[2];
1260 UCHAR Prevent:1;
1261 UCHAR Persistant:1;
1262 UCHAR Reserved3:6;
1263 UCHAR Control;
1265 struct _SEEK_BLOCK
1266 {
1268 UCHAR Immediate:1;
1269 UCHAR Reserved1:7;
1271 UCHAR Link:1;
1272 UCHAR Flag:1;
1273 UCHAR Reserved2:4;
1276 struct _REQUEST_BLOCK_ADDRESS
1277 {
1279 UCHAR Reserved1[3];
1281 UCHAR Link:1;
1282 UCHAR Flag:1;
1283 UCHAR Reserved2:4;
1286 struct _PARTITION
1287 {
1289 UCHAR Immediate:1;
1290 UCHAR Sel:1;
1292 UCHAR Reserved1[3];
1293 UCHAR Control;
1295 struct _WRITE_TAPE_MARKS
1296 {
1298 UCHAR Immediate:1;
1300 UCHAR Reserved:3;
1303 UCHAR Control;
1305 struct _SPACE_TAPE_MARKS
1306 {
1308 UCHAR Code:3;
1309 UCHAR Reserved:2;
1314 union
1315 {
1316 UCHAR value;
1317 struct
1318 {
1319 UCHAR Link:1;
1320 UCHAR Flag:1;
1321 UCHAR Reserved:4;
1326 struct _READ_POSITION
1327 {
1329 UCHAR BlockType:1;
1330 UCHAR Reserved1:4;
1331 UCHAR Lun:3;
1332 UCHAR Reserved2[7];
1333 UCHAR Control;
1335 struct _CDB6READWRITETAPE
1336 {
1339 UCHAR Reserved:3;
1343 UCHAR Link:1;
1344 UCHAR Flag:1;
1345 UCHAR Reserved1:4;
1348 struct _INIT_ELEMENT_STATUS
1349 {
1351 UCHAR Reserved1:5;
1353 UCHAR Reserved2[3];
1354 UCHAR Reserved3:7;
1355 UCHAR NoBarCode:1;
1357 struct _INITIALIZE_ELEMENT_RANGE
1358 {
1360 UCHAR Range:1;
1361 UCHAR Reserved1:4;
1364 UCHAR Reserved2[2];
1367 UCHAR Reserved4:7;
1368 UCHAR NoBarCode:1;
1370 struct _POSITION_TO_ELEMENT
1371 {
1373 UCHAR Reserved1:5;
1377 UCHAR Reserved2[2];
1378 UCHAR Flip:1;
1379 UCHAR Reserved3:7;
1380 UCHAR Control;
1382 struct _MOVE_MEDIUM
1383 {
1385 UCHAR Reserved1:5;
1390 UCHAR Reserved2[2];
1391 UCHAR Flip:1;
1392 UCHAR Reserved3:7;
1393 UCHAR Control;
1395 struct _EXCHANGE_MEDIUM
1396 {
1398 UCHAR Reserved1:5;
1404 UCHAR Flip1:1;
1405 UCHAR Flip2:1;
1406 UCHAR Reserved3:6;
1407 UCHAR Control;
1409 struct _READ_ELEMENT_STATUS
1410 {
1413 UCHAR VolTag:1;
1420 UCHAR Control;
1422 struct _SEND_VOLUME_TAG
1423 {
1426 UCHAR Reserved1:1;
1430 UCHAR ActionCode:5;
1431 UCHAR Reserved3:3;
1432 UCHAR Reserved4[2];
1435 UCHAR Control;
1437 struct _REQUEST_VOLUME_ELEMENT_ADDRESS
1438 {
1441 UCHAR VolTag:1;
1448 UCHAR Control;
1450 struct _LOAD_UNLOAD
1451 {
1453 UCHAR Immediate:1;
1454 UCHAR Reserved1:4;
1455 UCHAR Lun:3;
1456 UCHAR Reserved2[2];
1457 UCHAR Start:1;
1458 UCHAR LoadEject:1;
1459 UCHAR Reserved3:6;
1460 UCHAR Reserved4[3];
1461 UCHAR Slot;
1462 UCHAR Reserved5[3];
1464 struct _MECH_STATUS
1465 {
1467 UCHAR Reserved:5;
1468 UCHAR Lun:3;
1469 UCHAR Reserved1[6];
1471 UCHAR Reserved2[1];
1472 UCHAR Control;
1474 struct _SYNCHRONIZE_CACHE10
1475 {
1477 UCHAR RelAddr:1;
1478 UCHAR Immediate:1;
1479 UCHAR Reserved:3;
1480 UCHAR Lun:3;
1483 UCHAR BlockCount[2];
1484 UCHAR Control;
1486 struct _GET_EVENT_STATUS_NOTIFICATION
1487 {
1489 UCHAR Immediate:1;
1490 UCHAR Reserved:4;
1491 UCHAR Lun:3;
1492 UCHAR Reserved2[2];
1494 UCHAR Reserved3[2];
1496 UCHAR Control;
1498 struct _GET_PERFORMANCE
1499 {
1501 UCHAR Except:2;
1502 UCHAR Write:1;
1503 UCHAR Tolerance:2;
1504 UCHAR Reserved0:3;
1505 UCHAR StartingLBA[4];
1506 UCHAR Reserved1[2];
1508 UCHAR Type;
1509 UCHAR Control;
1511 struct _READ_DVD_STRUCTURE
1512 {
1514 UCHAR Reserved1:5;
1515 UCHAR Lun:3;
1518 UCHAR Format;
1520 UCHAR Reserved3:6;
1521 UCHAR AGID:2;
1522 UCHAR Control;
1524 struct _SET_STREAMING
1525 {
1527 UCHAR Reserved[8];
1529 UCHAR Control;
1530 } SET_STREAMING;
1531 struct _SEND_DVD_STRUCTURE
1532 {
1534 UCHAR Reserved1:5;
1535 UCHAR Lun:3;
1536 UCHAR Reserved2[5];
1537 UCHAR Format;
1540 UCHAR Control;
1542 struct _SEND_KEY
1543 {
1545 UCHAR Reserved1:5;
1546 UCHAR Lun:3;
1547 UCHAR Reserved2[6];
1549 UCHAR KeyFormat:6;
1550 UCHAR AGID:2;
1551 UCHAR Control;
1552 } SEND_KEY, *PSEND_KEY;
1553 struct _REPORT_KEY
1554 {
1556 UCHAR Reserved1:5;
1557 UCHAR Lun:3;
1559 UCHAR Reserved2[2];
1561 UCHAR KeyFormat:6;
1562 UCHAR AGID:2;
1563 UCHAR Control;
1565 struct _SET_READ_AHEAD
1566 {
1568 UCHAR Reserved1:5;
1569 UCHAR Lun:3;
1570 UCHAR TriggerLBA[4];
1573 UCHAR Control;
1575 struct _READ_FORMATTED_CAPACITIES
1576 {
1578 UCHAR Reserved1:5;
1579 UCHAR Lun:3;
1580 UCHAR Reserved2[5];
1582 UCHAR Control;
1584 struct _REPORT_LUNS
1585 {
1587 UCHAR Reserved1[5];
1589 UCHAR Reserved2[1];
1590 UCHAR Control;
1592 struct _PERSISTENT_RESERVE_IN
1593 {
1596 UCHAR Reserved1:3;
1597 UCHAR Reserved2[5];
1599 UCHAR Control;
1601 struct _PERSISTENT_RESERVE_OUT
1602 {
1605 UCHAR Reserved1:3;
1606 UCHAR Type:4;
1607 UCHAR Scope:4;
1608 UCHAR Reserved2[4];
1610 UCHAR Control;
1612 struct _GET_CONFIGURATION
1613 {
1616 UCHAR Reserved1:7;
1618 UCHAR Reserved2[3];
1620 UCHAR Control;
1622 struct _SET_CD_SPEED
1623 {
1625 _ANONYMOUS_UNION union
1626 {
1628 _ANONYMOUS_STRUCT struct
1629 {
1631 UCHAR Reserved3:6;
1634 UCHAR ReadSpeed[2];
1635 UCHAR WriteSpeed[2];
1636 UCHAR Reserved2[5];
1637 UCHAR Control;
1639 struct _READ12
1640 {
1643 UCHAR Reserved1:2;
1649 UCHAR Reserved2:7;
1650 UCHAR Streaming:1;
1651 UCHAR Control;
1652 } READ12;
1653 struct _WRITE12
1654 {
1657 UCHAR Reserved1:1;
1658 UCHAR EBP:1;
1664 UCHAR Reserved2:7;
1665 UCHAR Streaming:1;
1666 UCHAR Control;
1667 } WRITE12;
1668 struct _READ16
1669 {
1671 UCHAR Reserved1:3;
1677 UCHAR Reserved2:7;
1678 UCHAR Streaming:1;
1679 UCHAR Control;
1680 } READ16;
1681 struct _WRITE16
1682 {
1684 UCHAR Reserved1:3;
1690 UCHAR Reserved2:7;
1691 UCHAR Streaming:1;
1692 UCHAR Control;
1693 } WRITE16;
1694 struct _VERIFY16
1695 {
1697 UCHAR Reserved1:1;
1698 UCHAR ByteCheck:1;
1700 UCHAR Reserved2: 1;
1705 UCHAR Reserved3:7;
1706 UCHAR Streaming:1;
1707 UCHAR Control;
1708 } VERIFY16;
1709 struct _SYNCHRONIZE_CACHE16
1710 {
1712 UCHAR Reserved1:1;
1713 UCHAR Immediate:1;
1714 UCHAR Reserved2:6;
1716 UCHAR BlockCount[4];
1718 UCHAR Control;
1720 struct _READ_CAPACITY16
1721 {
1724 UCHAR Reserved1:3;
1727 UCHAR PMI:1;
1728 UCHAR Reserved2:7;
1729 UCHAR Control;
1731 ULONG AsUlong[4];
1732 UCHAR AsByte[16];
1734
1735typedef union _EIGHT_BYTE
1736{
1737 struct
1738 {
1739 UCHAR Byte0;
1740 UCHAR Byte1;
1741 UCHAR Byte2;
1742 UCHAR Byte3;
1743 UCHAR Byte4;
1744 UCHAR Byte5;
1745 UCHAR Byte6;
1746 UCHAR Byte7;
1747 };
1750
1751typedef union _FOUR_BYTE
1752{
1753 struct
1754 {
1755 UCHAR Byte0;
1756 UCHAR Byte1;
1757 UCHAR Byte2;
1758 UCHAR Byte3;
1759 };
1760 ULONG AsULong;
1762
1763typedef union _TWO_BYTE
1764{
1765 struct
1766 {
1767 UCHAR Byte0;
1768 UCHAR Byte1;
1769 };
1772#include <poppack.h>
1773
1774#if (NTDDI_VERSION < NTDDI_WINXP)
1775typedef struct _INQUIRYDATA
1776{
1777 UCHAR DeviceType:5;
1783 UCHAR HiSupport:1;
1784 UCHAR NormACA:1;
1785 UCHAR ReservedBit:1;
1786 UCHAR AERC:1;
1788 UCHAR Reserved[2];
1789 UCHAR SoftReset:1;
1791 UCHAR Reserved2:1;
1794 UCHAR Wide16Bit:1;
1795 UCHAR Wide32Bit:1;
1797 UCHAR VendorId[8];
1798 UCHAR ProductId[16];
1801 UCHAR Reserved3[40];
1803#else
1804#include <pshpack1.h>
1805typedef struct _INQUIRYDATA
1806{
1807 UCHAR DeviceType:5;
1811 union
1812 {
1814 struct
1815 {
1818 UCHAR ISOVersion:2;
1819 };
1820 };
1822 UCHAR HiSupport:1;
1823 UCHAR NormACA:1;
1825 UCHAR AERC:1;
1828 UCHAR Addr16:1;
1829 UCHAR Addr32:1;
1830 UCHAR AckReqQ:1;
1832 UCHAR MultiPort:1;
1836 UCHAR SoftReset:1;
1841 UCHAR Wide16Bit:1;
1842 UCHAR Wide32Bit:1;
1844 UCHAR VendorId[8];
1845 UCHAR ProductId[16];
1848 UCHAR Reserved3[40];
1850#include <poppack.h>
1851#endif
1852
1853typedef struct _VPD_MEDIA_SERIAL_NUMBER_PAGE
1854{
1855 UCHAR DeviceType:5;
1862
1863typedef struct _VPD_SERIAL_NUMBER_PAGE
1864{
1865 UCHAR DeviceType:5;
1872
1873typedef struct _VPD_IDENTIFICATION_DESCRIPTOR
1874{
1875 UCHAR CodeSet:4;
1876 UCHAR Reserved:4;
1879 UCHAR Reserved2:2;
1882 UCHAR Identifier[0];
1884
1885typedef struct _VPD_IDENTIFICATION_PAGE
1886{
1887 UCHAR DeviceType:5;
1892 UCHAR Descriptors[0];
1894
1895typedef struct _VPD_SUPPORTED_PAGES_PAGE
1896{
1897 UCHAR DeviceType:5;
1904
1905#include <pshpack1.h>
1906typedef struct _READ_CAPACITY_DATA
1907{
1911
1912typedef struct _READ_CAPACITY_DATA_EX
1913{
1917
1918typedef struct _MODE_PARAMETER_HEADER
1919{
1925
1926typedef struct _MODE_PARAMETER_HEADER10
1927{
1931 UCHAR Reserved[2];
1934
1935typedef struct _MODE_PARAMETER_BLOCK
1936{
1940 UCHAR BlockLength[3];
1942
1943typedef struct _LUN_LIST
1944{
1946 UCHAR Reserved[4];
1947#if !defined(__midl)
1948 UCHAR Lun[0][8];
1949#endif
1951
1952typedef struct _SENSE_DATA
1953{
1954 UCHAR ErrorCode:7;
1955 UCHAR Valid:1;
1957 UCHAR SenseKey:4;
1958 UCHAR Reserved:1;
1960 UCHAR EndOfMedia:1;
1961 UCHAR FileMark:1;
1962 UCHAR Information[4];
1970
1971#include <poppack.h>
1972
1974
1975typedef struct _ACCESS_RANGE
1976{
1981
1982typedef struct _MEMORY_REGION
1983{
1988
1990{
1991 ULONG Length;
2000 ULONG DmaPort;
2044
2046{
2051
2053{
2058
2059typedef struct _DPC_BUFFER
2060{
2064 struct
2065 {
2068 };
2075
2076typedef struct _STOR_DPC
2077{
2081
2082typedef struct _STOR_LOCK_HANDLE
2083{
2085 struct
2086 {
2087 struct
2088 {
2095
2097{
2113
2115{
2126
2128{
2134
2136{
2144
2145typedef
2148 _In_ PVOID DeviceExtension);
2149
2150typedef
2153 _In_ PVOID DeviceExtension,
2155
2156typedef
2159 _In_ PVOID DeviceExtension,
2161
2162typedef
2165 _In_ PVOID DeviceExtension);
2166
2167typedef
2169(NTAPI *PHW_TIMER)(
2170 _In_ PVOID DeviceExtension);
2171
2172typedef
2175 _In_ PVOID DeviceExtension);
2176
2177typedef
2180 IN PVOID DeviceExtension,
2183 IN PCHAR ArgumentString,
2185 OUT PBOOLEAN Again);
2186
2187typedef
2190 IN PVOID DeviceExtension,
2191 IN ULONG PathId);
2192
2193typedef
2196 IN PVOID DeviceExtension,
2199
2200typedef
2203 IN PVOID DeviceExtension,
2204 IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
2206
2207typedef
2210 _In_ PVOID DeviceExtension);
2211
2212typedef
2216 _In_ PVOID HwDeviceExtension,
2219
2220typedef
2222(NTAPI STOR_SYNCHRONIZED_ACCESS)(
2223 _In_ PVOID HwDeviceExtension,
2225
2226typedef STOR_SYNCHRONIZED_ACCESS *PSTOR_SYNCHRONIZED_ACCESS;
2227
2228typedef
2232 _In_ PVOID *Irp,
2235
2236typedef
2239 _In_ PVOID HwDeviceExtension,
2240 _In_ ULONG MessageId,
2242
2243typedef
2246 _In_ PVOID HwDeviceExtension,
2247 _In_ PSTOR_SCATTER_GATHER_LIST ScatterGatherList,
2249
2250typedef
2253 _In_ PVOID HwDeviceExtension,
2254 _In_ PVOID Mdl,
2255 _In_ PVOID CurrentVa,
2260 _Inout_ PVOID ScatterGatherBuffer,
2261 _In_ ULONG ScatterGatherBufferLength);
2262
2263typedef
2267 _In_ PVOID HwDeviceExtension,
2268 _In_opt_ PVOID PMdl);
2269
2270typedef
2274 _In_ ULONG Tag,
2275 _In_ PVOID HwDeviceExtension,
2276 _Out_ PVOID *PMdl);
2277
2278typedef
2282
2284{
2293
2294typedef struct _HW_INITIALIZATION_DATA
2295{
2324
2325
2326
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; \
2338}
2339
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; \
2347}
2348
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; \
2354}
2355
2356#define StorPortCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length))
2357
2359PUCHAR
2360NTAPI
2362 _In_ PVOID HwDeviceExtension,
2364
2366BOOLEAN
2367NTAPI
2369 _In_ PVOID HwDeviceExtension,
2370 _In_ ULONG RequestsToComplete);
2371
2373VOID
2374NTAPI
2376 _In_ PVOID HwDeviceExtension,
2379 _In_ UCHAR Lun,
2380 _In_ UCHAR SrbStatus);
2381
2383ULONG64
2384NTAPI
2387
2390NTAPI
2392 _In_ ULONG64 UlongAddress);
2393
2395VOID
2396__cdecl
2398 _In_ ULONG DebugPrintLevel,
2399 _In_ PCCHAR DebugMessage,
2400 ...);
2401
2403BOOLEAN
2404NTAPI
2406 _In_ PVOID HwDeviceExtension,
2409 _In_ UCHAR Lun,
2410 _In_ ULONG RequestsToComplete);
2411
2413BOOLEAN
2414NTAPI
2416 _In_ PVOID HwDeviceExtension,
2419 _In_ UCHAR Lun);
2420
2422VOID
2423NTAPI
2425 _In_ PVOID HwDeviceExtension,
2426 _In_ PVOID MappedAddress);
2427
2429VOID
2430NTAPI
2432 _In_ PVOID HwDeviceExtension,
2434
2436ULONG
2437NTAPI
2439 _In_ PVOID DeviceExtension,
2440 _In_ ULONG BusDataType,
2441 _In_ ULONG SystemIoBusNumber,
2444 _In_ ULONG Length);
2445
2447PVOID
2448NTAPI
2450 _In_ PVOID HwDeviceExtension,
2452 _In_ ULONG SystemIoBusNumber,
2453 _In_ STOR_PHYSICAL_ADDRESS IoAddress,
2455 _In_ BOOLEAN InIoSpace);
2456
2458PVOID
2459NTAPI
2461 _In_ PVOID HwDeviceExtension,
2464 _In_ UCHAR Lun);
2465
2468NTAPI
2470 _In_ PVOID HwDeviceExtension,
2473 _Out_ ULONG *Length);
2474
2477NTAPI
2479 _In_ PVOID DeviceExtension,
2481
2484NTAPI
2486 _In_ PVOID DeviceExtension,
2489 _In_ UCHAR Lun,
2490 _In_ LONG QueueTag);
2491
2493PVOID
2494NTAPI
2496 _In_ PVOID HwDeviceExtension,
2499
2501PVOID
2502NTAPI
2504 _In_ PVOID HwDeviceExtension,
2506
2508ULONG
2509NTAPI
2515
2517VOID
2518NTAPI
2520 _In_ PVOID HwDeviceExtension,
2524 _In_ UCHAR Lun,
2526 _In_ ULONG UniqueId);
2527
2529VOID
2530NTAPI
2534 _In_ ULONG Length);
2535
2537VOID
2538__cdecl
2541 _In_ PVOID HwDeviceExtension,
2542 ...);
2543
2545VOID
2546NTAPI
2548 _Out_ PLARGE_INTEGER CurrentTime);
2549
2551BOOLEAN
2552NTAPI
2554 _In_ PVOID HwDeviceExtension,
2555 _In_ ULONG TimeOut);
2556
2558BOOLEAN
2559NTAPI
2561 _In_ PVOID HwDeviceExtension,
2564 _In_ UCHAR Lun,
2565 _In_ ULONG TimeOut);
2566
2568VOID
2569NTAPI
2571 _In_ PVOID HwDeviceExtension,
2574 _In_ ULONG Count);
2575
2577VOID
2578NTAPI
2580 _In_ PVOID HwDeviceExtension,
2583 _In_ ULONG Count);
2584
2586VOID
2587NTAPI
2589 _In_ PVOID HwDeviceExtension,
2592 _In_ ULONG Count);
2593
2595UCHAR
2596NTAPI
2598 _In_ PVOID HwDeviceExtension,
2599 _In_ PUCHAR Port);
2600
2602ULONG
2603NTAPI
2605 _In_ PVOID HwDeviceExtension,
2606 _In_ PULONG Port);
2607
2609USHORT
2610NTAPI
2612 _In_ PVOID HwDeviceExtension,
2613 _In_ PUSHORT Port);
2614
2616VOID
2617NTAPI
2619 _In_ PVOID HwDeviceExtension,
2620 _In_ PUCHAR Register,
2622 _In_ ULONG Count);
2623
2625VOID
2626NTAPI
2628 _In_ PVOID HwDeviceExtension,
2629 _In_ PULONG Register,
2631 _In_ ULONG Count);
2632
2634VOID
2635NTAPI
2637 _In_ PVOID HwDeviceExtension,
2638 _In_ PUSHORT Register,
2640 _In_ ULONG Count);
2641
2643UCHAR
2644NTAPI
2646 _In_ PVOID HwDeviceExtension,
2647 _In_ PUCHAR Register);
2648
2650ULONG
2651NTAPI
2653 _In_ PVOID HwDeviceExtension,
2654 _In_ PULONG Register);
2655
2657USHORT
2658NTAPI
2660 _In_ PVOID HwDeviceExtension,
2661 _In_ PUSHORT Register);
2662
2664BOOLEAN
2665NTAPI
2667 _In_ PVOID HwDeviceExtension);
2668
2670BOOLEAN
2671NTAPI
2673 _In_ PVOID HwDeviceExtension,
2676 _In_ ULONG Type,
2679
2681BOOLEAN
2682NTAPI
2684 _In_ PVOID HwDeviceExtension,
2687 _In_ ULONG Type,
2690
2692BOOLEAN
2693NTAPI
2695 _In_ PVOID HwDeviceExtension);
2696
2698BOOLEAN
2699NTAPI
2701 _In_ PVOID HwDeviceExtension,
2704 _In_ UCHAR Lun);
2705
2707ULONG
2708NTAPI
2710 _In_ PVOID DeviceExtension,
2711 _In_ ULONG BusDataType,
2712 _In_ ULONG SystemIoBusNumber,
2716 _In_ ULONG Length);
2717
2719BOOLEAN
2720NTAPI
2722 _In_ PVOID HwDeviceExtension,
2725 _In_ UCHAR Lun,
2726 _In_ ULONG Depth);
2727
2729VOID
2730NTAPI
2732 _In_ ULONG Delay);
2733
2735VOID
2736NTAPI
2738 _In_ PVOID HwDeviceExtension,
2739 _In_ PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine,
2741
2743BOOLEAN
2744NTAPI
2746 _In_ PVOID HwDeviceExtension,
2748 _In_ ULONG SystemIoBusNumber,
2749 _In_ STOR_PHYSICAL_ADDRESS IoAddress,
2751 _In_ BOOLEAN InIoSpace);
2752
2754VOID
2755NTAPI
2757 _In_ PVOID HwDeviceExtension,
2760 _In_ ULONG Count);
2761
2763VOID
2764NTAPI
2766 _In_ PVOID HwDeviceExtension,
2769 _In_ ULONG Count);
2770
2772VOID
2773NTAPI
2775 _In_ PVOID HwDeviceExtension,
2778 _In_ ULONG Count);
2779
2781VOID
2782NTAPI
2784 _In_ PVOID HwDeviceExtension,
2786 _In_ UCHAR Value);
2787
2789VOID
2790NTAPI
2792 _In_ PVOID HwDeviceExtension,
2794 _In_ ULONG Value);
2795
2797VOID
2798NTAPI
2800 _In_ PVOID HwDeviceExtension,
2802 _In_ USHORT Value);
2803
2805VOID
2806NTAPI
2808 _In_ PVOID HwDeviceExtension,
2809 _In_ PUCHAR Register,
2811 _In_ ULONG Count);
2812
2814VOID
2815NTAPI
2817 _In_ PVOID HwDeviceExtension,
2818 _In_ PULONG Register,
2820 _In_ ULONG Count);
2821
2823VOID
2824NTAPI
2826 _In_ PVOID HwDeviceExtension,
2827 _In_ PUSHORT Register,
2829 _In_ ULONG Count);
2830
2832VOID
2833NTAPI
2835 _In_ PVOID HwDeviceExtension,
2836 _In_ PUCHAR Register,
2837 _In_ UCHAR Value);
2838
2840VOID
2841NTAPI
2843 _In_ PVOID HwDeviceExtension,
2844 _In_ PULONG Register,
2845 _In_ ULONG Value);
2846
2848VOID
2849NTAPI
2851 _In_ PVOID HwDeviceExtension,
2852 _In_ PUSHORT Register,
2853 _In_ USHORT Value);
2854
2855
2857BOOLEAN
2859 _In_ PVOID DeviceExtension,
2860 _In_ PHW_PASSIVE_INITIALIZE_ROUTINE HwPassiveInitializeRoutine)
2861{
2862 LONG Succ;
2863 Succ = FALSE;
2865 DeviceExtension,
2866 HwPassiveInitializeRoutine,
2867 &Succ);
2868 return (BOOLEAN)Succ;
2869}
2870
2872VOID
2874 _In_ PVOID DeviceExtension,
2876 _In_ PHW_DPC_ROUTINE HwDpcRoutine)
2877{
2879 DeviceExtension,
2880 Dpc,
2881 HwDpcRoutine);
2882}
2883
2885BOOLEAN
2887 _In_ PVOID DeviceExtension,
2891{
2892 LONG Succ;
2893 Succ = FALSE;
2895 DeviceExtension,
2896 Dpc,
2899 &Succ);
2900 return (BOOLEAN)Succ;
2901}
2902
2904VOID
2906 _In_ PVOID DeviceExtension,
2908 _In_ PVOID LockContext,
2910{
2912 DeviceExtension,
2913 SpinLock,
2914 LockContext,
2915 LockHandle);
2916}
2917
2919VOID
2921 _In_ PVOID DeviceExtension,
2923{
2925 DeviceExtension,
2926 LockHandle);
2927}
2928
2930ULONG
2932 _In_ STORPORT_FUNCTION_CODE FunctionCode,
2933 _In_ PVOID HwDeviceExtension,
2934 ...);
2935
2937ULONG
2939 _In_ PVOID HwDeviceExtension,
2941 _In_ ULONG Tag,
2942 _Out_ PVOID *BufferPointer
2943 )
2944{
2946 HwDeviceExtension,
2948 Tag,
2949 BufferPointer);
2950}
2951
2953ULONG
2955 _In_ PVOID HwDeviceExtension,
2956 _In_ PVOID BufferPointer)
2957{
2959 HwDeviceExtension,
2960 BufferPointer);
2961}
2962
2964ULONG
2966 _In_ PVOID HwDeviceExtension,
2967 _In_ PVOID BufferPointer,
2969 _Out_ PVOID *Mdl)
2970{
2972 HwDeviceExtension,
2973 BufferPointer,
2975 Mdl);
2976}
2977
2979ULONG
2981 _In_ PVOID HwDeviceExtension,
2982 _In_ PVOID Mdl)
2983{
2985 HwDeviceExtension,
2986 Mdl);
2987}
2988
2990ULONG
2992 _In_ PVOID HwDeviceExtension,
2994{
2996 HwDeviceExtension,
2997 Mdl);
2998}
2999
3001ULONG
3003 _In_ PVOID HwDeviceExtension,
3005 _Out_ PVOID *SystemAddress)
3006{
3008 HwDeviceExtension,
3009 Srb,
3010 SystemAddress);
3011}
3012
3014ULONG
3016 _In_ PVOID HwDeviceExtension,
3018 _Out_ PVOID *Mdl)
3019{
3021 HwDeviceExtension,
3022 Srb,
3023 Mdl);
3024}
3025
3027ULONG
3029 _In_ PVOID HwDeviceExtension,
3030 _In_ PVOID Irp)
3031{
3033 HwDeviceExtension,
3034 Irp);
3035}
3036
3038ULONG
3040 _In_ PVOID HwDeviceExtension,
3041 _Out_ PVOID *AdapterDeviceObject,
3044{
3046 HwDeviceExtension,
3047 AdapterDeviceObject,
3050}
3051
3053ULONG
3055 _In_ PVOID HwDeviceExtension,
3056 _In_ PVOID Mdl,
3057 _In_ PVOID CurrentVa,
3062 _Inout_ PVOID ScatterGatherBuffer,
3063 _In_ ULONG ScatterGatherBufferLength)
3064{
3066 HwDeviceExtension,
3067 Mdl,
3068 CurrentVa,
3069 Length,
3071 Context,
3073 ScatterGatherBuffer,
3074 ScatterGatherBufferLength);
3075}
3076
3078ULONG
3080 _In_ PVOID HwDeviceExtension,
3081 _In_ PSTOR_SCATTER_GATHER_LIST ScatterGatherList,
3083{
3085 HwDeviceExtension,
3086 ScatterGatherList,
3088}
3089
3091ULONG
3093 _In_ PVOID HwDeviceExtension,
3094 _In_ ULONG MessageId,
3096{
3098 HwDeviceExtension,
3099 MessageId,
3100 OldIrql);
3101}
3102
3104ULONG
3106 _In_ PVOID HwDeviceExtension,
3107 _In_ ULONG MessageId,
3109{
3111 HwDeviceExtension,
3112 MessageId,
3113 OldIrql);
3114}
3115
3117ULONG
3119 _In_ PVOID HwDeviceExtension,
3120 _In_ ULONG MessageId,
3122{
3124 HwDeviceExtension,
3125 MessageId,
3126 InterruptInfo);
3127}
3128
3130ULONG
3132 _In_ PVOID HwDeviceExtension,
3134 _Inout_ PPERF_CONFIGURATION_DATA PerfConfigData)
3135{
3137 HwDeviceExtension,
3138 Query,
3139 PerfConfigData);
3140}
3141
3143ULONG
3145 _In_ PVOID HwDeviceExtension,
3147 _Inout_ PSTARTIO_PERFORMANCE_PARAMETERS StartIoPerfParams)
3148{
3150 HwDeviceExtension,
3151 Srb,
3152 StartIoPerfParams);
3153}
3154
3156ULONG
3158 _In_ PVOID HwDeviceExtension,
3161{
3163 HwDeviceExtension,
3164 LogDetails,
3165 MaximumSize);
3166}
3167
3168#if DBG
3169#define DebugPrint(x) StorPortDebugPrint x
3170#else
3171#define DebugPrint(x)
3172#endif
3173
3174#ifdef __cplusplus
3175}
3176#endif
3177
3178#endif /* _NTSTORPORT_ */
#define SaveState(State)
unsigned char BOOLEAN
Type
Definition: Type.h:7
#define __cdecl
Definition: accygwin.h:79
#define VOID
Definition: acefi.h:82
#define WriteBuffer(BaseIoAddress, Buffer, Count)
Definition: atapi.h:344
#define ReadBuffer(BaseIoAddress, Buffer, Count)
Definition: atapi.h:339
BOOL Query(LPCTSTR *ServiceArgs, DWORD ArgCount, BOOL bExtended)
Definition: query.c:292
@ Reserved2
Definition: bcd.h:202
@ Reserved1
Definition: bcd.h:201
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1157
_In_ PSCSI_REQUEST_BLOCK Srb
Definition: cdrom.h:989
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
Definition: cdrom.h:992
Definition: bufpool.h:45
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
Definition: classpnp.h:1315
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
Definition: classpnp.h:1313
_In_z_ PCCHAR _In_ PDEVICE_OBJECT LowerDeviceObject
Definition: classpnp.h:983
_In_ PVOID Argument2
Definition: classpnp.h:721
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
Definition: classpnp.h:1314
_In_ PIRP Irp
Definition: csq.h:116
#define FALSE
Definition: types.h:117
VOID(NTAPI * PHW_DMA_STARTED)(IN PVOID DeviceExtension)
Definition: srb.h:462
_SCSI_ADAPTER_CONTROL_TYPE
Definition: srb.h:176
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
_SCSI_ADAPTER_CONTROL_STATUS
Definition: srb.h:190
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
BOOLEAN(NTAPI * PHW_STARTIO)(IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
Definition: srb.h:443
BOOLEAN(NTAPI * PHW_ADAPTER_STATE)(IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState)
Definition: srb.h:486
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
Definition: srb.h:479
SCSI_ADAPTER_CONTROL_STATUS(NTAPI * PHW_ADAPTER_CONTROL)(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
Definition: srb.h:494
_SCSI_NOTIFICATION_TYPE
Definition: srb.h:530
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)
Definition: srb.h:468
BOOLEAN(NTAPI * PHW_INITIALIZE)(IN PVOID DeviceExtension)
Definition: srb.h:437
UCHAR KIRQL
Definition: env_spec_w32.h:591
_Must_inspect_result_ __in_opt PWDF_OBJECT_ATTRIBUTES __in PVOID __in __out WDFMEMORY * PMemory
CPPORT Port[4]
Definition: headless.c:35
enum _INTERFACE_TYPE INTERFACE_TYPE
#define Unused(x)
Definition: atlwin.h:28
UNICODE_STRING Global
Definition: symlink.c:37
unsigned __int64 ULONG64
Definition: imports.h:198
#define _In_reads_bytes_(size)
Definition: ms_sal.h:321
#define _Inout_
Definition: ms_sal.h:378
#define _Out_writes_bytes_(size)
Definition: ms_sal.h:350
#define _Out_
Definition: ms_sal.h:345
#define _When_(expr, annos)
Definition: ms_sal.h:254
#define _In_
Definition: ms_sal.h:308
#define _In_opt_
Definition: ms_sal.h:309
_In_ NDIS_ERROR_CODE ErrorCode
Definition: ndis.h:4436
_In_ ACCESS_MASK _In_opt_ POBJECT_ATTRIBUTES _In_opt_ PLARGE_INTEGER MaximumSize
Definition: mmfuncs.h:362
int Count
Definition: noreturn.cpp:7
#define _ANONYMOUS_UNION
Definition: ntbasedef.h:30
#define _ANONYMOUS_STRUCT
Definition: ntbasedef.h:56
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
#define BOOLEAN
Definition: pedump.c:73
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
static WCHAR Address[46]
Definition: ping.c:68
enum _KINTERRUPT_MODE KINTERRUPT_MODE
enum _DMA_SPEED DMA_SPEED
enum _DMA_WIDTH DMA_WIDTH
_VPD_ASSOCIATION
Definition: scsi.h:2446
_VPD_IDENTIFIER_TYPE
Definition: scsi.h:2454
_VPD_CODE_SET
Definition: scsi.h:2439
_STOR_POWER_ACTION
Definition: srb.h:355
enum _STOR_PNP_ACTION STOR_PNP_ACTION
_STOR_PNP_ACTION
Definition: srb.h:390
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
Definition: srb.h:898
enum _STOR_DEVICE_POWER_STATE STOR_DEVICE_POWER_STATE
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
Definition: srb.h:897
enum _STOR_POWER_ACTION STOR_POWER_ACTION
_STOR_DEVICE_POWER_STATE
Definition: srb.h:346
VOID(NTAPI * PHW_DMA_STARTED)(_In_ PVOID DeviceExtension)
Definition: storport.h:2174
STORPORT_API BOOLEAN NTAPI StorPortSetDeviceQueueDepth(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG Depth)
Definition: storport.c:1398
FORCEINLINE VOID StorPortReleaseSpinLock(_In_ PVOID DeviceExtension, _Inout_ PSTOR_LOCK_HANDLE LockHandle)
Definition: storport.h:2920
BOOLEAN(NTAPI * PHW_BUILDIO)(_In_ PVOID DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
Definition: storport.h:2152
union _TWO_BYTE TWO_BYTE
@ StorPowerActionWarmEject
Definition: storport.h:506
@ StorPowerActionShutdown
Definition: storport.h:503
@ StorPowerActionReserved
Definition: storport.h:500
@ StorPowerActionNone
Definition: storport.h:499
@ StorPowerActionShutdownReset
Definition: storport.h:504
@ StorPowerActionSleep
Definition: storport.h:501
@ StorPowerActionHibernate
Definition: storport.h:502
@ StorPowerActionShutdownOff
Definition: storport.h:505
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)
Definition: storport.h:2245
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)
Definition: storport.h:3105
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)
Definition: storport.h:3002
STORPORT_API UCHAR NTAPI StorPortReadPortUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port)
Definition: stubs.c:60
STORPORT_API VOID NTAPI StorPortWritePortUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port, _In_ ULONG Value)
Definition: stubs.c:216
FORCEINLINE ULONG StorPortAllocateMdl(_In_ PVOID HwDeviceExtension, _In_ PVOID BufferPointer, _In_ ULONG NumberOfBytes, _Out_ PVOID *Mdl)
Definition: storport.h:2965
enum _STOR_PNP_ACTION * PSTOR_PNP_ACTION
@ ScsiRestartAdapter
Definition: storport.h:449
@ ScsiQuerySupportedControlTypes
Definition: storport.h:447
@ ScsiAdapterControlMax
Definition: storport.h:452
@ ScsiSetBootConfig
Definition: storport.h:450
@ ScsiStopAdapter
Definition: storport.h:448
@ MakeAdapterControlTypeSizeOfUlong
Definition: storport.h:453
@ ScsiSetRunningConfig
Definition: storport.h:451
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)
Definition: storport.h:2158
STORPORT_API VOID NTAPI StorPortReadPortBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Port, _In_ PUSHORT Buffer, _In_ ULONG Count)
Definition: stubs.c:47
_GETSGSTATUS
Definition: storport.h:591
@ SG_BUFFER_TOO_SMALL
Definition: storport.h:593
@ SG_ALLOCATED
Definition: storport.h:592
STORPORT_API UCHAR NTAPI StorPortReadRegisterUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register)
Definition: stubs.c:132
struct _STOR_LOG_EVENT_DETAILS * PSTOR_LOG_EVENT_DETAILS
STORPORT_API VOID NTAPI StorPortWritePortUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Port, _In_ USHORT Value)
Definition: stubs.c:228
FORCEINLINE ULONG StorPortGetMSIInfo(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _Out_ PMESSAGE_INTERRUPT_INFORMATION InterruptInfo)
Definition: storport.h:3118
STORPORT_API BOOLEAN NTAPI StorPortBusy(_In_ PVOID HwDeviceExtension, _In_ ULONG RequestsToComplete)
Definition: storport.c:488
struct _VPD_IDENTIFICATION_PAGE VPD_IDENTIFICATION_PAGE
FORCEINLINE ULONG StorPortGetStartIoPerfParams(_In_ PVOID HwDeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Inout_ PSTARTIO_PERFORMANCE_PARAMETERS StartIoPerfParams)
Definition: storport.h:3144
PVOID(NTAPI * PStorPortAllocatePool)(_In_ ULONG NumberOfBytes, _In_ ULONG Tag, _In_ PVOID HwDeviceExtension, _Out_ PVOID *PMdl)
Definition: storport.h:2272
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)
Definition: storport.h:2886
@ StorRemoveDevice
Definition: storport.h:512
@ StorQueryCapabilities
Definition: storport.h:514
@ StorQueryResourceRequirements
Definition: storport.h:515
@ StorFilterResourceRequirements
Definition: storport.h:516
@ StorStopDevice
Definition: storport.h:513
@ StorStartDevice
Definition: storport.h:511
@ StorSurpriseRemoval
Definition: storport.h:517
FORCEINLINE ULONG StorPortAllocatePool(_In_ PVOID HwDeviceExtension, _In_ ULONG NumberOfBytes, _In_ ULONG Tag, _Out_ PVOID *BufferPointer)
Definition: storport.h:2938
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)
Definition: storport.c:1304
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)
Definition: storport.c:573
struct _LUN_LIST LUN_LIST
FORCEINLINE ULONG StorPortCompleteServiceIrp(_In_ PVOID HwDeviceExtension, _In_ PVOID Irp)
Definition: storport.h:3028
struct _PERF_CONFIGURATION_DATA PERF_CONFIGURATION_DATA
_STORPORT_FUNCTION_CODE
Definition: storport.h:551
@ ExtFunctionFreeContiguousMemorySpecifyCache
Definition: storport.h:578
@ ExtFunctionGetGroupAffinity
Definition: storport.h:572
@ ExtFunctionGetNodeAffinity
Definition: storport.h:574
@ ExtFunctionCompleteServiceIrp
Definition: storport.h:559
@ ExtFunctionAllocateMdl
Definition: storport.h:554
@ ExtFunctionAllocateContiguousMemorySpecifyCacheNode
Definition: storport.h:577
@ ExtFunctionGetOriginalMdl
Definition: storport.h:558
@ ExtFunctionFreePool
Definition: storport.h:553
@ ExtFunctionGetDeviceObjects
Definition: storport.h:560
@ ExtFunctionAcquireMSISpinLock
Definition: storport.h:563
@ ExtFunctionInitializePerformanceOptimizations
Definition: storport.h:566
@ ExtFunctionGetLogicalProcessorRelationship
Definition: storport.h:576
@ ExtFunctionGetMessageInterruptInformation
Definition: storport.h:565
@ ExtFunctionGetSystemAddress
Definition: storport.h:557
@ ExtFunctionGetStartIoPerformanceParameters
Definition: storport.h:567
@ ExtFunctionLogSystemEvent
Definition: storport.h:568
@ ExtFunctionBuildScatterGatherList
Definition: storport.h:561
@ ExtFunctionPutScatterGatherList
Definition: storport.h:562
@ ExtFunctionReleaseMSISpinLock
Definition: storport.h:564
@ ExtFunctionFreeMdl
Definition: storport.h:555
@ ExtFunctionGetActiveGroupCount
Definition: storport.h:571
@ ExtFunctionBuildMdlForNonPagedPool
Definition: storport.h:556
@ ExtFunctionGetCurrentProcessorNumber
Definition: storport.h:570
@ ExtFunctionGetHighestNodeNumber
Definition: storport.h:575
@ ExtFunctionAllocatePool
Definition: storport.h:552
@ ExtFunctionGetActiveNodeCount
Definition: storport.h:573
enum _STOR_EVENT_ASSOCIATION_ENUM STOR_EVENT_ASSOCIATION_ENUM
union _CDB CDB
FORCEINLINE ULONG StorPortGetDeviceObjects(_In_ PVOID HwDeviceExtension, _Out_ PVOID *AdapterDeviceObject, _Out_ PVOID *PhysicalDeviceObject, _Out_ PVOID *LowerDeviceObject)
Definition: storport.h:3039
@ ScsiAdapterControlSuccess
Definition: storport.h:458
@ ScsiAdapterControlUnsuccessful
Definition: storport.h:459
struct _STOR_LOCK_HANDLE STOR_LOCK_HANDLE
struct _HW_INITIALIZATION_DATA * PHW_INITIALIZATION_DATA
_STOR_SYNCHRONIZATION_MODEL
Definition: storport.h:425
@ StorSynchronizeFullDuplex
Definition: storport.h:427
@ StorSynchronizeHalfDuplex
Definition: storport.h:426
@ VpdAssocPort
Definition: storport.h:531
@ VpdAssocTarget
Definition: storport.h:532
@ VpdAssocReserved1
Definition: storport.h:533
@ VpdAssocDevice
Definition: storport.h:530
@ VpdAssocReserved2
Definition: storport.h:534
STORPORT_API PVOID NTAPI StorPortGetLogicalUnit(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
Definition: storport.c:773
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)
Definition: stubs.c:143
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
BOOLEAN(NTAPI * PStorPortGetMessageInterruptInformation)(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _Out_ PMESSAGE_INTERRUPT_INFORMATION InterruptInfo)
Definition: storport.h:2238
FORCEINLINE ULONG StorPortBuildMdlForNonPagedPool(_In_ PVOID HwDeviceExtension, _Inout_ PVOID Mdl)
Definition: storport.h:2991
STORPORT_API VOID NTAPI StorPortReadPortBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port, _In_ PULONG Buffer, _In_ ULONG Count)
Definition: stubs.c:34
_STOR_EVENT_ASSOCIATION_ENUM
Definition: storport.h:583
@ StorEventTargetAssociation
Definition: storport.h:586
@ StorEventInvalidAssociation
Definition: storport.h:587
@ StorEventAdapterAssociation
Definition: storport.h:584
@ StorEventLunAssociation
Definition: storport.h:585
STORPORT_API VOID NTAPI StorPortWriteRegisterUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register, _In_ ULONG Value)
Definition: stubs.c:291
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)
Definition: storport.c:1079
FORCEINLINE VOID StorPortAcquireSpinLock(_In_ PVOID DeviceExtension, _In_ STOR_SPINLOCK SpinLock, _In_ PVOID LockContext, _Inout_ PSTOR_LOCK_HANDLE LockHandle)
Definition: storport.h:2905
STORPORT_API VOID NTAPI StorPortSynchronizeAccess(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, _In_opt_ PVOID Context)
Definition: storport.c:1430
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)
Definition: storport.c:657
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
_STOR_SPINLOCK
Definition: storport.h:439
@ StartIoLock
Definition: storport.h:441
@ InterruptLock
Definition: storport.h:442
@ DpcLock
Definition: storport.h:440
struct _MEMORY_REGION * PMEMORY_REGION
struct _MODE_PARAMETER_HEADER10 MODE_PARAMETER_HEADER10
struct _DPC_BUFFER DPC_BUFFER
enum _STORPORT_FUNCTION_CODE STORPORT_FUNCTION_CODE
_STOR_DMA_WIDTH
Definition: storport.h:431
@ Dma64BitScatterGather
Definition: storport.h:434
@ DmaUnknown
Definition: storport.h:432
@ Dma32Bit
Definition: storport.h:433
@ Dma64Bit
Definition: storport.h:435
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)
Definition: stubs.c:303
struct _STORPORT_EXTENDED_FUNCTIONS STORPORT_EXTENDED_FUNCTIONS
struct _SCSI_POWER_REQUEST_BLOCK * PSCSI_POWER_REQUEST_BLOCK
VOID(NTAPI * PHW_TIMER)(_In_ PVOID DeviceExtension)
Definition: storport.h:2169
STORPORT_API VOID NTAPI StorPortWritePortBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Port, _In_ PUSHORT Buffer, _In_ ULONG Count)
Definition: stubs.c:191
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)
Definition: storport.h:3131
BOOLEAN(NTAPI * PHW_INTERRUPT)(_In_ PVOID DeviceExtension)
Definition: storport.h:2164
STORPORT_API VOID NTAPI StorPortFreeRegistryBuffer(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Buffer)
Definition: storport.c:642
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)
Definition: storport.c:1446
STORPORT_API PSTOR_SCATTER_GATHER_LIST NTAPI StorPortGetScatterGatherList(_In_ PVOID DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
Definition: storport.c:846
STORPORT_API VOID NTAPI StorPortReadRegisterBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register, _In_ PUCHAR Buffer, _In_ ULONG Count)
Definition: stubs.c:93
STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortGetPhysicalAddress(_In_ PVOID HwDeviceExtension, _In_opt_ PSCSI_REQUEST_BLOCK Srb, _In_ PVOID VirtualAddress, _Out_ ULONG *Length)
Definition: storport.c:791
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)
Definition: storport.c:1284
FORCEINLINE BOOLEAN StorPortEnablePassiveInitialization(_In_ PVOID DeviceExtension, _In_ PHW_PASSIVE_INITIALIZE_ROUTINE HwPassiveInitializeRoutine)
Definition: storport.h:2858
STORPORT_API ULONG NTAPI StorPortReadPortUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port)
Definition: stubs.c:71
FORCEINLINE ULONG StorPortFreeMdl(_In_ PVOID HwDeviceExtension, _In_ PVOID Mdl)
Definition: storport.h:2980
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)
Definition: storport.c:1231
STORPORT_API VOID NTAPI StorPortWritePortUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ UCHAR Value)
Definition: stubs.c:204
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)
Definition: storport.h:2230
BOOLEAN(NTAPI * PHW_ADAPTER_STATE)(IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState)
Definition: storport.h:2195
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)
Definition: storport.h:3054
STORPORT_API PUCHAR NTAPI StorPortAllocateRegistryBuffer(_In_ PVOID HwDeviceExtension, _In_ PULONG Length)
Definition: storport.c:472
STOR_SYNCHRONIZED_ACCESS * PSTOR_SYNCHRONIZED_ACCESS
Definition: storport.h:2226
enum _STOR_SPINLOCK STOR_SPINLOCK
BOOLEAN(* PHW_PASSIVE_INITIALIZE_ROUTINE)(_In_ PVOID DeviceExtension)
Definition: storport.h:2209
STORPORT_API VOID NTAPI StorPortReadPortBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ PUCHAR Buffer, _In_ ULONG Count)
Definition: stubs.c:21
STORPORT_API BOOLEAN NTAPI StorPortReady(_In_ PVOID HwDeviceExtension)
Definition: storport.c:1269
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
Definition: storport.h:2189
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,...)
Definition: storport.c:609
struct _READ_CAPACITY_DATA_EX * PREAD_CAPACITY_DATA_EX
FORCEINLINE ULONG StorPortLogSystemEvent(_In_ PVOID HwDeviceExtension, _Inout_ PSTOR_LOG_EVENT_DETAILS LogDetails, _Inout_ PULONG MaximumSize)
Definition: storport.h:3157
BOOLEAN(NTAPI * PHW_INITIALIZE)(_In_ PVOID DeviceExtension)
Definition: storport.h:2147
STORPORT_API VOID NTAPI StorPortWritePortBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ PUCHAR Buffer, _In_ ULONG Count)
Definition: stubs.c:165
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)
Definition: storport.c:504
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)
Definition: storport.c:1357
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)
Definition: storport.c:701
VOID(* PHW_DPC_ROUTINE)(_In_ PSTOR_DPC Dpc, _In_ PVOID HwDeviceExtension, _In_ PVOID SystemArgument1, _In_ PVOID SystemArgument2)
Definition: storport.h:2214
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)
Definition: stubs.c:82
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)
Definition: storport.c:592
enum _STOR_POWER_ACTION * PSTOR_POWER_ACTION
STORPORT_API VOID NTAPI StorPortReadRegisterBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register, _In_ PULONG Buffer, _In_ ULONG Count)
Definition: stubs.c:106
STORPORT_API BOOLEAN NTAPI StorPortPause(_In_ PVOID HwDeviceExtension, _In_ ULONG TimeOut)
Definition: storport.c:1215
enum _STOR_POWER_ACTION STOR_POWER_ACTION
STORPORT_API PVOID NTAPI StorPortGetVirtualAddress(_In_ PVOID HwDeviceExtension, _In_ STOR_PHYSICAL_ADDRESS PhysicalAddress)
Definition: storport.c:932
FORCEINLINE ULONG StorPortGetOriginalMdl(_In_ PVOID HwDeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Out_ PVOID *Mdl)
Definition: storport.h:3015
STORPORT_API VOID NTAPI StorPortWritePortBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port, _In_ PULONG Buffer, _In_ ULONG Count)
Definition: stubs.c:178
STORPORT_API VOID NTAPI StorPortWriteRegisterUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register, _In_ UCHAR Value)
Definition: stubs.c:279
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)
Definition: storport.c:862
SCSI_ADAPTER_CONTROL_STATUS(NTAPI * PHW_ADAPTER_CONTROL)(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
Definition: storport.h:2202
@ VpdIdentifierTypeSCSINameString
Definition: storport.h:547
@ VpdIdentifierTypeVendorId
Definition: storport.h:540
@ VpdIdentifierTypeMD5LogicalUnitId
Definition: storport.h:546
@ VpdIdentifierTypeTargetPortGroup
Definition: storport.h:544
@ VpdIdentifierTypeLogicalUnitGroup
Definition: storport.h:545
@ VpdIdentifierTypeFCPHName
Definition: storport.h:542
@ VpdIdentifierTypePortRelative
Definition: storport.h:543
@ VpdIdentifierTypeEUI64
Definition: storport.h:541
@ VpdIdentifierTypeVendorSpecific
Definition: storport.h:539
STORPORT_API USHORT NTAPI StorPortReadRegisterUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register)
Definition: stubs.c:154
STORPORT_API VOID NTAPI StorPortStallExecution(_In_ ULONG Delay)
Definition: storport.c:1417
STORPORT_API VOID NTAPI StorPortReadRegisterBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register, _In_ PUSHORT Buffer, _In_ ULONG Count)
Definition: stubs.c:119
enum _VPD_ASSOCIATION * PVPD_ASSOCIATION
FORCEINLINE ULONG StorPortPutScatterGatherList(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SCATTER_GATHER_LIST ScatterGatherList, _In_ BOOLEAN WriteToDevice)
Definition: storport.h:3079
STORPORT_API BOOLEAN NTAPI StorPortResume(_In_ PVOID HwDeviceExtension)
Definition: storport.c:1324
STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register, _In_ PUSHORT Buffer, _In_ ULONG Count)
Definition: stubs.c:266
struct _INQUIRYDATA INQUIRYDATA
enum _SCSI_ADAPTER_CONTROL_TYPE * PSCSI_ADAPTER_CONTROL_TYPE
struct _PERF_CONFIGURATION_DATA * PPERF_CONFIGURATION_DATA
PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS
Definition: storport.h:1973
enum _STORPORT_FUNCTION_CODE * PSTORPORT_FUNCTION_CODE
union _CDB * PCDB
struct _MODE_PARAMETER_BLOCK * PMODE_PARAMETER_BLOCK
enum _VPD_CODE_SET * PVPD_CODE_SET
_In_ PVOID Context
Definition: storport.h:2224
STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register, _In_ PULONG Buffer, _In_ ULONG Count)
Definition: stubs.c:253
STORPORT_API VOID NTAPI StorPortFreeDeviceBase(_In_ PVOID HwDeviceExtension, _In_ PVOID MappedAddress)
Definition: storport.c:627
STORPORT_API BOOLEAN NTAPI StorPortResumeDevice(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
Definition: storport.c:1339
@ InitializeDpc
Definition: storport.h:481
@ AcquireSpinLock
Definition: storport.h:483
@ ResetDetected
Definition: storport.h:467
@ _obsolete2
Definition: storport.h:469
@ WMIEvent
Definition: storport.h:472
@ QueryTickCount
Definition: storport.h:476
@ _obsolete1
Definition: storport.h:468
@ RequestTimerCall
Definition: storport.h:470
@ IssueDpc
Definition: storport.h:482
@ RequestComplete
Definition: storport.h:464
@ ReleaseSpinLock
Definition: storport.h:484
@ BufferOverrunDetected
Definition: storport.h:477
@ WMIReregister
Definition: storport.h:473
@ LinkUp
Definition: storport.h:474
@ NextRequest
Definition: storport.h:465
@ BusChangeDetected
Definition: storport.h:471
@ NextLuRequest
Definition: storport.h:466
@ TraceNotification
Definition: storport.h:478
@ LinkDown
Definition: storport.h:475
@ GetExtendedFunctionTable
Definition: storport.h:479
@ EnablePassiveInitialization
Definition: storport.h:480
FORCEINLINE ULONG StorPortAcquireMSISpinLock(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _In_ PULONG OldIrql)
Definition: storport.h:3092
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)
Definition: storport.h:2252
enum _VPD_ASSOCIATION VPD_ASSOCIATION
FORCEINLINE VOID StorPortInitializeDpc(_In_ PVOID DeviceExtension, _Out_ PSTOR_DPC Dpc, _In_ PHW_DPC_ROUTINE HwDpcRoutine)
Definition: storport.h:2873
struct _STARTIO_PERFORMANCE_PARAMETERS * PSTARTIO_PERFORMANCE_PARAMETERS
struct _MODE_PARAMETER_BLOCK MODE_PARAMETER_BLOCK
FORCEINLINE ULONG StorPortFreePool(_In_ PVOID HwDeviceExtension, _In_ PVOID BufferPointer)
Definition: storport.h:2954
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)
Definition: storport.c:1056
struct _MODE_PARAMETER_HEADER * PMODE_PARAMETER_HEADER
STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Register, _In_ PUCHAR Buffer, _In_ ULONG Count)
Definition: stubs.c:240
struct _VPD_IDENTIFICATION_DESCRIPTOR VPD_IDENTIFICATION_DESCRIPTOR
VOID(NTAPI * PStorPortFreePool)(_In_ PVOID PMemory, _In_ PVOID HwDeviceExtension, _In_opt_ PVOID PMdl)
Definition: storport.h:2265
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)
Definition: storport.h:2179
PVOID(NTAPI * PStorPortGetSystemAddress)(_In_ PSCSI_REQUEST_BLOCK Srb)
Definition: storport.h:2280
struct _STOR_DPC * PSTOR_DPC
@ VpdCodeSetBinary
Definition: storport.h:523
@ VpdCodeSetReserved
Definition: storport.h:522
@ VpdCodeSetAscii
Definition: storport.h:524
@ VpdCodeSetUTF8
Definition: storport.h:525
struct _ACCESS_RANGE * PACCESS_RANGE
STORPORT_API PVOID NTAPI StorPortGetUncachedExtension(_In_ PVOID HwDeviceExtension, _In_ PPORT_CONFIGURATION_INFORMATION ConfigInfo, _In_ ULONG NumberOfBytes)
Definition: storport.c:880
enum _VPD_IDENTIFIER_TYPE * PVPD_IDENTIFIER_TYPE
#define STORPORT_API
Definition: storport.h:33
STORPORT_API VOID __cdecl StorPortNotification(_In_ SCSI_NOTIFICATION_TYPE NotificationType, _In_ PVOID HwDeviceExtension,...)
Definition: storport.c:1093
struct _MEMORY_REGION MEMORY_REGION
@ StorPowerDeviceMaximum
Definition: storport.h:494
@ StorPowerDeviceD3
Definition: storport.h:493
@ StorPowerDeviceD2
Definition: storport.h:492
@ StorPowerDeviceUnspecified
Definition: storport.h:489
@ StorPowerDeviceD1
Definition: storport.h:491
@ StorPowerDeviceD0
Definition: storport.h:490
struct _ACCESS_RANGE ACCESS_RANGE
BOOLEAN(STREAMAPI * PHW_INTERRUPT)(IN PVOID DeviceExtension)
Definition: strmini.h:311
ULONG RangeLength
Definition: srb.h:42
BOOLEAN RangeInMemory
Definition: srb.h:43
STOR_PHYSICAL_ADDRESS RangeStart
Definition: storport.h:1977
UCHAR Reserved2[6]
Definition: cdrw_hw.h:645
UCHAR OperationCode
Definition: cdrw_hw.h:634