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) 721 #include <pshpack1.h> 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
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
1772 #include <poppack.h> 1774 #if (NTDDI_VERSION < NTDDI_WINXP) 1785 UCHAR ReservedBit:1;
1804 #include <pshpack1.h> 1850 #include <poppack.h> 1905 #include <pshpack1.h> 1947 #if !defined(__midl) 1971 #include <poppack.h> 2221 (
NTAPI STOR_SYNCHRONIZED_ACCESS)(
2326 #define REVERSE_BYTES_QUAD(Destination, Source) { \ 2327 PEIGHT_BYTE d = (PEIGHT_BYTE)(Destination); \ 2328 PEIGHT_BYTE s = (PEIGHT_BYTE)(Source); \ 2329 d->Byte7 = s->Byte0; \ 2330 d->Byte6 = s->Byte1; \ 2331 d->Byte5 = s->Byte2; \ 2332 d->Byte4 = s->Byte3; \ 2333 d->Byte3 = s->Byte4; \ 2334 d->Byte2 = s->Byte5; \ 2335 d->Byte1 = s->Byte6; \ 2336 d->Byte0 = s->Byte7; \ 2339 #define REVERSE_BYTES(Destination, Source) { \ 2340 PFOUR_BYTE d = (PFOUR_BYTE)(Destination); \ 2341 PFOUR_BYTE s = (PFOUR_BYTE)(Source); \ 2342 d->Byte3 = s->Byte0; \ 2343 d->Byte2 = s->Byte1; \ 2344 d->Byte1 = s->Byte2; \ 2345 d->Byte0 = s->Byte3; \ 2348 #define REVERSE_BYTES_SHORT(Destination, Source) { \ 2349 PTWO_BYTE d = (PTWO_BYTE)(Destination); \ 2350 PTWO_BYTE s = (PTWO_BYTE)(Source); \ 2351 d->Byte1 = s->Byte0; \ 2352 d->Byte0 = s->Byte1; \ 2355 #define StorPortCopyMemory(Destination,Source,Length) memcpy((Destination),(Source),(Length)) 2398 _In_ PCCHAR DebugMessage,
2865 HwPassiveInitializeRoutine,
3046 AdapterDeviceObject,
3072 ScatterGatherBuffer,
3073 ScatterGatherBufferLength);
3168 #define DebugPrint(x) StorPortDebugPrint x 3170 #define DebugPrint(x)
UCHAR FieldReplaceableUnitCode
_ANONYMOUS_UNION union _CDB::_SET_CD_SPEED::@2130 DUMMYUNIONNAME
STORPORT_API ULONG NTAPI StorPortReadRegisterUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Register)
struct _SCSI_WMI_REQUEST_BLOCK SCSI_WMI_REQUEST_BLOCK
STORPORT_API BOOLEAN NTAPI StorPortDeviceReady(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
enum _GETSGSTATUS * PGETSGSTATUS
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
struct _CDB::_SEND_DVD_STRUCTURE * PSEND_DVD_STRUCTURE
PHW_ADAPTER_STATE HwAdapterState
struct _CDB::_POSITION_TO_ELEMENT * PPOSITION_TO_ELEMENT
struct _CDB::_READ_ELEMENT_STATUS READ_ELEMENT_STATUS
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)
struct _CDB::_MODE_SELECT10 MODE_SELECT10
_Must_inspect_result_ typedef _In_ PVOID Unused
_ANONYMOUS_UNION union _CDB::_PLAY_CD::@2127 DUMMYUNIONNAME
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION _In_ ULONG _In_ SIZE_T _In_ ULONG _In_ USHORT Depth
struct _CDB::_POSITION_TO_ELEMENT POSITION_TO_ELEMENT
STORPORT_API PVOID NTAPI StorPortGetLogicalUnit(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun)
struct _READ_CAPACITY_DATA_EX * PREAD_CAPACITY_DATA_EX
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
struct _CDB::_CDB6GENERIC * PCDB6GENERIC
STORPORT_API VOID NTAPI StorPortWritePortUlong(_In_ PVOID HwDeviceExtension, _In_ PULONG Port, _In_ ULONG Value)
STORPORT_API VOID NTAPI StorPortReadPortBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ PUCHAR Buffer, _In_ ULONG Count)
UCHAR CommandSpecificInformation[4]
PGROUP_AFFINITY MessageTargets
struct _PERF_CONFIGURATION_DATA * PPERF_CONFIGURATION_DATA
struct _CDB::_LOAD_UNLOAD LOAD_UNLOAD
struct _CDB::_READ_POSITION READ_POSITION
enum _STOR_PNP_ACTION * PSTOR_PNP_ACTION
_In_ NDIS_ERROR_CODE ErrorCode
UCHAR ProductRevisionLevel[4]
UCHAR LogicalBlockAddress[4]
_In_ ULONG _In_ ULONG _In_ ULONG Length
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
STORPORT_API PVOID NTAPI StorPortGetUncachedExtension(_In_ PVOID HwDeviceExtension, _In_ PPORT_CONFIGURATION_INFORMATION ConfigInfo, _In_ ULONG NumberOfBytes)
enum _INTERFACE_TYPE INTERFACE_TYPE
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
STOR_PNP_ACTION PnPAction
STOR_PHYSICAL_ADDRESS RangeStart
struct _STOR_LOG_EVENT_DETAILS STOR_LOG_EVENT_DETAILS
SCSI_ADAPTER_CONTROL_STATUS(NTAPI * PHW_ADAPTER_CONTROL)(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
STORPORT_API BOOLEAN NTAPI StorPortReady(_In_ PVOID HwDeviceExtension)
enum _SCSI_ADAPTER_CONTROL_STATUS SCSI_ADAPTER_CONTROL_STATUS
struct _CDB::_PERSISTENT_RESERVE_IN PERSISTENT_RESERVE_IN
UCHAR VerificationLength[3]
_IRQL_requires_same_ _In_opt_ PVOID Argument1
STORPORT_API UCHAR NTAPI StorPortReadPortUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port)
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_In_ PSCSI_REQUEST_BLOCK Srb
FORCEINLINE ULONG StorPortFreeMdl(_In_ PVOID HwDeviceExtension, _In_ PVOID Mdl)
struct _CDB::_NEC_READ_CDDA NEC_READ_CDDA
struct _STOR_SCATTER_GATHER_LIST STOR_SCATTER_GATHER_LIST
struct _MODE_PARAMETER_HEADER10 * PMODE_PARAMETER_HEADER10
struct _CDB::_MEDIA_REMOVAL MEDIA_REMOVAL
enum _SCSI_ADAPTER_CONTROL_STATUS * PSCSI_ADAPTER_CONTROL_STATUS
PStorPortAllocatePool AllocatePool
enum _STORPORT_FUNCTION_CODE STORPORT_FUNCTION_CODE
VOID(NTAPI * PStorPortPutScatterGatherList)(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SCATTER_GATHER_LIST ScatterGatherList, _In_ BOOLEAN WriteToDevice)
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)
FORCEINLINE ULONG StorPortLogSystemEvent(_In_ PVOID HwDeviceExtension, _Inout_ PSTOR_LOG_EVENT_DETAILS LogDetails, _Inout_ PULONG MaximumSize)
VOID(NTAPI * PStorPortFreePool)(_In_ PVOID PMemory, _In_ PVOID HwDeviceExtension, _In_opt_ PVOID PMdl)
struct _CDB::_READ_CD * PREAD_CD
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
STORPORT_API BOOLEAN NTAPI StorPortSetDeviceQueueDepth(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ ULONG Depth)
STORPORT_API VOID __cdecl StorPortDebugPrint(_In_ ULONG DebugPrintLevel, _In_ PCCHAR DebugMessage,...)
UCHAR NumberOfElements[2]
STORPORT_API VOID NTAPI StorPortCompleteRequest(_In_ PVOID HwDeviceExtension, _In_ UCHAR PathId, _In_ UCHAR TargetId, _In_ UCHAR Lun, _In_ UCHAR SrbStatus)
enum _STOR_POWER_ACTION STOR_POWER_ACTION
struct _CDB::_READ_BUFFER_CAPACITY * PREAD_BUFFER_CAPACITY
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
struct _VPD_IDENTIFICATION_PAGE * PVPD_IDENTIFICATION_PAGE
struct _CDB::_REPORT_KEY REPORT_KEY
struct _CDB::_ERASE ERASE
struct _CDB::_SEEK * PSEEK
UCHAR AllocationLength[4]
struct _CDB::_SEND_VOLUME_TAG * PSEND_VOLUME_TAG
struct _CDB::_READ_TRACK_INFORMATION READ_TRACK_INFORMATION
PStorPortPutScatterGatherList PutScatterGatherList
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
UCHAR StartingElementAddress[2]
struct _CDB::_GET_CONFIGURATION GET_CONFIGURATION
struct _CDB::_PERSISTENT_RESERVE_OUT * PPERSISTENT_RESERVE_OUT
UCHAR ParameterListLength[2]
struct _MODE_PARAMETER_HEADER MODE_PARAMETER_HEADER
FORCEINLINE ULONG StorPortAcquireMSISpinLock(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _In_ PULONG OldIrql)
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)
struct _ACCESS_RANGE ACCESS_RANGE
UCHAR TransportElementAddress[2]
ULONG HwInitializationDataSize
PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS
struct _CDB::_RESERVE_TRACK_RZONE * PRESERVE_TRACK_RZONE
#define ReadBuffer(BaseIoAddress, Buffer, Count)
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)
struct _CDB::_SYNCHRONIZE_CACHE10 SYNCHRONIZE_CACHE10
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
struct _CDB::_CDB6FORMAT CDB6FORMAT
struct _CDB::_READ12 READ12
UCHAR ParameterListLength[2]
struct _CDB::_READ_POSITION * PREAD_POSITION
STORPORT_API VOID NTAPI StorPortWriteRegisterBufferUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register, _In_ PUSHORT Buffer, _In_ ULONG Count)
FORCEINLINE ULONG StorPortReleaseMSISpinLock(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _In_ ULONG OldIrql)
enum _STOR_PNP_ACTION STOR_PNP_ACTION
PStorPortBuildScatterGatherList BuildScatterGatherList
UCHAR SubChannelSelection
struct _STORPORT_EXTENDED_FUNCTIONS STORPORT_EXTENDED_FUNCTIONS
struct _CDB::_REPORT_LUNS REPORT_LUNS
struct _CDB::_PLXTR_READ_CDDA PLXTR_READ_CDDA
UCHAR EnableVitalProductData
ULONG DeviceExtensionSize
enum _DMA_WIDTH DMA_WIDTH
struct _VPD_SERIAL_NUMBER_PAGE VPD_SERIAL_NUMBER_PAGE
FORCEINLINE VOID StorPortAcquireSpinLock(_In_ PVOID DeviceExtension, _In_ STOR_SPINLOCK SpinLock, _In_ PVOID LockContext, _Inout_ PSTOR_LOCK_HANDLE LockHandle)
UCHAR TransportElementAddress[2]
struct _CDB::_MODE_SENSE10 MODE_SENSE10
_STOR_EVENT_ASSOCIATION_ENUM
UCHAR Destination2ElementAddress[2]
UCHAR DeviceTypeQualifier
PHW_DMA_STARTED HwDmaStarted
STOR_PHYSICAL_ADDRESS PhysicalAddress
ULONG LogicalBlockAddress
struct _SCSI_PNP_REQUEST_BLOCK SCSI_PNP_REQUEST_BLOCK
struct _CDB::_READ_CD_MSF * PREAD_CD_MSF
BOOLEAN MultipleRequestPerLu
STOR_SYNCHRONIZED_ACCESS * PSTOR_SYNCHRONIZED_ACCESS
struct _CDB::_WRITE12 WRITE12
struct _LUN_LIST * PLUN_LIST
PHW_FIND_ADAPTER HwFindAdapter
enum _GETSGSTATUS GETSGSTATUS
struct _CDB::_PLAY_AUDIO_MSF PLAY_AUDIO_MSF
FORCEINLINE ULONG StorPortGetSystemAddress(_In_ PVOID HwDeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb, _Out_ PVOID *SystemAddress)
enum _STOR_SPINLOCK STOR_SPINLOCK
UCHAR AllocationLength[2]
struct _CDB::_READ_DVD_STRUCTURE * PREAD_DVD_STRUCTURE
struct _CDB::_SEND_KEY * PSEND_KEY
struct _VPD_SUPPORTED_PAGES_PAGE VPD_SUPPORTED_PAGES_PAGE
struct _CDB::_MECH_STATUS * PMECH_STATUS
ULONG SpecificLuExtensionSize
#define _When_(expr, annos)
UCHAR LogicalBlockAddress[4]
struct _VPD_IDENTIFICATION_PAGE VPD_IDENTIFICATION_PAGE
BOOLEAN(NTAPI * PHW_STARTIO)(_In_ PVOID DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
struct _ACCESS_RANGE * PACCESS_RANGE
struct _SCSI_REQUEST_BLOCK * NextSrb
struct _CDB::_WRITE_TAPE_MARKS * PWRITE_TAPE_MARKS
PDEVICE_OBJECT PhysicalDeviceObject
struct _CDB::_CDB10 CDB10
UCHAR AllocationLength[2]
enum _VPD_CODE_SET VPD_CODE_SET
STORPORT_API VOID NTAPI StorPortWritePortUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ UCHAR Value)
struct _CDB::_LOGSENSE * PLOGSENSE
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
struct _CDB::_LOAD_UNLOAD * PLOAD_UNLOAD
UCHAR VerificationLength[4]
FORCEINLINE VOID StorPortInitializeDpc(_In_ PVOID DeviceExtension, _Out_ PSTOR_DPC Dpc, _In_ PHW_DPC_ROUTINE HwDpcRoutine)
UCHAR AllocationLength[2]
UCHAR ParameterListLength[2]
STORPORT_API STOR_PHYSICAL_ADDRESS NTAPI StorPortGetPhysicalAddress(_In_ PVOID HwDeviceExtension, _In_opt_ PSCSI_REQUEST_BLOCK Srb, _In_ PVOID VirtualAddress, _Out_ ULONG *Length)
PVOID(NTAPI * PStorPortGetSystemAddress)(_In_ PSCSI_REQUEST_BLOCK Srb)
struct _INQUIRYDATA INQUIRYDATA
STORPORT_API BOOLEAN NTAPI StorPortPause(_In_ PVOID HwDeviceExtension, _In_ ULONG TimeOut)
STORPORT_API VOID NTAPI StorPortWritePortBufferUchar(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Port, _In_ PUCHAR Buffer, _In_ ULONG Count)
struct _READ_CAPACITY_DATA READ_CAPACITY_DATA
STORPORT_API USHORT NTAPI StorPortReadRegisterUshort(_In_ PVOID HwDeviceExtension, _In_ PUSHORT Register)
struct _CDB::_SEND_OPC_INFORMATION SEND_OPC_INFORMATION
PHYSICAL_ADDRESS PhysicalBase
STORPORT_API VOID NTAPI StorPortStallExecution(_In_ ULONG Delay)
PVOID(NTAPI * PStorPortAllocatePool)(_In_ ULONG NumberOfBytes, _In_ ULONG Tag, _In_ PVOID HwDeviceExtension, _Out_ PVOID *PMdl)
struct _CDB::_CDB16 CDB16
struct _CDB::_PERSISTENT_RESERVE_IN * PPERSISTENT_RESERVE_IN
STORPORT_API VOID NTAPI StorPortFreeDeviceBase(_In_ PVOID HwDeviceExtension, _In_ PVOID MappedAddress)
FORCEINLINE ULONG StorPortGetMSIInfo(_In_ PVOID HwDeviceExtension, _In_ ULONG MessageId, _Out_ PMESSAGE_INTERRUPT_INFORMATION InterruptInfo)
BOOLEAN(NTAPI * PHW_INTERRUPT)(_In_ PVOID DeviceExtension)
STORPORT_API VOID NTAPI StorPortSynchronizeAccess(_In_ PVOID HwDeviceExtension, _In_ PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine, _In_opt_ PVOID Context)
struct _STOR_LOCK_HANDLE::@2189 Context
struct _CDB::_SEND_CUE_SHEET SEND_CUE_SHEET
struct _STOR_SCATTER_GATHER_ELEMENT * PSTOR_SCATTER_GATHER_ELEMENT
BOOLEAN(NTAPI * PHW_INITIALIZE)(_In_ PVOID DeviceExtension)
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
STORPORT_API VOID NTAPI StorPortFreeRegistryBuffer(_In_ PVOID HwDeviceExtension, _In_ PUCHAR Buffer)
struct _SCSI_REQUEST_BLOCK * NextSrb
struct _CDB::_SEND_KEY SEND_KEY
UCHAR ParameterListLength[2]
_In_ PDEVICE_OBJECT DeviceObject
struct _MODE_PARAMETER_HEADER * PMODE_PARAMETER_HEADER
enum _VPD_ASSOCIATION VPD_ASSOCIATION