| 1 | /*
 | 
|---|
| 2 |  * scsi.h
 | 
|---|
| 3 |  *
 | 
|---|
| 4 |  * Interface between SCSI miniport drivers and the SCSI port driver.
 | 
|---|
| 5 |  *
 | 
|---|
| 6 |  * This file is part of the w32api package.
 | 
|---|
| 7 |  *
 | 
|---|
| 8 |  * Contributors:
 | 
|---|
| 9 |  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
 | 
|---|
| 10 |  *
 | 
|---|
| 11 |  * THIS SOFTWARE IS NOT COPYRIGHTED
 | 
|---|
| 12 |  *
 | 
|---|
| 13 |  * This source code is offered for use in the public domain. You may
 | 
|---|
| 14 |  * use, modify or distribute it freely.
 | 
|---|
| 15 |  *
 | 
|---|
| 16 |  * This code is distributed in the hope that it will be useful but
 | 
|---|
| 17 |  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 | 
|---|
| 18 |  * DISCLAIMED. This includes but is not limited to warranties of
 | 
|---|
| 19 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
|---|
| 20 |  *
 | 
|---|
| 21 |  */
 | 
|---|
| 22 | 
 | 
|---|
| 23 | #ifndef __SRB_H
 | 
|---|
| 24 | #define __SRB_H
 | 
|---|
| 25 | 
 | 
|---|
| 26 | #if __GNUC__ >=3
 | 
|---|
| 27 | #pragma GCC system_header
 | 
|---|
| 28 | #endif
 | 
|---|
| 29 | 
 | 
|---|
| 30 | #ifdef __cplusplus
 | 
