Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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
