Remove last hardcode string I have check the soure 3more time after I found some...
[reactos.git] / reactos / w32api / include / ddk / srb.h
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 */