|---|
| 31 | extern "C" {
 | 
|---|
| 32 | #endif
 | 
|---|
| 33 | 
 | 
|---|
| 34 | #include "ntddk.h"
 | 
|---|
| 35 | 
 | 
|---|
| 36 | #if defined(_SCSIPORT_)
 | 
|---|
| 37 |   #define SCSIPORTAPI DECLSPEC_EXPORT
 | 
|---|
| 38 | #else
 | 
|---|
| 39 |   #define SCSIPORTAPI DECLSPEC_IMPORT
 | 
|---|
| 40 | #endif
 | 
|---|
| 41 | 
 | 
|---|
| 42 | #ifdef DBG
 | 
|---|
| 43 | #define DebugPrint(x) ScsiDebugPrint x
 | 
|---|
| 44 | #else
 | 
|---|
| 45 | #define DebugPrint(x)
 | 
|---|
| 46 | #endif
 | 
|---|
| 47 | 
 | 
|---|
| 48 | typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS;
 | 
|---|
| 49 | 
 | 
|---|
| 50 | #define SP_UNINITIALIZED_VALUE            ((ULONG) ~0)
 | 
|---|
| 51 | #define SP_UNTAGGED                       ((UCHAR) ~0)
 | 
|---|
| 52 | 
 | 
|---|
| 53 | #define SRB_SIMPLE_TAG_REQUEST            0x20
 | 
|---|
| 54 | #define SRB_HEAD_OF_QUEUE_TAG_REQUEST     0x21
 | 
|---|
| 55 | #define SRB_ORDERED_QUEUE_TAG_REQUEST     0x22
 | 
|---|
| 56 | 
 | 
|---|
| 57 | #define SRB_STATUS_QUEUE_FROZEN           0x40
 | 
|---|
| 58 | #define SRB_STATUS_AUTOSENSE_VALID        0x80
 | 
|---|
| 59 | 
 | 
|---|
| 60 | #define SRB_STATUS(Status) \
 | 
|---|
| 61 |   (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
 | 
|---|
| 62 | 
 | 
|---|
| 63 | #define MAXIMUM_CDB_SIZE                  12
 | 
|---|
| 64 | 
 | 
|---|
| 65 | #ifdef DBG
 | 
|---|
| 66 | #define SCSI_PORT_SIGNATURE               0x54524f50
 | 
|---|
| 67 | #endif
 | 
|---|
| 68 | 
 | 
|---|
| 69 | 
 | 
|---|
| 70 | #define SCSI_MAXIMUM_LOGICAL_UNITS        8
 | 
|---|
| 71 | #define SCSI_MAXIMUM_TARGETS_PER_BUS      128
 | 
|---|
| 72 | #define SCSI_MAXIMUM_LUNS_PER_TARGET      255
 | 
|---|
| 73 | #define SCSI_MAXIMUM_BUSES                8
 | 
|---|
| 74 | #define SCSI_MINIMUM_PHYSICAL_BREAKS      16
 | 
|---|
| 75 | #define SCSI_MAXIMUM_PHYSICAL_BREAKS      255
 | 
|---|
| 76 | #define SCSI_MAXIMUM_TARGETS              8
 | 
|---|
| 77 | 
 | 
|---|
| 78 | #define SRB_FUNCTION_WMI                  0x17
 | 
|---|
| 79 | 
 | 
|---|
| 80 | #define SRB_WMI_FLAGS_ADAPTER_REQUEST     0x0001
 | 
|---|
| 81 | 
 | 
|---|
| 82 | #define SP_BUS_PARITY_ERROR               0x0001
 | 
|---|
| 83 | #define SP_UNEXPECTED_DISCONNECT          0x0002
 | 
|---|
| 84 | #define SP_INVALID_RESELECTION            0x0003
 | 
|---|
| 85 | #define SP_BUS_TIME_OUT                   0x0004
 | 
|---|
| 86 | #define SP_PROTOCOL_ERROR                 0x0005
 | 
|---|
| 87 | #define SP_INTERNAL_ADAPTER_ERROR         0x0006
 | 
|---|
| 88 | #define SP_REQUEST_TIMEOUT                0x0007
 | 
|---|
| 89 | #define SP_IRQ_NOT_RESPONDING             0x0008
 | 
|---|
| 90 | #define SP_BAD_FW_WARNING                 0x0009
 | 
|---|
| 91 | #define SP_BAD_FW_ERROR                   0x000a
 | 
|---|
| 92 | #define SP_LOST_WMI_MINIPORT_REQUEST      0x000b
 | 
|---|
| 93 | 
 | 
|---|
| 94 | /* SCSI_REQUEST_BLOCK.Function constants */
 | 
|---|
| 95 | #define SRB_FUNCTION_EXECUTE_SCSI         0x00
 | 
|---|
| 96 | #define SRB_FUNCTION_CLAIM_DEVICE         0x01
 | 
|---|
| 97 | #define SRB_FUNCTION_IO_CONTROL           0x02
 | 
|---|
| 98 | #define SRB_FUNCTION_RECEIVE_EVENT        0x03
 | 
|---|
| 99 | #define SRB_FUNCTION_RELEASE_QUEUE        0x04
 | 
|---|
| 100 | #define SRB_FUNCTION_ATTACH_DEVICE        0x05
 | 
|---|
| 101 | #define SRB_FUNCTION_RELEASE_DEVICE       0x06
 | 
|---|
| 102 | #define SRB_FUNCTION_SHUTDOWN             0x07
 | 
|---|
| 103 | #define SRB_FUNCTION_FLUSH                0x08
 | 
|---|
| 104 | #define SRB_FUNCTION_ABORT_COMMAND        0x10
 | 
|---|
| 105 | #define SRB_FUNCTION_RELEASE_RECOVERY     0x11
 | 
|---|
| 106 | #define SRB_FUNCTION_RESET_BUS            0x12
 | 
|---|
| 107 | #define SRB_FUNCTION_RESET_DEVICE         0x13
 | 
|---|
| 108 | #define SRB_FUNCTION_TERMINATE_IO         0x14
 | 
|---|
| 109 | #define SRB_FUNCTION_FLUSH_QUEUE          0x15
 | 
|---|
| 110 | #define SRB_FUNCTION_REMOVE_DEVICE        0x16
 | 
|---|
| 111 | #define SRB_FUNCTION_WMI                  0x17
 | 
|---|
| 112 | #define SRB_FUNCTION_LOCK_QUEUE           0x18
 | 
|---|
| 113 | #define SRB_FUNCTION_UNLOCK_QUEUE         0x19
 | 
|---|
| 114 | #define SRB_FUNCTION_RESET_LOGICAL_UNIT   0x20
 | 
|---|
| 115 | 
 | 
|---|
| 116 | /* SCSI_REQUEST_BLOCK.SrbStatus constants */
 | 
|---|
| 117 | #define SRB_STATUS_PENDING                0x00
 | 
|---|
| 118 | #define SRB_STATUS_SUCCESS                0x01
 | 
|---|
| 119 | #define SRB_STATUS_ABORTED                0x02
 | 
|---|
| 120 | #define SRB_STATUS_ABORT_FAILED           0x03
 | 
|---|
| 121 | #define SRB_STATUS_ERROR                  0x04
 | 
|---|
| 122 | #define SRB_STATUS_BUSY                   0x05
 | 
|---|
| 123 | #define SRB_STATUS_INVALID_REQUEST        0x06
 | 
|---|
| 124 | #define SRB_STATUS_INVALID_PATH_ID        0x07
 | 
|---|
| 125 | #define SRB_STATUS_NO_DEVICE              0x08
 | 
|---|
| 126 | #define SRB_STATUS_TIMEOUT                0x09
 | 
|---|
| 127 | #define SRB_STATUS_SELECTION_TIMEOUT      0x0A
 | 
|---|
| 128 | #define SRB_STATUS_COMMAND_TIMEOUT        0x0B
 | 
|---|
| 129 | #define SRB_STATUS_MESSAGE_REJECTED       0x0D
 | 
|---|
| 130 | #define SRB_STATUS_BUS_RESET              0x0E
 | 
|---|
| 131 | #define SRB_STATUS_PARITY_ERROR           0x0F
 | 
|---|
| 132 | #define SRB_STATUS_REQUEST_SENSE_FAILED   0x10
 | 
|---|
| 133 | #define SRB_STATUS_NO_HBA                 0x11
 | 
|---|
| 134 | #define SRB_STATUS_DATA_OVERRUN           0x12
 | 
|---|
| 135 | #define SRB_STATUS_UNEXPECTED_BUS_FREE    0x13
 | 
|---|
| 136 | #define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
 | 
|---|
| 137 | #define SRB_STATUS_BAD_SRB_BLOCK_LENGTH   0x15
 | 
|---|
| 138 | #define SRB_STATUS_REQUEST_FLUSHED        0x16
 | 
|---|
| 139 | #define SRB_STATUS_INVALID_LUN            0x20
 | 
|---|
| 140 | #define SRB_STATUS_INVALID_TARGET_ID      0x21
 | 
|---|
| 141 | #define SRB_STATUS_BAD_FUNCTION           0x22
 | 
|---|
| 142 | #define SRB_STATUS_ERROR_RECOVERY         0x23
 | 
|---|
| 143 | #define SRB_STATUS_NOT_POWERED            0x24
 | 
|---|
| 144 | #define SRB_STATUS_INTERNAL_ERROR         0x30
 | 
|---|
| 145 | 
 | 
|---|
| 146 | /* SCSI_REQUEST_BLOCK.SrbFlags constants */
 | 
|---|
| 147 | #define SRB_FLAGS_QUEUE_ACTION_ENABLE       0x00000002
 | 
|---|
| 148 | #define SRB_FLAGS_DISABLE_DISCONNECT        0x00000004
 | 
|---|
| 149 | #define SRB_FLAGS_DISABLE_SYNCH_TRANSFER    0x00000008
 | 
|---|
| 150 | #define SRB_FLAGS_BYPASS_FROZEN_QUEUE       0x00000010
 | 
|---|
| 151 | #define SRB_FLAGS_DISABLE_AUTOSENSE         0x00000020
 | 
|---|
| 152 | #define SRB_FLAGS_DATA_IN                   0x00000040
 | 
|---|
| 153 | #define SRB_FLAGS_DATA_OUT                  0x00000080
 | 
|---|
| 154 | #define SRB_FLAGS_NO_DATA_TRANSFER          0x00000000
 | 
|---|
| 155 | #define SRB_FLAGS_UNSPECIFIED_DIRECTION     (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
 | 
|---|
| 156 | #define SRB_FLAGS_NO_QUEUE_FREEZE           0x00000100
 | 
|---|
| 157 | #define SRB_FLAGS_ADAPTER_CACHE_ENABLE      0x00000200
 | 
|---|
| 158 | #define SRB_FLAGS_FREE_SENSE_BUFFER         0x00000400
 | 
|---|
| 159 | #define SRB_FLAGS_IS_ACTIVE                 0x00010000
 | 
|---|
| 160 | #define SRB_FLAGS_ALLOCATED_FROM_ZONE       0x00020000
 | 
|---|
| 161 | #define SRB_FLAGS_SGLIST_FROM_POOL          0x00040000
 | 
|---|
| 162 | #define SRB_FLAGS_BYPASS_LOCKED_QUEUE       0x00080000
 | 
|---|
| 163 | #define SRB_FLAGS_NO_KEEP_AWAKE             0x00100000
 | 
|---|
| 164 | #define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE    0x00200000
 | 
|---|
| 165 | #define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT  0x00400000
 | 
|---|
| 166 | #define SRB_FLAGS_DONT_START_NEXT_PACKET    0x00800000
 | 
|---|
| 167 | #define SRB_FLAGS_PORT_DRIVER_RESERVED      0x0F000000
 | 
|---|
| 168 | #define SRB_FLAGS_CLASS_DRIVER_RESERVED     0xF0000000
 | 
|---|
| 169 | 
 | 
|---|
| 170 | typedef struct _SCSI_REQUEST_BLOCK { 
 | 
|---|
| 171 |   USHORT  Length; 
 | 
|---|
| 172 |   UCHAR  Function; 
 | 
|---|
| 173 |   UCHAR  SrbStatus; 
 | 
|---|
| 174 |   UCHAR  ScsiStatus; 
 | 
|---|
| 175 |   UCHAR  PathId; 
 | 
|---|
| 176 |   UCHAR  TargetId; 
 | 
|---|
| 177 |   UCHAR  Lun; 
 | 
|---|
| 178 |   UCHAR  QueueTag; 
 | 
|---|
| 179 |   UCHAR  QueueAction; 
 | 
|---|
| 180 |   UCHAR  CdbLength; 
 | 
|---|
| 181 |   UCHAR  SenseInfoBufferLength; 
 | 
|---|
| 182 |   ULONG  SrbFlags; 
 | 
|---|
| 183 |   ULONG  DataTransferLength; 
 | 
|---|
| 184 |   ULONG  TimeOutValue; 
 | 
|---|
| 185 |   PVOID  DataBuffer; 
 | 
|---|
| 186 |   PVOID  SenseInfoBuffer; 
 | 
|---|
| 187 |   struct _SCSI_REQUEST_BLOCK  *NextSrb; 
 | 
|---|
| 188 |   PVOID  OriginalRequest; 
 | 
|---|
| 189 |   PVOID  SrbExtension; 
 | 
|---|
| 190 |   _ANONYMOUS_UNION union {
 | 
|---|
| 191 |     ULONG  InternalStatus;
 | 
|---|
| 192 |     ULONG  QueueSortKey;
 | 
|---|
| 193 |   } DUMMYUNIONNAME; 
 | 
|---|
| 194 | #if defined(_WIN64)
 | 
|---|
| 195 |   ULONG Reserved;
 | 
|---|
| 196 | #endif
 | 
|---|
| 197 |   UCHAR  Cdb[16]; 
 | 
|---|
| 198 | } SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK; 
 | 
|---|
| 199 | 
 | 
|---|
| 200 | #define SCSI_REQUEST_BLOCK_SIZE           sizeof(SCSI_REQUEST_BLOCK)
 | 
|---|
| 201 | 
 | 
|---|
| 202 | typedef struct _ACCESS_RANGE { 
 | 
|---|
| 203 |   SCSI_PHYSICAL_ADDRESS  RangeStart; 
 | 
|---|
| 204 |   ULONG  RangeLength; 
 | 
|---|
| 205 |   BOOLEAN  RangeInMemory; 
 | 
|---|
| 206 | } ACCESS_RANGE, *PACCESS_RANGE;
 | 
|---|
| 207 | 
 | 
|---|
| 208 | /* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */
 | 
|---|
| 209 | #define SCSI_DMA64_MINIPORT_SUPPORTED     0x01
 | 
|---|
| 210 | #define SCSI_DMA64_SYSTEM_SUPPORTED       0x80
 | 
|---|
| 211 | 
 | 
|---|
| 212 | typedef struct _PORT_CONFIGURATION_INFORMATION {
 | 
|---|
| 213 |   ULONG  Length;
 | 
|---|
| 214 |   ULONG  SystemIoBusNumber;
 | 
|---|
| 215 |   INTERFACE_TYPE  AdapterInterfaceType;
 | 
|---|
| 216 |   ULONG  BusInterruptLevel;
 | 
|---|
| 217 |   ULONG  BusInterruptVector;
 | 
|---|
| 218 |   KINTERRUPT_MODE  InterruptMode;
 | 
|---|
| 219 |   ULONG  MaximumTransferLength;
 | 
|---|
| 220 |   ULONG  NumberOfPhysicalBreaks;
 | 
|---|
| 221 |   ULONG  DmaChannel;
 | 
|---|
| 222 |   ULONG  DmaPort;
 | 
|---|
| 223 |   DMA_WIDTH  DmaWidth;
 | 
|---|
| 224 |   DMA_SPEED  DmaSpeed;
 | 
|---|
| 225 |   ULONG  AlignmentMask;
 | 
|---|
| 226 |   ULONG  NumberOfAccessRanges;
 | 
|---|
| 227 |   ACCESS_RANGE  (*AccessRanges)[];
 | 
|---|
| 228 |   PVOID  Reserved;
 | 
|---|
| 229 |   UCHAR  NumberOfBuses;
 | 
|---|
| 230 |   UCHAR  InitiatorBusId[8];
 | 
|---|
| 231 |   BOOLEAN  ScatterGather;
 | 
|---|
| 232 |   BOOLEAN  Master;
 | 
|---|
| 233 |   BOOLEAN  CachesData;
 | 
|---|
| 234 |   BOOLEAN  AdapterScansDown;
 | 
|---|
| 235 |   BOOLEAN  AtdiskPrimaryClaimed;
 | 
|---|
| 236 |   BOOLEAN  AtdiskSecondaryClaimed;
 | 
|---|
| 237 |   BOOLEAN  Dma32BitAddresses;
 | 
|---|
| 238 |   BOOLEAN  DemandMode;
 | 
|---|
| 239 |   BOOLEAN  MapBuffers;
 | 
|---|
| 240 |   BOOLEAN  NeedPhysicalAddresses;
 | 
|---|
| 241 |   BOOLEAN  TaggedQueuing;
 | 
|---|
| 242 |   BOOLEAN  AutoRequestSense;
 | 
|---|
| 243 |   BOOLEAN  MultipleRequestPerLu;
 | 
|---|
| 244 |   BOOLEAN  ReceiveEvent;
 | 
|---|
| 245 |   BOOLEAN  RealModeInitialized;
 | 
|---|
| 246 |   BOOLEAN  BufferAccessScsiPortControlled;
 | 
|---|
| 247 |   UCHAR  MaximumNumberOfTargets;
 | 
|---|
| 248 |   UCHAR  ReservedUchars[2];
 | 
|---|
| 249 |   ULONG  SlotNumber;
 | 
|---|
| 250 |   ULONG  BusInterruptLevel2;
 | 
|---|
| 251 |   ULONG  BusInterruptVector2;
 | 
|---|
| 252 |   KINTERRUPT_MODE  InterruptMode2;
 | 
|---|
| 253 |   ULONG  DmaChannel2;
 | 
|---|
| 254 |   ULONG  DmaPort2;
 | 
|---|
| 255 |   DMA_WIDTH  DmaWidth2;
 | 
|---|
| 256 |   DMA_SPEED  DmaSpeed2;
 | 
|---|
| 257 |   ULONG  DeviceExtensionSize;
 | 
|---|
| 258 |   ULONG  SpecificLuExtensionSize;
 | 
|---|
| 259 |   ULONG  SrbExtensionSize;
 | 
|---|
| 260 |   UCHAR  Dma64BitAddresses;
 | 
|---|
| 261 |   BOOLEAN  ResetTargetSupported;
 | 
|---|
| 262 |   UCHAR  MaximumNumberOfLogicalUnits;
 | 
|---|
| 263 |   BOOLEAN  WmiDataProvider;
 | 
|---|
| 264 | } PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
 | 
|---|
| 265 | 
 | 
|---|
| 266 | #define CONFIG_INFO_VERSION_2             sizeof(PORT_CONFIGURATION_INFORMATION)
 | 
|---|
| 267 | 
 | 
|---|
| 268 | typedef enum _SCSI_NOTIFICATION_TYPE {
 | 
|---|
| 269 |         RequestComplete,
 | 
|---|
| 270 |         NextRequest,
 | 
|---|
| 271 |         NextLuRequest,
 | 
|---|
| 272 |         ResetDetected,
 | 
|---|
| 273 |         CallDisableInterrupts,
 | 
|---|
| 274 |         CallEnableInterrupts,
 | 
|---|
| 275 |         RequestTimerCall,
 | 
|---|
| 276 |         BusChangeDetected,
 | 
|---|
| 277 |         WMIEvent,
 | 
|---|
| 278 |         WMIReregister
 | 
|---|
| 279 | } SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE;
 | 
|---|
| 280 | 
 | 
|---|
| 281 | #ifdef __GNUC__
 | 
|---|
| 282 | __extension__ /* enums limited to range of integer */
 | 
|---|
| 283 | #endif
 | 
|---|
| 284 | typedef enum _SCSI_ADAPTER_CONTROL_TYPE {
 | 
|---|
| 285 |         ScsiQuerySupportedControlTypes = 0,
 | 
|---|
| 286 |         ScsiStopAdapter,
 | 
|---|
| 287 |         ScsiRestartAdapter,
 | 
|---|
| 288 |         ScsiSetBootConfig,
 | 
|---|
| 289 |         ScsiSetRunningConfig,
 | 
|---|
| 290 |         ScsiAdapterControlMax,
 | 
|---|
| 291 |         MakeAdapterControlTypeSizeOfUlong = 0xffffffff
 | 
|---|
| 292 | } SCSI_ADAPTER_CONTROL_TYPE, *PSCSI_ADAPTER_CONTROL_TYPE;
 | 
|---|
| 293 | 
 | 
|---|
| 294 | typedef enum _SCSI_ADAPTER_CONTROL_STATUS {
 | 
|---|
| 295 |         ScsiAdapterControlSuccess = 0,
 | 
|---|
| 296 |         ScsiAdapterControlUnsuccessful
 | 
|---|
| 297 | } SCSI_ADAPTER_CONTROL_STATUS, *PSCSI_ADAPTER_CONTROL_STATUS;
 | 
|---|
| 298 | 
 | 
|---|
| 299 | typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST {
 | 
|---|
| 300 |         ULONG MaxControlType;
 | 
|---|
| 301 |         BOOLEAN SupportedTypeList[0];
 | 
|---|
| 302 | } SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST;
 | 
|---|
| 303 | 
 | 
|---|
| 304 | typedef SCSI_ADAPTER_CONTROL_STATUS DDKAPI
 | 
|---|
| 305 | (*PHW_ADAPTER_CONTROL)(
 | 
|---|
| 306 |         IN PVOID DeviceExtension,
 | 
|---|
| 307 |         IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
 | 
|---|
| 308 |         IN PVOID Parameters);
 | 
|---|
| 309 | 
 | 
|---|
| 310 | typedef BOOLEAN DDKAPI
 | 
|---|
| 311 | (*PHW_ADAPTER_STATE)(
 | 
|---|
| 312 |         IN PVOID DeviceExtension,
 | 
|---|
| 313 |         IN PVOID Context,
 | 
|---|
| 314 |         IN BOOLEAN SaveState);
 | 
|---|
| 315 | 
 | 
|---|
| 316 | #define SP_RETURN_NOT_FOUND               0
 | 
|---|
| 317 | #define SP_RETURN_FOUND                   1
 | 
|---|
| 318 | #define SP_RETURN_ERROR                   2
 | 
|---|
| 319 | #define SP_RETURN_BAD_CONFIG              3
 | 
|---|
| 320 | 
 | 
|---|
| 321 | typedef ULONG DDKAPI
 | 
|---|
| 322 | (*PHW_FIND_ADAPTER)(
 | 
|---|
| 323 |         IN PVOID DeviceExtension,
 | 
|---|
| 324 |         IN PVOID HwContext,
 | 
|---|
| 325 |         IN PVOID BusInformation,
 | 
|---|
| 326 |         IN PCHAR ArgumentString,
 | 
|---|
| 327 |         IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo,
 | 
|---|
| 328 |         OUT PBOOLEAN Again);
 | 
|---|
| 329 | 
 | 
|---|
| 330 | typedef BOOLEAN DDKAPI
 | 
|---|
| 331 | (*PHW_INITIALIZE)(
 | 
|---|
| 332 |   IN PVOID DeviceExtension);
 | 
|---|
| 333 | 
 | 
|---|
| 334 | typedef BOOLEAN DDKAPI
 | 
|---|
| 335 | (*PHW_INTERRUPT)(
 | 
|---|
| 336 |   IN PVOID DeviceExtension);
 | 
|---|
| 337 | 
 | 
|---|
| 338 | typedef BOOLEAN DDKAPI
 | 
|---|
| 339 | (*PHW_RESET_BUS)(
 | 
|---|
| 340 |   IN PVOID DeviceExtension,
 | 
|---|
| 341 |   IN ULONG PathId);
 | 
|---|
| 342 | 
 | 
|---|
| 343 | typedef VOID DDKAPI
 | 
|---|
| 344 | (*PHW_DMA_STARTED)(
 | 
|---|
| 345 |   IN PVOID DeviceExtension);
 | 
|---|
| 346 | 
 | 
|---|
| 347 | typedef BOOLEAN DDKAPI
 | 
|---|
| 348 | (*PHW_STARTIO)(
 | 
|---|
| 349 |   IN PVOID DeviceExtension,
 | 
|---|
| 350 |   IN PSCSI_REQUEST_BLOCK Srb);
 | 
|---|
| 351 | 
 | 
|---|
| 352 | typedef VOID DDKAPI
 | 
|---|
| 353 | (*PHW_TIMER)(
 | 
|---|
| 354 |   IN PVOID DeviceExtension);
 | 
|---|
| 355 | 
 | 
|---|
| 356 | typedef struct _HW_INITIALIZATION_DATA { 
 | 
|---|
| 357 |   ULONG  HwInitializationDataSize; 
 | 
|---|
| 358 |   INTERFACE_TYPE  AdapterInterfaceType; 
 | 
|---|
| 359 |   PHW_INITIALIZE  HwInitialize; 
 | 
|---|
| 360 |   PHW_STARTIO  HwStartIo; 
 | 
|---|
| 361 |   PHW_INTERRUPT  HwInterrupt; 
 | 
|---|
| 362 |   PHW_FIND_ADAPTER  HwFindAdapter; 
 | 
|---|
| 363 |   PHW_RESET_BUS  HwResetBus; 
 | 
|---|
| 364 |   PHW_DMA_STARTED  HwDmaStarted; 
 | 
|---|
| 365 |   PHW_ADAPTER_STATE  HwAdapterState; 
 | 
|---|
| 366 |   ULONG  DeviceExtensionSize; 
 | 
|---|
| 367 |   ULONG  SpecificLuExtensionSize; 
 | 
|---|
| 368 |   ULONG  SrbExtensionSize; 
 | 
|---|
| 369 |   ULONG  NumberOfAccessRanges; 
 | 
|---|
| 370 |   PVOID  Reserved; 
 | 
|---|
| 371 |   BOOLEAN  MapBuffers; 
 | 
|---|
| 372 |   BOOLEAN  NeedPhysicalAddresses; 
 | 
|---|
| 373 |   BOOLEAN  TaggedQueuing; 
 | 
|---|
| 374 |   BOOLEAN  AutoRequestSense; 
 | 
|---|
| 375 |   BOOLEAN  MultipleRequestPerLu; 
 | 
|---|
| 376 |   BOOLEAN  ReceiveEvent; 
 | 
|---|
| 377 |   USHORT  VendorIdLength; 
 | 
|---|
| 378 |   PVOID  VendorId; 
 | 
|---|
| 379 |   USHORT  ReservedUshort; 
 | 
|---|
| 380 |   USHORT  DeviceIdLength; 
 | 
|---|
| 381 |   PVOID  DeviceId; 
 | 
|---|
| 382 |   PHW_ADAPTER_CONTROL  HwAdapterControl;
 | 
|---|
| 383 | } HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA; 
 | 
|---|
| 384 | 
 | 
|---|
| 385 | SCSIPORTAPI
 | 
|---|
| 386 | VOID 
 | 
|---|
| 387 | DDKAPI
 | 
|---|
| 388 | ScsiPortCompleteRequest(
 | 
|---|
| 389 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 390 |   IN UCHAR  PathId,
 | 
|---|
| 391 |   IN UCHAR  TargetId,
 | 
|---|
| 392 |   IN UCHAR  Lun,
 | 
|---|
| 393 |   IN UCHAR  SrbStatus);
 | 
|---|
| 394 | 
 | 
|---|
| 395 | /*
 | 
|---|
| 396 |  * ULONG
 | 
|---|
| 397 |  * ScsiPortConvertPhysicalAddressToUlong(
 | 
|---|
| 398 |  *   IN SCSI_PHYSICAL_ADDRESS  Address);
 | 
|---|
| 399 |  */
 | 
|---|
| 400 | #define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
 | 
|---|
| 401 | 
 | 
|---|
| 402 | SCSIPORTAPI
 | 
|---|
| 403 | SCSI_PHYSICAL_ADDRESS 
 | 
|---|
| 404 | DDKAPI
 | 
|---|
| 405 | ScsiPortConvertUlongToPhysicalAddress(
 | 
|---|
| 406 |   IN ULONG  UlongAddress);
 | 
|---|
| 407 | 
 | 
|---|
| 408 | SCSIPORTAPI
 | 
|---|
| 409 | VOID
 | 
|---|
| 410 | DDKAPI
 | 
|---|
| 411 | ScsiPortFlushDma(
 | 
|---|
| 412 |   IN PVOID  DeviceExtension);
 | 
|---|
| 413 | 
 | 
|---|
| 414 | SCSIPORTAPI
 | 
|---|
| 415 | VOID
 | 
|---|
| 416 | DDKAPI
 | 
|---|
| 417 | ScsiPortFreeDeviceBase(
 | 
|---|
| 418 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 419 |   IN PVOID  MappedAddress);
 | 
|---|
| 420 | 
 | 
|---|
| 421 | SCSIPORTAPI
 | 
|---|
| 422 | ULONG
 | 
|---|
| 423 | DDKAPI
 | 
|---|
| 424 | ScsiPortGetBusData(
 | 
|---|
| 425 |   IN PVOID  DeviceExtension,
 | 
|---|
| 426 |   IN ULONG  BusDataType,
 | 
|---|
| 427 |   IN ULONG  SystemIoBusNumber,
 | 
|---|
| 428 |   IN ULONG  SlotNumber,
 | 
|---|
| 429 |   IN PVOID  Buffer,
 | 
|---|
| 430 |   IN ULONG  Length);
 | 
|---|
| 431 | 
 | 
|---|
| 432 | SCSIPORTAPI
 | 
|---|
| 433 | PVOID
 | 
|---|
| 434 | DDKAPI
 | 
|---|
| 435 | ScsiPortGetDeviceBase(
 | 
|---|
| 436 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 437 |   IN INTERFACE_TYPE  BusType,
 | 
|---|
| 438 |   IN ULONG  SystemIoBusNumber,
 | 
|---|
| 439 |   IN SCSI_PHYSICAL_ADDRESS  IoAddress,
 | 
|---|
| 440 |   IN ULONG  NumberOfBytes,
 | 
|---|
| 441 |   IN BOOLEAN  InIoSpace);
 | 
|---|
| 442 | 
 | 
|---|
| 443 | SCSIPORTAPI
 | 
|---|
| 444 | PVOID
 | 
|---|
| 445 | DDKAPI
 | 
|---|
| 446 | ScsiPortGetLogicalUnit(
 | 
|---|
| 447 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 448 |   IN UCHAR  PathId,
 | 
|---|
| 449 |   IN UCHAR  TargetId,
 | 
|---|
| 450 |   IN UCHAR  Lun);
 | 
|---|
| 451 | 
 | 
|---|
| 452 | SCSIPORTAPI
 | 
|---|
| 453 | SCSI_PHYSICAL_ADDRESS
 | 
|---|
| 454 | DDKAPI
 | 
|---|
| 455 | ScsiPortGetPhysicalAddress(
 | 
|---|
| 456 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 457 |   IN PSCSI_REQUEST_BLOCK  Srb  OPTIONAL,
 | 
|---|
| 458 |   IN PVOID  VirtualAddress,
 | 
|---|
| 459 |   OUT ULONG  *Length);
 | 
|---|
| 460 | 
 | 
|---|
| 461 | SCSIPORTAPI
 | 
|---|
| 462 | PSCSI_REQUEST_BLOCK
 | 
|---|
| 463 | DDKAPI
 | 
|---|
| 464 | ScsiPortGetSrb(
 | 
|---|
| 465 |   IN PVOID  DeviceExtension,
 | 
|---|
| 466 |   IN UCHAR  PathId,
 | 
|---|
| 467 |   IN UCHAR  TargetId,
 | 
|---|
| 468 |   IN UCHAR  Lun,
 | 
|---|
| 469 |   IN LONG  QueueTag);
 | 
|---|
| 470 | 
 | 
|---|
| 471 | SCSIPORTAPI
 | 
|---|
| 472 | PVOID
 | 
|---|
| 473 | DDKAPI
 | 
|---|
| 474 | ScsiPortGetUncachedExtension(
 | 
|---|
| 475 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 476 |   IN PPORT_CONFIGURATION_INFORMATION  ConfigInfo,
 | 
|---|
| 477 |   IN ULONG  NumberOfBytes);
 | 
|---|
| 478 | 
 | 
|---|
| 479 | SCSIPORTAPI
 | 
|---|
| 480 | PVOID
 | 
|---|
| 481 | DDKAPI
 | 
|---|
| 482 | ScsiPortGetVirtualAddress(
 | 
|---|
| 483 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 484 |   IN SCSI_PHYSICAL_ADDRESS  PhysicalAddress);
 | 
|---|
| 485 | 
 | 
|---|
| 486 | SCSIPORTAPI
 | 
|---|
| 487 | ULONG
 | 
|---|
| 488 | DDKAPI
 | 
|---|
| 489 | ScsiPortInitialize(
 | 
|---|
| 490 |   IN PVOID  Argument1,
 | 
|---|
| 491 |   IN PVOID  Argument2,
 | 
|---|
| 492 |   IN struct _HW_INITIALIZATION_DATA  *HwInitializationData,
 | 
|---|
| 493 |   IN PVOID  HwContext  OPTIONAL);
 | 
|---|
| 494 | 
 | 
|---|
| 495 | SCSIPORTAPI
 | 
|---|
| 496 | VOID
 | 
|---|
| 497 | DDKAPI
 | 
|---|
| 498 | ScsiPortIoMapTransfer(
 | 
|---|
| 499 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 500 |   IN PSCSI_REQUEST_BLOCK  Srb,
 | 
|---|
| 501 |   IN ULONG  LogicalAddress,
 | 
|---|
| 502 |   IN ULONG  Length);
 | 
|---|
| 503 | 
 | 
|---|
| 504 | SCSIPORTAPI
 | 
|---|
| 505 | VOID
 | 
|---|
| 506 | DDKAPI
 | 
|---|
| 507 | ScsiPortLogError(
 | 
|---|
| 508 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 509 |   IN PSCSI_REQUEST_BLOCK  Srb  OPTIONAL,
 | 
|---|
| 510 |   IN UCHAR  PathId,
 | 
|---|
| 511 |   IN UCHAR  TargetId,
 | 
|---|
| 512 |   IN UCHAR  Lun,
 | 
|---|
| 513 |   IN ULONG  ErrorCode,
 | 
|---|
| 514 |   IN ULONG  UniqueId);
 | 
|---|
| 515 | 
 | 
|---|
| 516 | SCSIPORTAPI
 | 
|---|
| 517 | VOID
 | 
|---|
| 518 | DDKAPI
 | 
|---|
| 519 | ScsiPortMoveMemory(
 | 
|---|
| 520 |   IN PVOID  WriteBuffer,
 | 
|---|
| 521 |   IN PVOID  ReadBuffer,
 | 
|---|
| 522 |   IN ULONG  Length);
 | 
|---|
| 523 | 
 | 
|---|
| 524 | SCSIPORTAPI
 | 
|---|
| 525 | VOID
 | 
|---|
| 526 | DDKCDECLAPI
 | 
|---|
| 527 | ScsiPortNotification(
 | 
|---|
| 528 |   IN SCSI_NOTIFICATION_TYPE  NotificationType,
 | 
|---|
| 529 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 530 |   IN ...);
 | 
|---|
| 531 | 
 | 
|---|
| 532 | SCSIPORTAPI
 | 
|---|
| 533 | VOID
 | 
|---|
| 534 | DDKAPI
 | 
|---|
| 535 | ScsiPortQuerySystemTime(
 | 
|---|
| 536 |   OUT PLARGE_INTEGER  CurrentTime);
 | 
|---|
| 537 | 
 | 
|---|
| 538 | SCSIPORTAPI
 | 
|---|
| 539 | VOID
 | 
|---|
| 540 | DDKAPI
 | 
|---|
| 541 | ScsiPortReadPortBufferUchar(
 | 
|---|
| 542 |   IN PUCHAR  Port,
 | 
|---|
| 543 |   IN PUCHAR  Buffer,
 | 
|---|
| 544 |   IN ULONG  Count);
 | 
|---|
| 545 | 
 | 
|---|
| 546 | SCSIPORTAPI
 | 
|---|
| 547 | VOID
 | 
|---|
| 548 | DDKAPI
 | 
|---|
| 549 | ScsiPortReadPortBufferUlong(
 | 
|---|
| 550 |   IN PULONG  Port,
 | 
|---|
| 551 |   IN PULONG  Buffer,
 | 
|---|
| 552 |   IN ULONG  Count);
 | 
|---|
| 553 | 
 | 
|---|
| 554 | SCSIPORTAPI
 | 
|---|
| 555 | VOID
 | 
|---|
| 556 | DDKAPI
 | 
|---|
| 557 | ScsiPortReadPortBufferUshort(
 | 
|---|
| 558 |   IN PUSHORT  Port,
 | 
|---|
| 559 |   IN PUSHORT  Buffer,
 | 
|---|
| 560 |   IN ULONG  Count);
 | 
|---|
| 561 | 
 | 
|---|
| 562 | SCSIPORTAPI
 | 
|---|
| 563 | UCHAR
 | 
|---|
| 564 | DDKAPI
 | 
|---|
| 565 | ScsiPortReadPortUchar(
 | 
|---|
| 566 |   IN PUCHAR  Port);
 | 
|---|
| 567 | 
 | 
|---|
| 568 | SCSIPORTAPI
 | 
|---|
| 569 | ULONG
 | 
|---|
| 570 | DDKAPI
 | 
|---|
| 571 | ScsiPortReadPortUlong(
 | 
|---|
| 572 |   IN PULONG  Port);
 | 
|---|
| 573 | 
 | 
|---|
| 574 | SCSIPORTAPI
 | 
|---|
| 575 | USHORT
 | 
|---|
| 576 | DDKAPI
 | 
|---|
| 577 | ScsiPortReadPortUshort(
 | 
|---|
| 578 |   IN PUSHORT  Port);
 | 
|---|
| 579 | 
 | 
|---|
| 580 | SCSIPORTAPI
 | 
|---|
| 581 | VOID
 | 
|---|
| 582 | DDKAPI
 | 
|---|
| 583 | ScsiPortReadRegisterBufferUchar(
 | 
|---|
| 584 |   IN PUCHAR  Register,
 | 
|---|
| 585 |   IN PUCHAR  Buffer,
 | 
|---|
| 586 |   IN ULONG  Count);
 | 
|---|
| 587 | 
 | 
|---|
| 588 | SCSIPORTAPI
 | 
|---|
| 589 | VOID
 | 
|---|
| 590 | DDKAPI
 | 
|---|
| 591 | ScsiPortReadRegisterBufferUlong(
 | 
|---|
| 592 |   IN PULONG  Register,
 | 
|---|
| 593 |   IN PULONG  Buffer,
 | 
|---|
| 594 |   IN ULONG  Count);
 | 
|---|
| 595 | 
 | 
|---|
| 596 | SCSIPORTAPI
 | 
|---|
| 597 | VOID
 | 
|---|
| 598 | DDKAPI
 | 
|---|
| 599 | ScsiPortReadRegisterBufferUshort(
 | 
|---|
| 600 |   IN PUSHORT  Register,
 | 
|---|
| 601 |   IN PUSHORT  Buffer,
 | 
|---|
| 602 |   IN ULONG  Count);
 | 
|---|
| 603 | 
 | 
|---|
| 604 | SCSIPORTAPI
 | 
|---|
| 605 | UCHAR
 | 
|---|
| 606 | DDKAPI
 | 
|---|
| 607 | ScsiPortReadRegisterUchar(
 | 
|---|
| 608 |   IN PUCHAR  Register);
 | 
|---|
| 609 | 
 | 
|---|
| 610 | SCSIPORTAPI
 | 
|---|
| 611 | ULONG
 | 
|---|
| 612 | DDKAPI
 | 
|---|
| 613 | ScsiPortReadRegisterUlong(
 | 
|---|
| 614 |   IN PULONG  Register);
 | 
|---|
| 615 | 
 | 
|---|
| 616 | SCSIPORTAPI
 | 
|---|
| 617 | USHORT
 | 
|---|
| 618 | DDKAPI
 | 
|---|
| 619 | ScsiPortReadRegisterUshort(
 | 
|---|
| 620 |   IN PUSHORT  Register);
 | 
|---|
| 621 | 
 | 
|---|
| 622 | SCSIPORTAPI
 | 
|---|
| 623 | ULONG
 | 
|---|
| 624 | DDKAPI
 | 
|---|
| 625 | ScsiPortSetBusDataByOffset(
 | 
|---|
| 626 |   IN PVOID  DeviceExtension,
 | 
|---|
| 627 |   IN ULONG  BusDataType,
 | 
|---|
| 628 |   IN ULONG  SystemIoBusNumber,
 | 
|---|
| 629 |   IN ULONG  SlotNumber,
 | 
|---|
| 630 |   IN PVOID  Buffer,
 | 
|---|
| 631 |   IN ULONG  Offset,
 | 
|---|
| 632 |   IN ULONG  Length);
 | 
|---|
| 633 | 
 | 
|---|
| 634 | SCSIPORTAPI
 | 
|---|
| 635 | VOID
 | 
|---|
| 636 | DDKAPI
 | 
|---|
| 637 | ScsiPortStallExecution(
 | 
|---|
| 638 |   IN ULONG  Delay);
 | 
|---|
| 639 | 
 | 
|---|
| 640 | SCSIPORTAPI
 | 
|---|
| 641 | BOOLEAN
 | 
|---|
| 642 | DDKAPI
 | 
|---|
| 643 | ScsiPortValidateRange(
 | 
|---|
| 644 |   IN PVOID  HwDeviceExtension,
 | 
|---|
| 645 |   IN INTERFACE_TYPE  BusType,
 | 
|---|
| 646 |   IN ULONG  SystemIoBusNumber,
 | 
|---|
| 647 |   IN SCSI_PHYSICAL_ADDRESS  IoAddress,
 | 
|---|
| 648 |   IN ULONG  NumberOfBytes,
 | 
|---|
| 649 |   IN BOOLEAN  InIoSpace);
 | 
|---|
| 650 | 
 | 
|---|
| 651 | SCSIPORTAPI
 | 
|---|
| 652 | VOID
 | 
|---|
| 653 | DDKAPI
 | 
|---|
| 654 | ScsiPortWritePortBufferUchar(
 | 
|---|
| 655 |   IN PUCHAR  Port,
 | 
|---|
| 656 |   IN PUCHAR  Buffer,
 | 
|---|
| 657 |   IN ULONG  Count);
 | 
|---|
| 658 | 
 | 
|---|
| 659 | SCSIPORTAPI
 | 
|---|
| 660 | VOID
 | 
|---|
| 661 | DDKAPI
 | 
|---|
| 662 | ScsiPortWritePortBufferUlong(
 | 
|---|
| 663 |   IN PULONG  Port,
 | 
|---|
| 664 |   IN PULONG  Buffer,
 | 
|---|
| 665 |   IN ULONG  Count);
 | 
|---|
| 666 | 
 | 
|---|
| 667 | SCSIPORTAPI
 | 
|---|
| 668 | VOID
 | 
|---|
| 669 | DDKAPI
 | 
|---|
| 670 | ScsiPortWritePortBufferUshort(
 | 
|---|
| 671 |   IN PUSHORT  Port,
 | 
|---|
| 672 |   IN PUSHORT  Buffer,
 | 
|---|
| 673 |   IN ULONG  Count);
 | 
|---|
| 674 | 
 | 
|---|
| 675 | SCSIPORTAPI
 | 
|---|
| 676 | VOID
 | 
|---|
| 677 | DDKAPI
 | 
|---|
| 678 | ScsiPortWritePortUchar(
 | 
|---|
| 679 |   IN PUCHAR  Port,
 | 
|---|
| 680 |   IN UCHAR  Value);
 | 
|---|
| 681 | 
 | 
|---|
| 682 | SCSIPORTAPI
 | 
|---|
| 683 | VOID
 | 
|---|
| 684 | DDKAPI
 | 
|---|
| 685 | ScsiPortWritePortUlong(
 | 
|---|
| 686 |   IN PULONG  Port,
 | 
|---|
| 687 |   IN ULONG  Value);
 | 
|---|
| 688 | 
 | 
|---|
| 689 | SCSIPORTAPI
 | 
|---|
| 690 | VOID
 | 
|---|
| 691 | DDKAPI
 | 
|---|
| 692 | ScsiPortWritePortUshort(
 | 
|---|
| 693 |   IN PUSHORT  Port,
 | 
|---|
| 694 |   IN USHORT  Value);
 | 
|---|
| 695 | 
 | 
|---|
| 696 | SCSIPORTAPI
 | 
|---|
| 697 | VOID
 | 
|---|
| 698 | DDKAPI
 | 
|---|
| 699 | ScsiPortWriteRegisterBufferUchar(
 | 
|---|
| 700 |   IN PUCHAR  Register,
 | 
|---|
| 701 |   IN PUCHAR  Buffer,
 | 
|---|
| 702 |   IN ULONG  Count);
 | 
|---|
| 703 | 
 | 
|---|
| 704 | SCSIPORTAPI
 | 
|---|
| 705 | VOID
 | 
|---|
| 706 | DDKAPI
 | 
|---|
| 707 | ScsiPortWriteRegisterBufferUlong(
 | 
|---|
| 708 |   IN PULONG  Register,
 | 
|---|
| 709 |   IN PULONG  Buffer,
 | 
|---|
| 710 |   IN ULONG  Count);
 | 
|---|
| 711 | 
 | 
|---|
| 712 | SCSIPORTAPI
 | 
|---|
| 713 | VOID
 | 
|---|
| 714 | DDKAPI
 | 
|---|
| 715 | ScsiPortWriteRegisterBufferUshort(
 | 
|---|
| 716 |   IN PUSHORT  Register,
 | 
|---|
| 717 |   IN PUSHORT  Buffer,
 | 
|---|
| 718 |   IN ULONG  Count);
 | 
|---|
| 719 | 
 | 
|---|
| 720 | SCSIPORTAPI
 | 
|---|
| 721 | VOID
 | 
|---|
| 722 | DDKAPI
 | 
|---|
| 723 | ScsiPortWriteRegisterUchar(
 | 
|---|
| 724 |   IN PUCHAR  Register,
 | 
|---|
| 725 |   IN ULONG  Value);
 | 
|---|
| 726 | 
 | 
|---|
| 727 | SCSIPORTAPI
 | 
|---|
| 728 | VOID
 | 
|---|
| 729 | DDKAPI
 | 
|---|
| 730 | ScsiPortWriteRegisterUlong(
 | 
|---|
| 731 |   IN PULONG  Register,
 | 
|---|
| 732 |   IN ULONG  Value);
 | 
|---|
| 733 | 
 | 
|---|
| 734 | SCSIPORTAPI
 | 
|---|
| 735 | VOID
 | 
|---|
| 736 | DDKAPI
 | 
|---|
| 737 | ScsiPortWriteRegisterUshort(
 | 
|---|
| 738 |   IN PUSHORT  Register,
 | 
|---|
| 739 |   IN USHORT  Value);
 | 
|---|
| 740 | 
 | 
|---|
| 741 | SCSIPORTAPI
 | 
|---|
| 742 | VOID
 | 
|---|
| 743 | DDKCDECLAPI
 | 
|---|
| 744 | ScsiDebugPrint(
 | 
|---|
| 745 |   IN ULONG DebugPrintLevel,
 | 
|---|
| 746 |   IN PCCHAR DebugMessage,
 | 
|---|
| 747 |   IN ...);
 | 
|---|
| 748 | 
 | 
|---|
| 749 | #ifdef __cplusplus
 | 
|---|
| 750 | }
 | 
|---|
| 751 | #endif
 | 
|---|
| 752 | 
 | 
|---|
| 753 | #endif /* __SRB_H */
 | 
|---|