Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygensrb.h
Go to the documentation of this file.
00001 /* 00002 * scsi.h 00003 * 00004 * Interface between SCSI miniport drivers and the SCSI port driver. 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef _NTSRB_ 00024 #define _NTSRB_ 00025 00026 #ifdef __cplusplus 00027 extern "C" { 00028 #endif 00029 00030 #define SCSI_MAXIMUM_LOGICAL_UNITS 8 00031 #define SCSI_MAXIMUM_TARGETS_PER_BUS 128 00032 #define SCSI_MAXIMUM_LUNS_PER_TARGET 255 00033 #define SCSI_MAXIMUM_BUSES 8 00034 #define SCSI_MINIMUM_PHYSICAL_BREAKS 16 00035 #define SCSI_MAXIMUM_PHYSICAL_BREAKS 255 00036 #define SCSI_MAXIMUM_TARGETS 8 00037 00038 /* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */ 00039 #define SCSI_DMA64_MINIPORT_SUPPORTED 0x01 00040 #define SCSI_DMA64_SYSTEM_SUPPORTED 0x80 00041 #if (NTDDI_VERSION > NTDDI_WS03SP1) 00042 #define SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED 0x02 00043 #endif 00044 00045 #define SP_UNINITIALIZED_VALUE ((ULONG) ~0) 00046 #define SP_UNTAGGED ((UCHAR) ~0) 00047 00048 /* Asynchronous events */ 00049 #define SRBEV_BUS_RESET 0x0001 00050 #define SRBEV_SCSI_ASYNC_NOTIFICATION 0x0002 00051 00052 #define MAXIMUM_CDB_SIZE 12 00053 00054 #if DBG 00055 #define DebugPrint(x) ScsiDebugPrint x 00056 #else 00057 #define DebugPrint(x) 00058 #endif 00059 00060 #define SCSI_COMBINE_BUS_TARGET(Bus, Target)( \ 00061 ((((UCHAR) (Target)) & ~(0x20 - 1)) << 8) | \ 00062 (((UCHAR) (Bus)) << 5) | \ 00063 (((UCHAR) (Target)) & (0x20 - 1))) 00064 00065 #define SCSI_DECODE_BUS_TARGET(Value, Bus, Target)( \ 00066 Bus = (UCHAR) ((Value) >> 5), \ 00067 Target = (UCHAR) ((((Value) >> 8) & ~(0x20 - 1)) | ((Value) & (0x20 - 1)))) 00068 00069 /* SCSI_REQUEST_BLOCK.Function constants */ 00070 #define SRB_FUNCTION_EXECUTE_SCSI 0x00 00071 #define SRB_FUNCTION_CLAIM_DEVICE 0x01 00072 #define SRB_FUNCTION_IO_CONTROL 0x02 00073 #define SRB_FUNCTION_RECEIVE_EVENT 0x03 00074 #define SRB_FUNCTION_RELEASE_QUEUE 0x04 00075 #define SRB_FUNCTION_ATTACH_DEVICE 0x05 00076 #define SRB_FUNCTION_RELEASE_DEVICE 0x06 00077 #define SRB_FUNCTION_SHUTDOWN 0x07 00078 #define SRB_FUNCTION_FLUSH 0x08 00079 #define SRB_FUNCTION_ABORT_COMMAND 0x10 00080 #define SRB_FUNCTION_RELEASE_RECOVERY 0x11 00081 #define SRB_FUNCTION_RESET_BUS 0x12 00082 #define SRB_FUNCTION_RESET_DEVICE 0x13 00083 #define SRB_FUNCTION_TERMINATE_IO 0x14 00084 #define SRB_FUNCTION_FLUSH_QUEUE 0x15 00085 #define SRB_FUNCTION_REMOVE_DEVICE 0x16 00086 #define SRB_FUNCTION_WMI 0x17 00087 #define SRB_FUNCTION_LOCK_QUEUE 0x18 00088 #define SRB_FUNCTION_UNLOCK_QUEUE 0x19 00089 #define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20 00090 #define SRB_FUNCTION_SET_LINK_TIMEOUT 0x21 00091 #define SRB_FUNCTION_LINK_TIMEOUT_OCCURRED 0x22 00092 #define SRB_FUNCTION_LINK_TIMEOUT_COMPLETE 0x23 00093 #define SRB_FUNCTION_POWER 0x24 00094 #define SRB_FUNCTION_PNP 0x25 00095 #define SRB_FUNCTION_DUMP_POINTERS 0x26 00096 00097 /* SCSI_REQUEST_BLOCK.SrbStatus constants */ 00098 #define SRB_STATUS_PENDING 0x00 00099 #define SRB_STATUS_SUCCESS 0x01 00100 #define SRB_STATUS_ABORTED 0x02 00101 #define SRB_STATUS_ABORT_FAILED 0x03 00102 #define SRB_STATUS_ERROR 0x04 00103 #define SRB_STATUS_BUSY 0x05 00104 #define SRB_STATUS_INVALID_REQUEST 0x06 00105 #define SRB_STATUS_INVALID_PATH_ID 0x07 00106 #define SRB_STATUS_NO_DEVICE 0x08 00107 #define SRB_STATUS_TIMEOUT 0x09 00108 #define SRB_STATUS_SELECTION_TIMEOUT 0x0A 00109 #define SRB_STATUS_COMMAND_TIMEOUT 0x0B 00110 #define SRB_STATUS_MESSAGE_REJECTED 0x0D 00111 #define SRB_STATUS_BUS_RESET 0x0E 00112 #define SRB_STATUS_PARITY_ERROR 0x0F 00113 #define SRB_STATUS_REQUEST_SENSE_FAILED 0x10 00114 #define SRB_STATUS_NO_HBA 0x11 00115 #define SRB_STATUS_DATA_OVERRUN 0x12 00116 #define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13 00117 #define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14 00118 #define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15 00119 #define SRB_STATUS_REQUEST_FLUSHED 0x16 00120 #define SRB_STATUS_INVALID_LUN 0x20 00121 #define SRB_STATUS_INVALID_TARGET_ID 0x21 00122 #define SRB_STATUS_BAD_FUNCTION 0x22 00123 #define SRB_STATUS_ERROR_RECOVERY 0x23 00124 #define SRB_STATUS_NOT_POWERED 0x24 00125 #define SRB_STATUS_LINK_DOWN 0x25 00126 #define SRB_STATUS_INTERNAL_ERROR 0x30 00127 00128 #define SRB_STATUS_QUEUE_FROZEN 0x40 00129 #define SRB_STATUS_AUTOSENSE_VALID 0x80 00130 00131 #define SRB_STATUS(Status) \ 00132 (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN)) 00133 00134 /* SCSI_REQUEST_BLOCK.SrbFlags constants */ 00135 #define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002 00136 #define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004 00137 #define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008 00138 #define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010 00139 #define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020 00140 #define SRB_FLAGS_DATA_IN 0x00000040 00141 #define SRB_FLAGS_DATA_OUT 0x00000080 00142 #define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000 00143 #define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) 00144 #define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100 00145 #define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200 00146 #define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400 00147 #define SRB_FLAGS_IS_ACTIVE 0x00010000 00148 #define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000 00149 #define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000 00150 #define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000 00151 #define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000 00152 #define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000 00153 #define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000 00154 #define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000 00155 #define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000 00156 #define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000 00157 00158 #if DBG 00159 #define SCSI_PORT_SIGNATURE 0x54524f50 00160 #endif 00161 00162 #define SRB_SIMPLE_TAG_REQUEST 0x20 00163 #define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21 00164 #define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22 00165 00166 #define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x0001 00167 #define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x0001 00168 #define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x0001 00169 00170 #define SP_BUS_PARITY_ERROR 0x0001 00171 #define SP_UNEXPECTED_DISCONNECT 0x0002 00172 #define SP_INVALID_RESELECTION 0x0003 00173 #define SP_BUS_TIME_OUT 0x0004 00174 #define SP_PROTOCOL_ERROR 0x0005 00175 #define SP_INTERNAL_ADAPTER_ERROR 0x0006 00176 #define SP_REQUEST_TIMEOUT 0x0007 00177 #define SP_IRQ_NOT_RESPONDING 0x0008 00178 #define SP_BAD_FW_WARNING 0x0009 00179 #define SP_BAD_FW_ERROR 0x000a 00180 #define SP_LOST_WMI_MINIPORT_REQUEST 0x000b 00181 00182 #define SP_VER_TRACE_SUPPORT 0x0010 00183 00184 #define SP_RETURN_NOT_FOUND 0 00185 #define SP_RETURN_FOUND 1 00186 #define SP_RETURN_ERROR 2 00187 #define SP_RETURN_BAD_CONFIG 3 00188 00189 typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS; 00190 00191 typedef struct _ACCESS_RANGE { 00192 SCSI_PHYSICAL_ADDRESS RangeStart; 00193 ULONG RangeLength; 00194 BOOLEAN RangeInMemory; 00195 } ACCESS_RANGE, *PACCESS_RANGE; 00196 00197 typedef struct _PORT_CONFIGURATION_INFORMATION { 00198 ULONG Length; 00199 ULONG SystemIoBusNumber; 00200 INTERFACE_TYPE AdapterInterfaceType; 00201 ULONG BusInterruptLevel; 00202 ULONG BusInterruptVector; 00203 KINTERRUPT_MODE InterruptMode; 00204 ULONG MaximumTransferLength; 00205 ULONG NumberOfPhysicalBreaks; 00206 ULONG DmaChannel; 00207 ULONG DmaPort; 00208 DMA_WIDTH DmaWidth; 00209 DMA_SPEED DmaSpeed; 00210 ULONG AlignmentMask; 00211 ULONG NumberOfAccessRanges; 00212 ACCESS_RANGE (*AccessRanges)[]; 00213 PVOID Reserved; 00214 UCHAR NumberOfBuses; 00215 UCHAR InitiatorBusId[8]; 00216 BOOLEAN ScatterGather; 00217 BOOLEAN Master; 00218 BOOLEAN CachesData; 00219 BOOLEAN AdapterScansDown; 00220 BOOLEAN AtdiskPrimaryClaimed; 00221 BOOLEAN AtdiskSecondaryClaimed; 00222 BOOLEAN Dma32BitAddresses; 00223 BOOLEAN DemandMode; 00224 BOOLEAN MapBuffers; 00225 BOOLEAN NeedPhysicalAddresses; 00226 BOOLEAN TaggedQueuing; 00227 BOOLEAN AutoRequestSense; 00228 BOOLEAN MultipleRequestPerLu; 00229 BOOLEAN ReceiveEvent; 00230 BOOLEAN RealModeInitialized; 00231 BOOLEAN BufferAccessScsiPortControlled; 00232 UCHAR MaximumNumberOfTargets; 00233 UCHAR ReservedUchars[2]; 00234 ULONG SlotNumber; 00235 ULONG BusInterruptLevel2; 00236 ULONG BusInterruptVector2; 00237 KINTERRUPT_MODE InterruptMode2; 00238 ULONG DmaChannel2; 00239 ULONG DmaPort2; 00240 DMA_WIDTH DmaWidth2; 00241 DMA_SPEED DmaSpeed2; 00242 ULONG DeviceExtensionSize; 00243 ULONG SpecificLuExtensionSize; 00244 ULONG SrbExtensionSize; 00245 UCHAR Dma64BitAddresses; 00246 BOOLEAN ResetTargetSupported; 00247 UCHAR MaximumNumberOfLogicalUnits; 00248 BOOLEAN WmiDataProvider; 00249 } PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION; 00250 00251 #define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION) 00252 00253 #ifdef __GNUC__ 00254 __extension__ /* enums limited to range of integer */ 00255 #endif 00256 typedef enum _SCSI_ADAPTER_CONTROL_TYPE { 00257 ScsiQuerySupportedControlTypes = 0, 00258 ScsiStopAdapter, 00259 ScsiRestartAdapter, 00260 ScsiSetBootConfig, 00261 ScsiSetRunningConfig, 00262 ScsiAdapterControlMax, 00263 MakeAdapterControlTypeSizeOfUlong = 0xffffffff 00264 } SCSI_ADAPTER_CONTROL_TYPE, *PSCSI_ADAPTER_CONTROL_TYPE; 00265 00266 typedef enum _SCSI_ADAPTER_CONTROL_STATUS { 00267 ScsiAdapterControlSuccess = 0, 00268 ScsiAdapterControlUnsuccessful 00269 } SCSI_ADAPTER_CONTROL_STATUS, *PSCSI_ADAPTER_CONTROL_STATUS; 00270 00271 typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST { 00272 ULONG MaxControlType; 00273 BOOLEAN SupportedTypeList[0]; 00274 } SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST; 00275 00276 typedef struct _SCSI_REQUEST_BLOCK { 00277 USHORT Length; 00278 UCHAR Function; 00279 UCHAR SrbStatus; 00280 UCHAR ScsiStatus; 00281 UCHAR PathId; 00282 UCHAR TargetId; 00283 UCHAR Lun; 00284 UCHAR QueueTag; 00285 UCHAR QueueAction; 00286 UCHAR CdbLength; 00287 UCHAR SenseInfoBufferLength; 00288 ULONG SrbFlags; 00289 ULONG DataTransferLength; 00290 ULONG TimeOutValue; 00291 PVOID DataBuffer; 00292 PVOID SenseInfoBuffer; 00293 struct _SCSI_REQUEST_BLOCK *NextSrb; 00294 PVOID OriginalRequest; 00295 PVOID SrbExtension; 00296 _ANONYMOUS_UNION union { 00297 ULONG InternalStatus; 00298 ULONG QueueSortKey; 00299 ULONG LinkTimeoutValue; 00300 } DUMMYUNIONNAME; 00301 #if defined(_WIN64) 00302 ULONG Reserved; 00303 #endif 00304 UCHAR Cdb[16]; 00305 } SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK; 00306 00307 #define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK) 00308 00309 typedef struct _SCSI_WMI_REQUEST_BLOCK { 00310 USHORT Length; 00311 UCHAR Function; 00312 UCHAR SrbStatus; 00313 UCHAR WMISubFunction; 00314 UCHAR PathId; 00315 UCHAR TargetId; 00316 UCHAR Lun; 00317 UCHAR Reserved1; 00318 UCHAR WMIFlags; 00319 UCHAR Reserved2[2]; 00320 ULONG SrbFlags; 00321 ULONG DataTransferLength; 00322 ULONG TimeOutValue; 00323 PVOID DataBuffer; 00324 PVOID DataPath; 00325 PVOID Reserved3; 00326 PVOID OriginalRequest; 00327 PVOID SrbExtension; 00328 ULONG Reserved4; 00329 #if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64) 00330 ULONG Reserved6; 00331 #endif 00332 UCHAR Reserved5[16]; 00333 } SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK; 00334 00335 typedef enum _STOR_DEVICE_POWER_STATE { 00336 StorPowerDeviceUnspecified = 0, 00337 StorPowerDeviceD0, 00338 StorPowerDeviceD1, 00339 StorPowerDeviceD2, 00340 StorPowerDeviceD3, 00341 StorPowerDeviceMaximum 00342 } STOR_DEVICE_POWER_STATE, *PSTOR_DEVICE_POWER_STATE; 00343 00344 typedef enum _STOR_POWER_ACTION { 00345 StorPowerActionNone = 0, 00346 StorPowerActionReserved, 00347 StorPowerActionSleep, 00348 StorPowerActionHibernate, 00349 StorPowerActionShutdown, 00350 StorPowerActionShutdownReset, 00351 StorPowerActionShutdownOff, 00352 StorPowerActionWarmEject 00353 } STOR_POWER_ACTION, *PSTOR_POWER_ACTION; 00354 00355 typedef struct _SCSI_POWER_REQUEST_BLOCK { 00356 USHORT Length; 00357 UCHAR Function; 00358 UCHAR SrbStatus; 00359 UCHAR SrbPowerFlags; 00360 UCHAR PathId; 00361 UCHAR TargetId; 00362 UCHAR Lun; 00363 STOR_DEVICE_POWER_STATE DevicePowerState; 00364 ULONG SrbFlags; 00365 ULONG DataTransferLength; 00366 ULONG TimeOutValue; 00367 PVOID DataBuffer; 00368 PVOID SenseInfoBuffer; 00369 struct _SCSI_REQUEST_BLOCK *NextSrb; 00370 PVOID OriginalRequest; 00371 PVOID SrbExtension; 00372 STOR_POWER_ACTION PowerAction; 00373 #if defined(_WIN64) 00374 ULONG Reserved; 00375 #endif 00376 UCHAR Reserved5[16]; 00377 } SCSI_POWER_REQUEST_BLOCK, *PSCSI_POWER_REQUEST_BLOCK; 00378 00379 typedef enum _STOR_PNP_ACTION { 00380 StorStartDevice = 0x0, 00381 StorRemoveDevice = 0x2, 00382 StorStopDevice = 0x4, 00383 StorQueryCapabilities = 0x9, 00384 StorQueryResourceRequirements = 0xB, 00385 StorFilterResourceRequirements = 0xD, 00386 StorSurpriseRemoval = 0x17 00387 } STOR_PNP_ACTION, *PSTOR_PNP_ACTION; 00388 00389 typedef struct _STOR_DEVICE_CAPABILITIES { 00390 USHORT Version; 00391 ULONG DeviceD1:1; 00392 ULONG DeviceD2:1; 00393 ULONG LockSupported:1; 00394 ULONG EjectSupported:1; 00395 ULONG Removable:1; 00396 ULONG DockDevice:1; 00397 ULONG UniqueID:1; 00398 ULONG SilentInstall:1; 00399 ULONG SurpriseRemovalOK:1; 00400 ULONG NoDisplayInUI:1; 00401 } STOR_DEVICE_CAPABILITIES, *PSTOR_DEVICE_CAPABILITIES; 00402 00403 typedef struct _SCSI_PNP_REQUEST_BLOCK { 00404 USHORT Length; 00405 UCHAR Function; 00406 UCHAR SrbStatus; 00407 UCHAR PnPSubFunction; 00408 UCHAR PathId; 00409 UCHAR TargetId; 00410 UCHAR Lun; 00411 STOR_PNP_ACTION PnPAction; 00412 ULONG SrbFlags; 00413 ULONG DataTransferLength; 00414 ULONG TimeOutValue; 00415 PVOID DataBuffer; 00416 PVOID SenseInfoBuffer; 00417 struct _SCSI_REQUEST_BLOCK *NextSrb; 00418 PVOID OriginalRequest; 00419 PVOID SrbExtension; 00420 ULONG SrbPnPFlags; 00421 #if defined(_WIN64) 00422 ULONG Reserved; 00423 #endif 00424 UCHAR Reserved4[16]; 00425 } SCSI_PNP_REQUEST_BLOCK, *PSCSI_PNP_REQUEST_BLOCK; 00426 00427 typedef BOOLEAN 00428 (NTAPI *PHW_INITIALIZE)( 00429 IN PVOID DeviceExtension); 00430 00431 typedef BOOLEAN 00432 (NTAPI *PHW_STARTIO)( 00433 IN PVOID DeviceExtension, 00434 IN PSCSI_REQUEST_BLOCK Srb); 00435 00436 typedef BOOLEAN 00437 (NTAPI *PHW_INTERRUPT)( 00438 IN PVOID DeviceExtension); 00439 00440 typedef VOID 00441 (NTAPI *PHW_TIMER)( 00442 IN PVOID DeviceExtension); 00443 00444 typedef VOID 00445 (NTAPI *PHW_DMA_STARTED)( 00446 IN PVOID DeviceExtension); 00447 00448 typedef ULONG 00449 (NTAPI *PHW_FIND_ADAPTER)( 00450 IN PVOID DeviceExtension, 00451 IN PVOID HwContext, 00452 IN PVOID BusInformation, 00453 IN PCHAR ArgumentString, 00454 IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, 00455 OUT PBOOLEAN Again); 00456 00457 typedef BOOLEAN 00458 (NTAPI *PHW_RESET_BUS)( 00459 IN PVOID DeviceExtension, 00460 IN ULONG PathId); 00461 00462 typedef BOOLEAN 00463 (NTAPI *PHW_ADAPTER_STATE)( 00464 IN PVOID DeviceExtension, 00465 IN PVOID Context, 00466 IN BOOLEAN SaveState); 00467 00468 typedef SCSI_ADAPTER_CONTROL_STATUS 00469 (NTAPI *PHW_ADAPTER_CONTROL)( 00470 IN PVOID DeviceExtension, 00471 IN SCSI_ADAPTER_CONTROL_TYPE ControlType, 00472 IN PVOID Parameters); 00473 00474 typedef enum _SCSI_NOTIFICATION_TYPE { 00475 RequestComplete, 00476 NextRequest, 00477 NextLuRequest, 00478 ResetDetected, 00479 CallDisableInterrupts, 00480 CallEnableInterrupts, 00481 RequestTimerCall, 00482 BusChangeDetected, 00483 WMIEvent, 00484 WMIReregister, 00485 LinkUp, 00486 LinkDown, 00487 QueryTickCount, 00488 BufferOverrunDetected, 00489 TraceNotification 00490 } SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE; 00491 00492 typedef struct _HW_INITIALIZATION_DATA { 00493 ULONG HwInitializationDataSize; 00494 INTERFACE_TYPE AdapterInterfaceType; 00495 PHW_INITIALIZE HwInitialize; 00496 PHW_STARTIO HwStartIo; 00497 PHW_INTERRUPT HwInterrupt; 00498 PHW_FIND_ADAPTER HwFindAdapter; 00499 PHW_RESET_BUS HwResetBus; 00500 PHW_DMA_STARTED HwDmaStarted; 00501 PHW_ADAPTER_STATE HwAdapterState; 00502 ULONG DeviceExtensionSize; 00503 ULONG SpecificLuExtensionSize; 00504 ULONG SrbExtensionSize; 00505 ULONG NumberOfAccessRanges; 00506 PVOID Reserved; 00507 BOOLEAN MapBuffers; 00508 BOOLEAN NeedPhysicalAddresses; 00509 BOOLEAN TaggedQueuing; 00510 BOOLEAN AutoRequestSense; 00511 BOOLEAN MultipleRequestPerLu; 00512 BOOLEAN ReceiveEvent; 00513 USHORT VendorIdLength; 00514 PVOID VendorId; 00515 _ANONYMOUS_UNION union { 00516 USHORT ReservedUshort; 00517 USHORT PortVersionFlags; 00518 } DUMMYUNIONNAME; 00519 USHORT DeviceIdLength; 00520 PVOID DeviceId; 00521 PHW_ADAPTER_CONTROL HwAdapterControl; 00522 } HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA; 00523 00524 #if defined(_NTDDK_) 00525 #define SCSIPORTAPI 00526 #else 00527 #define SCSIPORTAPI DECLSPEC_IMPORT 00528 #endif 00529 00530 SCSIPORTAPI 00531 VOID 00532 NTAPI 00533 ScsiPortCompleteRequest( 00534 IN PVOID HwDeviceExtension, 00535 IN UCHAR PathId, 00536 IN UCHAR TargetId, 00537 IN UCHAR Lun, 00538 IN UCHAR SrbStatus); 00539 00540 SCSIPORTAPI 00541 ULONG 00542 NTAPI 00543 ScsiPortConvertPhysicalAddressToUlong( 00544 IN SCSI_PHYSICAL_ADDRESS Address); 00545 00546 #define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart) 00547 #define ScsiPortConvertPhysicalAddressToULongPtr(Address) ((ULONG_PTR)((Address).QuadPart)) 00548 00549 SCSIPORTAPI 00550 SCSI_PHYSICAL_ADDRESS 00551 NTAPI 00552 ScsiPortConvertUlongToPhysicalAddress( 00553 IN ULONG_PTR UlongAddress); 00554 00555 SCSIPORTAPI 00556 VOID 00557 NTAPI 00558 ScsiPortFlushDma( 00559 IN PVOID DeviceExtension); 00560 00561 SCSIPORTAPI 00562 VOID 00563 NTAPI 00564 ScsiPortFreeDeviceBase( 00565 IN PVOID HwDeviceExtension, 00566 IN PVOID MappedAddress); 00567 00568 SCSIPORTAPI 00569 ULONG 00570 NTAPI 00571 ScsiPortGetBusData( 00572 IN PVOID DeviceExtension, 00573 IN ULONG BusDataType, 00574 IN ULONG SystemIoBusNumber, 00575 IN ULONG SlotNumber, 00576 IN PVOID Buffer, 00577 IN ULONG Length); 00578 00579 SCSIPORTAPI 00580 PVOID 00581 NTAPI 00582 ScsiPortGetDeviceBase( 00583 IN PVOID HwDeviceExtension, 00584 IN INTERFACE_TYPE BusType, 00585 IN ULONG SystemIoBusNumber, 00586 IN SCSI_PHYSICAL_ADDRESS IoAddress, 00587 IN ULONG NumberOfBytes, 00588 IN BOOLEAN InIoSpace); 00589 00590 SCSIPORTAPI 00591 PVOID 00592 NTAPI 00593 ScsiPortGetLogicalUnit( 00594 IN PVOID HwDeviceExtension, 00595 IN UCHAR PathId, 00596 IN UCHAR TargetId, 00597 IN UCHAR Lun); 00598 00599 SCSIPORTAPI 00600 SCSI_PHYSICAL_ADDRESS 00601 NTAPI 00602 ScsiPortGetPhysicalAddress( 00603 IN PVOID HwDeviceExtension, 00604 IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, 00605 IN PVOID VirtualAddress, 00606 OUT ULONG *Length); 00607 00608 SCSIPORTAPI 00609 PSCSI_REQUEST_BLOCK 00610 NTAPI 00611 ScsiPortGetSrb( 00612 IN PVOID DeviceExtension, 00613 IN UCHAR PathId, 00614 IN UCHAR TargetId, 00615 IN UCHAR Lun, 00616 IN LONG QueueTag); 00617 00618 SCSIPORTAPI 00619 PVOID 00620 NTAPI 00621 ScsiPortGetUncachedExtension( 00622 IN PVOID HwDeviceExtension, 00623 IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, 00624 IN ULONG NumberOfBytes); 00625 00626 SCSIPORTAPI 00627 PVOID 00628 NTAPI 00629 ScsiPortGetVirtualAddress( 00630 IN PVOID HwDeviceExtension, 00631 IN SCSI_PHYSICAL_ADDRESS PhysicalAddress); 00632 00633 SCSIPORTAPI 00634 ULONG 00635 NTAPI 00636 ScsiPortInitialize( 00637 IN PVOID Argument1, 00638 IN PVOID Argument2, 00639 IN struct _HW_INITIALIZATION_DATA *HwInitializationData, 00640 IN PVOID HwContext OPTIONAL); 00641 00642 SCSIPORTAPI 00643 VOID 00644 NTAPI 00645 ScsiPortIoMapTransfer( 00646 IN PVOID HwDeviceExtension, 00647 IN PSCSI_REQUEST_BLOCK Srb, 00648 IN PVOID LogicalAddress, 00649 IN ULONG Length); 00650 00651 SCSIPORTAPI 00652 VOID 00653 NTAPI 00654 ScsiPortLogError( 00655 IN PVOID HwDeviceExtension, 00656 IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, 00657 IN UCHAR PathId, 00658 IN UCHAR TargetId, 00659 IN UCHAR Lun, 00660 IN ULONG ErrorCode, 00661 IN ULONG UniqueId); 00662 00663 SCSIPORTAPI 00664 VOID 00665 __cdecl 00666 ScsiPortNotification( 00667 IN SCSI_NOTIFICATION_TYPE NotificationType, 00668 IN PVOID HwDeviceExtension, 00669 IN ...); 00670 00671 SCSIPORTAPI 00672 VOID 00673 NTAPI 00674 ScsiPortQuerySystemTime( 00675 OUT PLARGE_INTEGER CurrentTime); 00676 00677 SCSIPORTAPI 00678 ULONG 00679 NTAPI 00680 ScsiPortSetBusDataByOffset( 00681 IN PVOID DeviceExtension, 00682 IN ULONG BusDataType, 00683 IN ULONG SystemIoBusNumber, 00684 IN ULONG SlotNumber, 00685 IN PVOID Buffer, 00686 IN ULONG Offset, 00687 IN ULONG Length); 00688 00689 SCSIPORTAPI 00690 VOID 00691 NTAPI 00692 ScsiPortStallExecution( 00693 IN ULONG Delay); 00694 00695 SCSIPORTAPI 00696 BOOLEAN 00697 NTAPI 00698 ScsiPortValidateRange( 00699 IN PVOID HwDeviceExtension, 00700 IN INTERFACE_TYPE BusType, 00701 IN ULONG SystemIoBusNumber, 00702 IN SCSI_PHYSICAL_ADDRESS IoAddress, 00703 IN ULONG NumberOfBytes, 00704 IN BOOLEAN InIoSpace); 00705 00706 SCSIPORTAPI 00707 VOID 00708 __cdecl 00709 ScsiDebugPrint( 00710 IN ULONG DebugPrintLevel, 00711 IN PCCHAR DebugMessage, 00712 IN ...); 00713 00714 #if defined(_M_AMD64) 00715 00716 #define ScsiPortReadPortUchar READ_PORT_UCHAR 00717 #define ScsiPortReadPortUshort READ_PORT_USHORT 00718 #define ScsiPortReadPortUlong READ_PORT_ULONG 00719 00720 #define ScsiPortReadPortBufferUchar READ_PORT_BUFFER_UCHAR 00721 #define ScsiPortReadPortBufferUshort READ_PORT_BUFFER_USHORT 00722 #define ScsiPortReadPortBufferUlong READ_PORT_BUFFER_ULONG 00723 00724 #define ScsiPortReadRegisterUchar READ_REGISTER_UCHAR 00725 #define ScsiPortReadRegisterUshort READ_REGISTER_USHORT 00726 #define ScsiPortReadRegisterUlong READ_REGISTER_ULONG 00727 00728 #define ScsiPortReadRegisterBufferUchar READ_REGISTER_BUFFER_UCHAR 00729 #define ScsiPortReadRegisterBufferUshort READ_REGISTER_BUFFER_USHORT 00730 #define ScsiPortReadRegisterBufferUlong READ_REGISTER_BUFFER_ULONG 00731 00732 #define ScsiPortWritePortUchar WRITE_PORT_UCHAR 00733 #define ScsiPortWritePortUshort WRITE_PORT_USHORT 00734 #define ScsiPortWritePortUlong WRITE_PORT_ULONG 00735 00736 #define ScsiPortWritePortBufferUchar WRITE_PORT_BUFFER_UCHAR 00737 #define ScsiPortWritePortBufferUshort WRITE_PORT_BUFFER_USHORT 00738 #define ScsiPortWritePortBufferUlong WRITE_PORT_BUFFER_ULONG 00739 00740 #define ScsiPortWriteRegisterUchar WRITE_REGISTER_UCHAR 00741 #define ScsiPortWriteRegisterUshort WRITE_REGISTER_USHORT 00742 #define ScsiPortWriteRegisterUlong WRITE_REGISTER_ULONG 00743 00744 #define ScsiPortWriteRegisterBufferUchar WRITE_REGISTER_BUFFER_UCHAR 00745 #define ScsiPortWriteRegisterBufferUshort WRITE_REGISTER_BUFFER_USHORT 00746 #define ScsiPortWriteRegisterBufferUlong WRITE_REGISTER_BUFFER_ULONG 00747 00748 #define ScsiPortMoveMemory memmove 00749 00750 #else 00751 00752 SCSIPORTAPI 00753 UCHAR 00754 NTAPI 00755 ScsiPortReadPortUchar( 00756 IN PUCHAR Port); 00757 00758 SCSIPORTAPI 00759 ULONG 00760 NTAPI 00761 ScsiPortReadPortUlong( 00762 IN PULONG Port); 00763 00764 SCSIPORTAPI 00765 USHORT 00766 NTAPI 00767 ScsiPortReadPortUshort( 00768 IN PUSHORT Port); 00769 00770 SCSIPORTAPI 00771 VOID 00772 NTAPI 00773 ScsiPortReadPortBufferUchar( 00774 IN PUCHAR Port, 00775 IN PUCHAR Buffer, 00776 IN ULONG Count); 00777 00778 SCSIPORTAPI 00779 VOID 00780 NTAPI 00781 ScsiPortReadPortBufferUlong( 00782 IN PULONG Port, 00783 IN PULONG Buffer, 00784 IN ULONG Count); 00785 00786 SCSIPORTAPI 00787 VOID 00788 NTAPI 00789 ScsiPortReadPortBufferUshort( 00790 IN PUSHORT Port, 00791 IN PUSHORT Buffer, 00792 IN ULONG Count); 00793 00794 SCSIPORTAPI 00795 UCHAR 00796 NTAPI 00797 ScsiPortReadRegisterUchar( 00798 IN PUCHAR Register); 00799 00800 SCSIPORTAPI 00801 ULONG 00802 NTAPI 00803 ScsiPortReadRegisterUlong( 00804 IN PULONG Register); 00805 00806 SCSIPORTAPI 00807 USHORT 00808 NTAPI 00809 ScsiPortReadRegisterUshort( 00810 IN PUSHORT Register); 00811 00812 SCSIPORTAPI 00813 VOID 00814 NTAPI 00815 ScsiPortReadRegisterBufferUchar( 00816 IN PUCHAR Register, 00817 IN PUCHAR Buffer, 00818 IN ULONG Count); 00819 00820 SCSIPORTAPI 00821 VOID 00822 NTAPI 00823 ScsiPortReadRegisterBufferUlong( 00824 IN PULONG Register, 00825 IN PULONG Buffer, 00826 IN ULONG Count); 00827 00828 SCSIPORTAPI 00829 VOID 00830 NTAPI 00831 ScsiPortReadRegisterBufferUshort( 00832 IN PUSHORT Register, 00833 IN PUSHORT Buffer, 00834 IN ULONG Count); 00835 00836 SCSIPORTAPI 00837 VOID 00838 NTAPI 00839 ScsiPortWritePortUchar( 00840 IN PUCHAR Port, 00841 IN UCHAR Value); 00842 00843 SCSIPORTAPI 00844 VOID 00845 NTAPI 00846 ScsiPortWritePortUlong( 00847 IN PULONG Port, 00848 IN ULONG Value); 00849 00850 SCSIPORTAPI 00851 VOID 00852 NTAPI 00853 ScsiPortWritePortUshort( 00854 IN PUSHORT Port, 00855 IN USHORT Value); 00856 00857 SCSIPORTAPI 00858 VOID 00859 NTAPI 00860 ScsiPortWritePortBufferUchar( 00861 IN PUCHAR Port, 00862 IN PUCHAR Buffer, 00863 IN ULONG Count); 00864 00865 SCSIPORTAPI 00866 VOID 00867 NTAPI 00868 ScsiPortWritePortBufferUlong( 00869 IN PULONG Port, 00870 IN PULONG Buffer, 00871 IN ULONG Count); 00872 00873 SCSIPORTAPI 00874 VOID 00875 NTAPI 00876 ScsiPortWritePortBufferUshort( 00877 IN PUSHORT Port, 00878 IN PUSHORT Buffer, 00879 IN ULONG Count); 00880 00881 SCSIPORTAPI 00882 VOID 00883 NTAPI 00884 ScsiPortWriteRegisterUchar( 00885 IN PUCHAR Register, 00886 IN UCHAR Value); 00887 00888 SCSIPORTAPI 00889 VOID 00890 NTAPI 00891 ScsiPortWriteRegisterUlong( 00892 IN PULONG Register, 00893 IN ULONG Value); 00894 00895 SCSIPORTAPI 00896 VOID 00897 NTAPI 00898 ScsiPortWriteRegisterUshort( 00899 IN PUSHORT Register, 00900 IN USHORT Value); 00901 00902 SCSIPORTAPI 00903 VOID 00904 NTAPI 00905 ScsiPortWriteRegisterBufferUchar( 00906 IN PUCHAR Register, 00907 IN PUCHAR Buffer, 00908 IN ULONG Count); 00909 00910 SCSIPORTAPI 00911 VOID 00912 NTAPI 00913 ScsiPortWriteRegisterBufferUlong( 00914 IN PULONG Register, 00915 IN PULONG Buffer, 00916 IN ULONG Count); 00917 00918 SCSIPORTAPI 00919 VOID 00920 NTAPI 00921 ScsiPortWriteRegisterBufferUshort( 00922 IN PUSHORT Register, 00923 IN PUSHORT Buffer, 00924 IN ULONG Count); 00925 00926 SCSIPORTAPI 00927 VOID 00928 NTAPI 00929 ScsiPortMoveMemory( 00930 IN PVOID WriteBuffer, 00931 IN PVOID ReadBuffer, 00932 IN ULONG Length); 00933 00934 #endif /* defined(_M_AMD64) */ 00935 00936 #ifdef __cplusplus 00937 } 00938 #endif 00939 00940 #endif /* _NTSRB_ */ Generated on Sat May 26 2012 04:27:00 for ReactOS by
1.7.6.1
|