Embed:
(wiki syntax)
Show/hide line numbers
srb.h
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 __SRB_H 00024 #define __SRB_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 00036 #if defined(_SCSIPORT_) 00037 #define SCSIPORTAPI DECLSPEC_EXPORT 00038 #else 00039 #define SCSIPORTAPI DECLSPEC_IMPORT 00040 #endif 00041 00042 #ifdef DBG 00043 #define DebugPrint(x) ScsiDebugPrint x 00044 #else 00045 #define DebugPrint(x) 00046 #endif 00047 00048 typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS; 00049 00050 #define SP_UNINITIALIZED_VALUE ((ULONG) ~0) 00051 #define SP_UNTAGGED ((UCHAR) ~0) 00052 00053 #define SRB_SIMPLE_TAG_REQUEST 0x20 00054 #define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21 00055 #define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22 00056 00057 #define SRB_STATUS_QUEUE_FROZEN 0x40 00058 #define SRB_STATUS_AUTOSENSE_VALID 0x80 00059 00060 #define SRB_STATUS(Status) \ 00061 (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN)) 00062 00063 #define MAXIMUM_CDB_SIZE 12 00064 00065 #ifdef DBG 00066 #define SCSI_PORT_SIGNATURE 0x54524f50 00067 #endif 00068 00069 00070 #define SCSI_MAXIMUM_LOGICAL_UNITS 8 00071 #define SCSI_MAXIMUM_TARGETS_PER_BUS 128 00072 #define SCSI_MAXIMUM_LUNS_PER_TARGET 255 00073 #define SCSI_MAXIMUM_BUSES 8 00074 #define SCSI_MINIMUM_PHYSICAL_BREAKS 16 00075 #define SCSI_MAXIMUM_PHYSICAL_BREAKS 255 00076 #define SCSI_MAXIMUM_TARGETS 8 00077 00078 #define SRB_FUNCTION_WMI 0x17 00079 00080 #define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x0001 00081 00082 #define SP_BUS_PARITY_ERROR 0x0001 00083 #define SP_UNEXPECTED_DISCONNECT 0x0002 00084 #define SP_INVALID_RESELECTION 0x0003 00085 #define SP_BUS_TIME_OUT 0x0004 00086 #define SP_PROTOCOL_ERROR 0x0005 00087 #define SP_INTERNAL_ADAPTER_ERROR 0x0006 00088 #define SP_REQUEST_TIMEOUT 0x0007 00089 #define SP_IRQ_NOT_RESPONDING 0x0008 00090 #define SP_BAD_FW_WARNING 0x0009 00091 #define SP_BAD_FW_ERROR 0x000a 00092 #define SP_LOST_WMI_MINIPORT_REQUEST 0x000b 00093 00094 /* SCSI_REQUEST_BLOCK.Function constants */ 00095 #define SRB_FUNCTION_EXECUTE_SCSI 0x00 00096 #define SRB_FUNCTION_CLAIM_DEVICE 0x01 00097 #define SRB_FUNCTION_IO_CONTROL 0x02 00098 #define SRB_FUNCTION_RECEIVE_EVENT 0x03 00099 #define SRB_FUNCTION_RELEASE_QUEUE 0x04 00100 #define SRB_FUNCTION_ATTACH_DEVICE 0x05 00101 #define SRB_FUNCTION_RELEASE_DEVICE 0x06 00102 #define SRB_FUNCTION_SHUTDOWN 0x07 00103 #define SRB_FUNCTION_FLUSH 0x08 00104 #define SRB_FUNCTION_ABORT_COMMAND 0x10 00105 #define SRB_FUNCTION_RELEASE_RECOVERY 0x11 00106 #define SRB_FUNCTION_RESET_BUS 0x12 00107 #define SRB_FUNCTION_RESET_DEVICE 0x13 00108 #define SRB_FUNCTION_TERMINATE_IO 0x14 00109 #define SRB_FUNCTION_FLUSH_QUEUE 0x15 00110 #define SRB_FUNCTION_REMOVE_DEVICE 0x16 00111 #define SRB_FUNCTION_WMI 0x17 00112 #define SRB_FUNCTION_LOCK_QUEUE 0x18 00113 #define SRB_FUNCTION_UNLOCK_QUEUE 0x19 00114 #define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20 00115 00116 /* SCSI_REQUEST_BLOCK.SrbStatus constants */ 00117 #define SRB_STATUS_PENDING 0x00 00118 #define SRB_STATUS_SUCCESS 0x01 00119 #define SRB_STATUS_ABORTED 0x02 00120 #define SRB_STATUS_ABORT_FAILED 0x03 00121 #define SRB_STATUS_ERROR 0x04 00122 #define SRB_STATUS_BUSY 0x05 00123 #define SRB_STATUS_INVALID_REQUEST 0x06 00124 #define SRB_STATUS_INVALID_PATH_ID 0x07 00125 #define SRB_STATUS_NO_DEVICE 0x08 00126 #define SRB_STATUS_TIMEOUT 0x09 00127 #define SRB_STATUS_SELECTION_TIMEOUT 0x0A 00128 #define SRB_STATUS_COMMAND_TIMEOUT 0x0B 00129 #define SRB_STATUS_MESSAGE_REJECTED 0x0D 00130 #define SRB_STATUS_BUS_RESET 0x0E 00131 #define SRB_STATUS_PARITY_ERROR 0x0F 00132 #define SRB_STATUS_REQUEST_SENSE_FAILED 0x10 00133 #define SRB_STATUS_NO_HBA 0x11 00134 #define SRB_STATUS_DATA_OVERRUN 0x12 00135 #define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13 00136 #define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14 00137 #define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15 00138 #define SRB_STATUS_REQUEST_FLUSHED 0x16 00139 #define SRB_STATUS_INVALID_LUN 0x20 00140 #define SRB_STATUS_INVALID_TARGET_ID 0x21 00141 #define SRB_STATUS_BAD_FUNCTION 0x22 00142 #define SRB_STATUS_ERROR_RECOVERY 0x23 00143 #define SRB_STATUS_NOT_POWERED 0x24 00144 #define SRB_STATUS_INTERNAL_ERROR 0x30 00145 00146 /* SCSI_REQUEST_BLOCK.SrbFlags constants */ 00147 #define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002 00148 #define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004 00149 #define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008 00150 #define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010 00151 #define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020 00152 #define SRB_FLAGS_DATA_IN 0x00000040 00153 #define SRB_FLAGS_DATA_OUT 0x00000080 00154 #define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000 00155 #define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT) 00156 #define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100 00157 #define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200 00158 #define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400 00159 #define SRB_FLAGS_IS_ACTIVE 0x00010000 00160 #define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000 00161 #define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000 00162 #define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000 00163 #define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000 00164 #define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000 00165 #define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000 00166 #define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000 00167 #define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000 00168 #define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000 00169 00170 typedef struct _SCSI_REQUEST_BLOCK { 00171 USHORT Length; 00172 UCHAR Function; 00173 UCHAR SrbStatus; 00174 UCHAR ScsiStatus; 00175 UCHAR PathId; 00176 UCHAR TargetId; 00177 UCHAR Lun; 00178 UCHAR QueueTag; 00179 UCHAR QueueAction; 00180 UCHAR CdbLength; 00181 UCHAR SenseInfoBufferLength; 00182 ULONG SrbFlags; 00183 ULONG DataTransferLength; 00184 ULONG TimeOutValue; 00185 PVOID DataBuffer; 00186 PVOID SenseInfoBuffer; 00187 struct _SCSI_REQUEST_BLOCK *NextSrb; 00188 PVOID OriginalRequest; 00189 PVOID SrbExtension; 00190 _ANONYMOUS_UNION union { 00191 ULONG InternalStatus; 00192 ULONG QueueSortKey; 00193 } DUMMYUNIONNAME; 00194 #if defined(_WIN64) 00195 ULONG Reserved; 00196 #endif 00197 UCHAR Cdb[16]; 00198 } SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK; 00199 00200 #define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK) 00201 00202 typedef struct _ACCESS_RANGE { 00203 SCSI_PHYSICAL_ADDRESS RangeStart; 00204 ULONG RangeLength; 00205 BOOLEAN RangeInMemory; 00206 } ACCESS_RANGE, *PACCESS_RANGE; 00207 00208 /* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */ 00209 #define SCSI_DMA64_MINIPORT_SUPPORTED 0x01 00210 #define SCSI_DMA64_SYSTEM_SUPPORTED 0x80 00211 00212 typedef struct _PORT_CONFIGURATION_INFORMATION { 00213 ULONG Length; 00214 ULONG SystemIoBusNumber; 00215 INTERFACE_TYPE AdapterInterfaceType; 00216 ULONG BusInterruptLevel; 00217 ULONG BusInterruptVector; 00218 KINTERRUPT_MODE InterruptMode; 00219 ULONG MaximumTransferLength; 00220 ULONG NumberOfPhysicalBreaks; 00221 ULONG DmaChannel; 00222 ULONG DmaPort; 00223 DMA_WIDTH DmaWidth; 00224 DMA_SPEED DmaSpeed; 00225 ULONG AlignmentMask; 00226 ULONG NumberOfAccessRanges; 00227 ACCESS_RANGE (*AccessRanges)[]; 00228 PVOID Reserved; 00229 UCHAR NumberOfBuses; 00230 UCHAR InitiatorBusId[8]; 00231 BOOLEAN ScatterGather; 00232 BOOLEAN Master; 00233 BOOLEAN CachesData; 00234 BOOLEAN AdapterScansDown; 00235 BOOLEAN AtdiskPrimaryClaimed; 00236 BOOLEAN AtdiskSecondaryClaimed; 00237 BOOLEAN Dma32BitAddresses; 00238 BOOLEAN DemandMode; 00239 BOOLEAN MapBuffers; 00240 BOOLEAN NeedPhysicalAddresses; 00241 BOOLEAN TaggedQueuing; 00242 BOOLEAN AutoRequestSense; 00243 BOOLEAN MultipleRequestPerLu; 00244 BOOLEAN ReceiveEvent; 00245 BOOLEAN RealModeInitialized; 00246 BOOLEAN BufferAccessScsiPortControlled; 00247 UCHAR MaximumNumberOfTargets; 00248 UCHAR ReservedUchars[2]; 00249 ULONG SlotNumber; 00250 ULONG BusInterruptLevel2; 00251 ULONG BusInterruptVector2; 00252 KINTERRUPT_MODE InterruptMode2; 00253 ULONG DmaChannel2; 00254 ULONG DmaPort2; 00255 DMA_WIDTH DmaWidth2; 00256 DMA_SPEED DmaSpeed2; 00257 ULONG DeviceExtensionSize; 00258 ULONG SpecificLuExtensionSize; 00259 ULONG SrbExtensionSize; 00260 UCHAR Dma64BitAddresses; 00261 BOOLEAN ResetTargetSupported; 00262 UCHAR MaximumNumberOfLogicalUnits; 00263 BOOLEAN WmiDataProvider; 00264 } PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION; 00265 00266 #define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION) 00267 00268 typedef enum _SCSI_NOTIFICATION_TYPE { 00269 RequestComplete, 00270 NextRequest, 00271 NextLuRequest, 00272 ResetDetected, 00273 CallDisableInterrupts, 00274 CallEnableInterrupts, 00275 RequestTimerCall, 00276 BusChangeDetected, 00277 WMIEvent, 00278 WMIReregister 00279 } SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE; 00280 00281 #ifdef __GNUC__ 00282 __extension__ /* enums limited to range of integer */ 00283 #endif 00284 typedef enum _SCSI_ADAPTER_CONTROL_TYPE { 00285 ScsiQuerySupportedControlTypes = 0, 00286 ScsiStopAdapter, 00287 ScsiRestartAdapter, 00288 ScsiSetBootConfig, 00289 ScsiSetRunningConfig, 00290 ScsiAdapterControlMax, 00291 MakeAdapterControlTypeSizeOfUlong = 0xffffffff 00292 } SCSI_ADAPTER_CONTROL_TYPE, *PSCSI_ADAPTER_CONTROL_TYPE; 00293 00294 typedef enum _SCSI_ADAPTER_CONTROL_STATUS { 00295 ScsiAdapterControlSuccess = 0, 00296 ScsiAdapterControlUnsuccessful 00297 } SCSI_ADAPTER_CONTROL_STATUS, *PSCSI_ADAPTER_CONTROL_STATUS; 00298 00299 typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST { 00300 ULONG MaxControlType; 00301 BOOLEAN SupportedTypeList[0]; 00302 } SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST; 00303 00304 typedef SCSI_ADAPTER_CONTROL_STATUS DDKAPI 00305 (*PHW_ADAPTER_CONTROL)( 00306 /*IN*/ PVOID DeviceExtension, 00307 /*IN*/ SCSI_ADAPTER_CONTROL_TYPE ControlType, 00308 /*IN*/ PVOID Parameters); 00309 00310 typedef BOOLEAN DDKAPI 00311 (*PHW_ADAPTER_STATE)( 00312 /*IN*/ PVOID DeviceExtension, 00313 /*IN*/ PVOID Context, 00314 /*IN*/ BOOLEAN SaveState); 00315 00316 #define SP_RETURN_NOT_FOUND 0 00317 #define SP_RETURN_FOUND 1 00318 #define SP_RETURN_ERROR 2 00319 #define SP_RETURN_BAD_CONFIG 3 00320 00321 typedef ULONG DDKAPI 00322 (*PHW_FIND_ADAPTER)( 00323 /*IN*/ PVOID DeviceExtension, 00324 /*IN*/ PVOID HwContext, 00325 /*IN*/ PVOID BusInformation, 00326 /*IN*/ PCHAR ArgumentString, 00327 /*IN OUT*/ PPORT_CONFIGURATION_INFORMATION ConfigInfo, 00328 /*OUT*/ PBOOLEAN Again); 00329 00330 typedef BOOLEAN DDKAPI 00331 (*PHW_INITIALIZE)( 00332 /*IN*/ PVOID DeviceExtension); 00333 00334 typedef BOOLEAN DDKAPI 00335 (*PHW_INTERRUPT)( 00336 /*IN*/ PVOID DeviceExtension); 00337 00338 typedef BOOLEAN DDKAPI 00339 (*PHW_RESET_BUS)( 00340 /*IN*/ PVOID DeviceExtension, 00341 /*IN*/ ULONG PathId); 00342 00343 typedef VOID DDKAPI 00344 (*PHW_DMA_STARTED)( 00345 /*IN*/ PVOID DeviceExtension); 00346 00347 typedef BOOLEAN DDKAPI 00348 (*PHW_STARTIO)( 00349 /*IN*/ PVOID DeviceExtension, 00350 /*IN*/ PSCSI_REQUEST_BLOCK Srb); 00351 00352 typedef VOID DDKAPI 00353 (*PHW_TIMER)( 00354 /*IN*/ PVOID DeviceExtension); 00355 00356 typedef struct _HW_INITIALIZATION_DATA { 00357 ULONG HwInitializationDataSize; 00358 INTERFACE_TYPE AdapterInterfaceType; 00359 PHW_INITIALIZE HwInitialize; 00360 PHW_STARTIO HwStartIo; 00361 PHW_INTERRUPT HwInterrupt; 00362 PHW_FIND_ADAPTER HwFindAdapter; 00363 PHW_RESET_BUS HwResetBus; 00364 PHW_DMA_STARTED HwDmaStarted; 00365 PHW_ADAPTER_STATE HwAdapterState; 00366 ULONG DeviceExtensionSize; 00367 ULONG SpecificLuExtensionSize; 00368 ULONG SrbExtensionSize; 00369 ULONG NumberOfAccessRanges; 00370 PVOID Reserved; 00371 BOOLEAN MapBuffers; 00372 BOOLEAN NeedPhysicalAddresses; 00373 BOOLEAN TaggedQueuing; 00374 BOOLEAN AutoRequestSense; 00375 BOOLEAN MultipleRequestPerLu; 00376 BOOLEAN ReceiveEvent; 00377 USHORT VendorIdLength; 00378 PVOID VendorId; 00379 USHORT ReservedUshort; 00380 USHORT DeviceIdLength; 00381 PVOID DeviceId; 00382 PHW_ADAPTER_CONTROL HwAdapterControl; 00383 } HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA; 00384 00385 SCSIPORTAPI 00386 VOID 00387 DDKAPI 00388 ScsiPortCompleteRequest( 00389 /*IN*/ PVOID HwDeviceExtension, 00390 /*IN*/ UCHAR PathId, 00391 /*IN*/ UCHAR TargetId, 00392 /*IN*/ UCHAR Lun, 00393 /*IN*/ UCHAR SrbStatus); 00394 00395 /* 00396 * ULONG 00397 * ScsiPortConvertPhysicalAddressToUlong( 00398 * IN SCSI_PHYSICAL_ADDRESS Address); 00399 */ 00400 #define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart) 00401 00402 SCSIPORTAPI 00403 SCSI_PHYSICAL_ADDRESS 00404 DDKAPI 00405 ScsiPortConvertUlongToPhysicalAddress( 00406 /*IN*/ ULONG UlongAddress); 00407 00408 SCSIPORTAPI 00409 VOID 00410 DDKAPI 00411 ScsiPortFlushDma( 00412 /*IN*/ PVOID DeviceExtension); 00413 00414 SCSIPORTAPI 00415 VOID 00416 DDKAPI 00417 ScsiPortFreeDeviceBase( 00418 /*IN*/ PVOID HwDeviceExtension, 00419 /*IN*/ PVOID MappedAddress); 00420 00421 SCSIPORTAPI 00422 ULONG 00423 DDKAPI 00424 ScsiPortGetBusData( 00425 /*IN*/ PVOID DeviceExtension, 00426 /*IN*/ ULONG BusDataType, 00427 /*IN*/ ULONG SystemIoBusNumber, 00428 /*IN*/ ULONG SlotNumber, 00429 /*IN*/ PVOID Buffer, 00430 /*IN*/ ULONG Length); 00431 00432 SCSIPORTAPI 00433 PVOID 00434 DDKAPI 00435 ScsiPortGetDeviceBase( 00436 /*IN*/ PVOID HwDeviceExtension, 00437 /*IN*/ INTERFACE_TYPE BusType, 00438 /*IN*/ ULONG SystemIoBusNumber, 00439 /*IN*/ SCSI_PHYSICAL_ADDRESS IoAddress, 00440 /*IN*/ ULONG NumberOfBytes, 00441 /*IN*/ BOOLEAN InIoSpace); 00442 00443 SCSIPORTAPI 00444 PVOID 00445 DDKAPI 00446 ScsiPortGetLogicalUnit( 00447 /*IN*/ PVOID HwDeviceExtension, 00448 /*IN*/ UCHAR PathId, 00449 /*IN*/ UCHAR TargetId, 00450 /*IN*/ UCHAR Lun); 00451 00452 SCSIPORTAPI 00453 SCSI_PHYSICAL_ADDRESS 00454 DDKAPI 00455 ScsiPortGetPhysicalAddress( 00456 /*IN*/ PVOID HwDeviceExtension, 00457 /*IN*/ PSCSI_REQUEST_BLOCK Srb /*OPTIONAL*/, 00458 /*IN*/ PVOID VirtualAddress, 00459 /*OUT*/ ULONG *Length); 00460 00461 SCSIPORTAPI 00462 PSCSI_REQUEST_BLOCK 00463 DDKAPI 00464 ScsiPortGetSrb( 00465 /*IN*/ PVOID DeviceExtension, 00466 /*IN*/ UCHAR PathId, 00467 /*IN*/ UCHAR TargetId, 00468 /*IN*/ UCHAR Lun, 00469 /*IN*/ LONG QueueTag); 00470 00471 SCSIPORTAPI 00472 PVOID 00473 DDKAPI 00474 ScsiPortGetUncachedExtension( 00475 /*IN*/ PVOID HwDeviceExtension, 00476 /*IN*/ PPORT_CONFIGURATION_INFORMATION ConfigInfo, 00477 /*IN*/ ULONG NumberOfBytes); 00478 00479 SCSIPORTAPI 00480 PVOID 00481 DDKAPI 00482 ScsiPortGetVirtualAddress( 00483 /*IN*/ PVOID HwDeviceExtension, 00484 /*IN*/ SCSI_PHYSICAL_ADDRESS PhysicalAddress); 00485 00486 SCSIPORTAPI 00487 ULONG 00488 DDKAPI 00489 ScsiPortInitialize( 00490 /*IN*/ PVOID Argument1, 00491 /*IN*/ PVOID Argument2, 00492 /*IN*/ struct _HW_INITIALIZATION_DATA *HwInitializationData, 00493 /*IN*/ PVOID HwContext /*OPTIONAL*/); 00494 00495 SCSIPORTAPI 00496 VOID 00497 DDKAPI 00498 ScsiPortIoMapTransfer( 00499 /*IN*/ PVOID HwDeviceExtension, 00500 /*IN*/ PSCSI_REQUEST_BLOCK Srb, 00501 /*IN*/ ULONG LogicalAddress, 00502 /*IN*/ ULONG Length); 00503 00504 SCSIPORTAPI 00505 VOID 00506 DDKAPI 00507 ScsiPortLogError( 00508 /*IN*/ PVOID HwDeviceExtension, 00509 /*IN*/ PSCSI_REQUEST_BLOCK Srb /*OPTIONAL*/, 00510 /*IN*/ UCHAR PathId, 00511 /*IN*/ UCHAR TargetId, 00512 /*IN*/ UCHAR Lun, 00513 /*IN*/ ULONG ErrorCode, 00514 /*IN*/ ULONG UniqueId); 00515 00516 SCSIPORTAPI 00517 VOID 00518 DDKAPI 00519 ScsiPortMoveMemory( 00520 /*IN*/ PVOID WriteBuffer, 00521 /*IN*/ PVOID ReadBuffer, 00522 /*IN*/ ULONG Length); 00523 00524 SCSIPORTAPI 00525 VOID 00526 DDKCDECLAPI 00527 ScsiPortNotification( 00528 /*IN*/ SCSI_NOTIFICATION_TYPE NotificationType, 00529 /*IN*/ PVOID HwDeviceExtension, 00530 /*IN*/ ...); 00531 00532 SCSIPORTAPI 00533 VOID 00534 DDKAPI 00535 ScsiPortQuerySystemTime( 00536 /*OUT*/ PLARGE_INTEGER CurrentTime); 00537 00538 SCSIPORTAPI 00539 VOID 00540 DDKAPI 00541 ScsiPortReadPortBufferUchar( 00542 /*IN*/ PUCHAR Port, 00543 /*IN*/ PUCHAR Buffer, 00544 /*IN*/ ULONG Count); 00545 00546 SCSIPORTAPI 00547 VOID 00548 DDKAPI 00549 ScsiPortReadPortBufferUlong( 00550 /*IN*/ PULONG Port, 00551 /*IN*/ PULONG Buffer, 00552 /*IN*/ ULONG Count); 00553 00554 SCSIPORTAPI 00555 VOID 00556 DDKAPI 00557 ScsiPortReadPortBufferUshort( 00558 /*IN*/ PUSHORT Port, 00559 /*IN*/ PUSHORT Buffer, 00560 /*IN*/ ULONG Count); 00561 00562 SCSIPORTAPI 00563 UCHAR 00564 DDKAPI 00565 ScsiPortReadPortUchar( 00566 /*IN*/ PUCHAR Port); 00567 00568 SCSIPORTAPI 00569 ULONG 00570 DDKAPI 00571 ScsiPortReadPortUlong( 00572 /*IN*/ PULONG Port); 00573 00574 SCSIPORTAPI 00575 USHORT 00576 DDKAPI 00577 ScsiPortReadPortUshort( 00578 /*IN*/ PUSHORT Port); 00579 00580 SCSIPORTAPI 00581 VOID 00582 DDKAPI 00583 ScsiPortReadRegisterBufferUchar( 00584 /*IN*/ PUCHAR Register, 00585 /*IN*/ PUCHAR Buffer, 00586 /*IN*/ ULONG Count); 00587 00588 SCSIPORTAPI 00589 VOID 00590 DDKAPI 00591 ScsiPortReadRegisterBufferUlong( 00592 /*IN*/ PULONG Register, 00593 /*IN*/ PULONG Buffer, 00594 /*IN*/ ULONG Count); 00595 00596 SCSIPORTAPI 00597 VOID 00598 DDKAPI 00599 ScsiPortReadRegisterBufferUshort( 00600 /*IN*/ PUSHORT Register, 00601 /*IN*/ PUSHORT Buffer, 00602 /*IN*/ ULONG Count); 00603 00604 SCSIPORTAPI 00605 UCHAR 00606 DDKAPI 00607 ScsiPortReadRegisterUchar( 00608 /*IN*/ PUCHAR Register); 00609 00610 SCSIPORTAPI 00611 ULONG 00612 DDKAPI 00613 ScsiPortReadRegisterUlong( 00614 /*IN*/ PULONG Register); 00615 00616 SCSIPORTAPI 00617 USHORT 00618 DDKAPI 00619 ScsiPortReadRegisterUshort( 00620 /*IN*/ PUSHORT Register); 00621 00622 SCSIPORTAPI 00623 ULONG 00624 DDKAPI 00625 ScsiPortSetBusDataByOffset( 00626 /*IN*/ PVOID DeviceExtension, 00627 /*IN*/ ULONG BusDataType, 00628 /*IN*/ ULONG SystemIoBusNumber, 00629 /*IN*/ ULONG SlotNumber, 00630 /*IN*/ PVOID Buffer, 00631 /*IN*/ ULONG Offset, 00632 /*IN*/ ULONG Length); 00633 00634 SCSIPORTAPI 00635 VOID 00636 DDKAPI 00637 ScsiPortStallExecution( 00638 /*IN*/ ULONG Delay); 00639 00640 SCSIPORTAPI 00641 BOOLEAN 00642 DDKAPI 00643 ScsiPortValidateRange( 00644 /*IN*/ PVOID HwDeviceExtension, 00645 /*IN*/ INTERFACE_TYPE BusType, 00646 /*IN*/ ULONG SystemIoBusNumber, 00647 /*IN*/ SCSI_PHYSICAL_ADDRESS IoAddress, 00648 /*IN*/ ULONG NumberOfBytes, 00649 /*IN*/ BOOLEAN InIoSpace); 00650 00651 SCSIPORTAPI 00652 VOID 00653 DDKAPI 00654 ScsiPortWritePortBufferUchar( 00655 /*IN*/ PUCHAR Port, 00656 /*IN*/ PUCHAR Buffer, 00657 /*IN*/ ULONG Count); 00658 00659 SCSIPORTAPI 00660 VOID 00661 DDKAPI 00662 ScsiPortWritePortBufferUlong( 00663 /*IN*/ PULONG Port, 00664 /*IN*/ PULONG Buffer, 00665 /*IN*/ ULONG Count); 00666 00667 SCSIPORTAPI 00668 VOID 00669 DDKAPI 00670 ScsiPortWritePortBufferUshort( 00671 /*IN*/ PUSHORT Port, 00672 /*IN*/ PUSHORT Buffer, 00673 /*IN*/ ULONG Count); 00674 00675 SCSIPORTAPI 00676 VOID 00677 DDKAPI 00678 ScsiPortWritePortUchar( 00679 /*IN*/ PUCHAR Port, 00680 /*IN*/ UCHAR Value); 00681 00682 SCSIPORTAPI 00683 VOID 00684 DDKAPI 00685 ScsiPortWritePortUlong( 00686 /*IN*/ PULONG Port, 00687 /*IN*/ ULONG Value); 00688 00689 SCSIPORTAPI 00690 VOID 00691 DDKAPI 00692 ScsiPortWritePortUshort( 00693 /*IN*/ PUSHORT Port, 00694 /*IN*/ USHORT Value); 00695 00696 SCSIPORTAPI 00697 VOID 00698 DDKAPI 00699 ScsiPortWriteRegisterBufferUchar( 00700 /*IN*/ PUCHAR Register, 00701 /*IN*/ PUCHAR Buffer, 00702 /*IN*/ ULONG Count); 00703 00704 SCSIPORTAPI 00705 VOID 00706 DDKAPI 00707 ScsiPortWriteRegisterBufferUlong( 00708 /*IN*/ PULONG Register, 00709 /*IN*/ PULONG Buffer, 00710 /*IN*/ ULONG Count); 00711 00712 SCSIPORTAPI 00713 VOID 00714 DDKAPI 00715 ScsiPortWriteRegisterBufferUshort( 00716 /*IN*/ PUSHORT Register, 00717 /*IN*/ PUSHORT Buffer, 00718 /*IN*/ ULONG Count); 00719 00720 SCSIPORTAPI 00721 VOID 00722 DDKAPI 00723 ScsiPortWriteRegisterUchar( 00724 /*IN*/ PUCHAR Register, 00725 /*IN*/ ULONG Value); 00726 00727 SCSIPORTAPI 00728 VOID 00729 DDKAPI 00730 ScsiPortWriteRegisterUlong( 00731 /*IN*/ PULONG Register, 00732 /*IN*/ ULONG Value); 00733 00734 SCSIPORTAPI 00735 VOID 00736 DDKAPI 00737 ScsiPortWriteRegisterUshort( 00738 /*IN*/ PUSHORT Register, 00739 /*IN*/ USHORT Value); 00740 00741 SCSIPORTAPI 00742 VOID 00743 DDKCDECLAPI 00744 ScsiDebugPrint( 00745 /*IN*/ ULONG DebugPrintLevel, 00746 /*IN*/ PCCHAR DebugMessage, 00747 /*IN*/ ...); 00748 00749 #ifdef __cplusplus 00750 } 00751 #endif 00752 00753 #endif /* __SRB_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2