ReactOS 0.4.16-dev-197-g92996da
srb.h
Go to the documentation of this file.
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 _NTSRB_
24#define _NTSRB_
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30/* NOTE: the current SCSI_MAXIMUM_TARGETS_PER_BUS is applicable
31 * only on scsiport miniports. For storport miniports, the max
32 * target supported is 255. */
33#if (NTDDI_VERSION >= NTDDI_WIN8)
34#define SCSI_MAXIMUM_BUSES_PER_ADAPTER 255
35#endif
36#define SCSI_MAXIMUM_TARGETS_PER_BUS 128
37#define SCSI_MAXIMUM_LUNS_PER_TARGET 255
38#define SCSI_MINIMUM_PHYSICAL_BREAKS 16
39#define SCSI_MAXIMUM_PHYSICAL_BREAKS 255
40
41/* These constants are for backward compatibility.
42 * They used to be the maximum supported. */
43#define SCSI_MAXIMUM_BUSES 8
44#define SCSI_MAXIMUM_TARGETS 8
45#define SCSI_MAXIMUM_LOGICAL_UNITS 8
46
47/* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */
48#define SCSI_DMA64_MINIPORT_SUPPORTED 0x01
49#define SCSI_DMA64_SYSTEM_SUPPORTED 0x80
50#if (NTDDI_VERSION > NTDDI_WS03SP1)
51#define SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED 0x02
52#endif
53
54#define SP_UNINITIALIZED_VALUE ((ULONG) ~0)
55#define SP_UNTAGGED ((UCHAR) ~0)
56
57/* Asynchronous events */
58#define SRBEV_BUS_RESET 0x0001
59#define SRBEV_SCSI_ASYNC_NOTIFICATION 0x0002
60
61#define MAXIMUM_CDB_SIZE 12
62
63#if DBG
64#define DebugPrint(x) ScsiDebugPrint x
65#else
66#define DebugPrint(x)
67#endif
68
69#define SCSI_COMBINE_BUS_TARGET(Bus, Target)( \
70 ((((UCHAR) (Target)) & ~(0x20 - 1)) << 8) | \
71 (((UCHAR) (Bus)) << 5) | \
72 (((UCHAR) (Target)) & (0x20 - 1)))
73
74#define SCSI_DECODE_BUS_TARGET(Value, Bus, Target)( \
75 Bus = (UCHAR) ((Value) >> 5), \
76 Target = (UCHAR) ((((Value) >> 8) & ~(0x20 - 1)) | ((Value) & (0x20 - 1))))
77
78/* SCSI_REQUEST_BLOCK.Function constants */
79#define SRB_FUNCTION_EXECUTE_SCSI 0x00
80#define SRB_FUNCTION_CLAIM_DEVICE 0x01
81#define SRB_FUNCTION_IO_CONTROL 0x02
82#define SRB_FUNCTION_RECEIVE_EVENT 0x03
83#define SRB_FUNCTION_RELEASE_QUEUE 0x04
84#define SRB_FUNCTION_ATTACH_DEVICE 0x05
85#define SRB_FUNCTION_RELEASE_DEVICE 0x06
86#define SRB_FUNCTION_SHUTDOWN 0x07
87#define SRB_FUNCTION_FLUSH 0x08
88#define SRB_FUNCTION_PROTOCOL_COMMAND 0x09
89#define SRB_FUNCTION_ABORT_COMMAND 0x10
90#define SRB_FUNCTION_RELEASE_RECOVERY 0x11
91#define SRB_FUNCTION_RESET_BUS 0x12
92#define SRB_FUNCTION_RESET_DEVICE 0x13
93#define SRB_FUNCTION_TERMINATE_IO 0x14
94#define SRB_FUNCTION_FLUSH_QUEUE 0x15
95#define SRB_FUNCTION_REMOVE_DEVICE 0x16
96#define SRB_FUNCTION_WMI 0x17
97#define SRB_FUNCTION_LOCK_QUEUE 0x18
98#define SRB_FUNCTION_UNLOCK_QUEUE 0x19
99#define SRB_FUNCTION_QUIESCE_DEVICE 0x1a
100#define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20
101#define SRB_FUNCTION_SET_LINK_TIMEOUT 0x21
102#define SRB_FUNCTION_LINK_TIMEOUT_OCCURRED 0x22
103#define SRB_FUNCTION_LINK_TIMEOUT_COMPLETE 0x23
104#define SRB_FUNCTION_POWER 0x24
105#define SRB_FUNCTION_PNP 0x25
106#define SRB_FUNCTION_DUMP_POINTERS 0x26
107#define SRB_FUNCTION_FREE_DUMP_POINTERS 0x27
108#define SRB_FUNCTION_STORAGE_REQUEST_BLOCK 0x28 // special value
109#define SRB_FUNCTION_CRYPTO_OPERATION 0x29
110#define SRB_FUNCTION_GET_DUMP_INFO 0x2a
111#define SRB_FUNCTION_FREE_DUMP_INFO 0x2b
112
113/* SCSI_REQUEST_BLOCK.SrbStatus constants */
114#define SRB_STATUS_PENDING 0x00
115#define SRB_STATUS_SUCCESS 0x01
116#define SRB_STATUS_ABORTED 0x02
117#define SRB_STATUS_ABORT_FAILED 0x03
118#define SRB_STATUS_ERROR 0x04
119#define SRB_STATUS_BUSY 0x05
120#define SRB_STATUS_INVALID_REQUEST 0x06
121#define SRB_STATUS_INVALID_PATH_ID 0x07
122#define SRB_STATUS_NO_DEVICE 0x08
123#define SRB_STATUS_TIMEOUT 0x09
124#define SRB_STATUS_SELECTION_TIMEOUT 0x0A
125#define SRB_STATUS_COMMAND_TIMEOUT 0x0B
126#define SRB_STATUS_MESSAGE_REJECTED 0x0D
127#define SRB_STATUS_BUS_RESET 0x0E
128#define SRB_STATUS_PARITY_ERROR 0x0F
129#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10
130#define SRB_STATUS_NO_HBA 0x11
131#define SRB_STATUS_DATA_OVERRUN 0x12
132#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13
133#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
134#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15
135#define SRB_STATUS_REQUEST_FLUSHED 0x16
136#define SRB_STATUS_INVALID_LUN 0x20
137#define SRB_STATUS_INVALID_TARGET_ID 0x21
138#define SRB_STATUS_BAD_FUNCTION 0x22
139#define SRB_STATUS_ERROR_RECOVERY 0x23
140#define SRB_STATUS_NOT_POWERED 0x24
141#define SRB_STATUS_LINK_DOWN 0x25
142#define SRB_STATUS_INSUFFICIENT_RESOURCES 0x26
143#define SRB_STATUS_THROTTLED_REQUEST 0x27
144#define SRB_STATUS_INTERNAL_ERROR 0x30
145
146#define SRB_STATUS_QUEUE_FROZEN 0x40
147#define SRB_STATUS_AUTOSENSE_VALID 0x80
148
149#define SRB_STATUS(Status) \
150 (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
151
152/* SCSI_REQUEST_BLOCK.SrbFlags constants */
153#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002
154#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004
155#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
156#define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010
157#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020
158#define SRB_FLAGS_DATA_IN 0x00000040
159#define SRB_FLAGS_DATA_OUT 0x00000080
160#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000
161#define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
162#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100
163#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200
164#define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400
165#define SRB_FLAGS_D3_PROCESSING 0x00000800
166#define SRB_FLAGS_SEQUENTIAL_REQUIRED 0x00001000
167#define SRB_FLAGS_IS_ACTIVE 0x00010000
168#define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000
169#define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000
170#define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000
171#define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000
172#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000
173#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000
174#define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000
175#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
176#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
177
178#if DBG
179#define SCSI_PORT_SIGNATURE 0x54524f50
180#endif
181
182#define SRB_SIMPLE_TAG_REQUEST 0x20
183#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21
184#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22
185
186#define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x0001
187#define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x0001
188#define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x0001
189
190#define SP_BUS_PARITY_ERROR 0x0001
191#define SP_UNEXPECTED_DISCONNECT 0x0002
192#define SP_INVALID_RESELECTION 0x0003
193#define SP_BUS_TIME_OUT 0x0004
194#define SP_PROTOCOL_ERROR 0x0005
195#define SP_INTERNAL_ADAPTER_ERROR 0x0006
196#define SP_REQUEST_TIMEOUT 0x0007
197#define SP_IRQ_NOT_RESPONDING 0x0008
198#define SP_BAD_FW_WARNING 0x0009
199#define SP_BAD_FW_ERROR 0x000a
200#define SP_LOST_WMI_MINIPORT_REQUEST 0x000b
201
202#define SP_VER_TRACE_SUPPORT 0x0010
203
204#define SP_RETURN_NOT_FOUND 0
205#define SP_RETURN_FOUND 1
206#define SP_RETURN_ERROR 2
207#define SP_RETURN_BAD_CONFIG 3
208
210
211typedef struct _ACCESS_RANGE {
216
217typedef struct _PORT_CONFIGURATION_INFORMATION {
270
271#define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION)
272
273#ifdef __GNUC__
274__extension__ /* enums limited to range of integer */
275#endif
285
290
295
296typedef struct _SCSI_REQUEST_BLOCK {
303 UCHAR Lun;
316 _ANONYMOUS_UNION union {
321#if defined(_WIN64)
323#endif
324 UCHAR Cdb[16];
326
327#define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK)
328
329typedef struct _SCSI_WMI_REQUEST_BLOCK {
336 UCHAR Lun;
339 UCHAR Reserved2[2];
349#if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64)
350 ULONG Reserved6;
351#endif
352 UCHAR Reserved5[16];
354
363
364typedef enum _STOR_POWER_ACTION {
374
393#if defined(_WIN64)
395#endif
398
399typedef enum _STOR_PNP_ACTION {
408
422
441#if defined(_WIN64)
443#endif
446
447#if (NTDDI_VERSION >= NTDDI_WIN8)
448#if defined(_WIN64)
449#define SRB_ALIGN DECLSPEC_ALIGN(8)
450#define POINTER_ALIGN DECLSPEC_ALIGN(8)
451#else
452#define SRB_ALIGN
453#define POINTER_ALIGN
454#endif
455
456typedef enum _SRBEXDATATYPE {
467 SrbExDataTypeReserved = 0xffffffff
469
470typedef struct SRB_ALIGN _SRBEX_DATA {
475
476#define SRBEX_DATA_BIDIRECTIONAL_LENGTH ((2 * sizeof(ULONG)) + sizeof(PVOID))
477
485 _Field_size_bytes_full_(DataInTransferLength)
486 PVOID POINTER_ALIGN DataInBuffer;
488
489#define SRBEX_DATA_SCSI_CDB16_LENGTH ((20 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID))
490
502 PVOID POINTER_ALIGN SenseInfoBuffer;
505
506#define SRBEX_DATA_SCSI_CDB32_LENGTH ((36 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID))
507
519 PVOID POINTER_ALIGN SenseInfoBuffer;
522
523#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MIN ((4 * sizeof(UCHAR)) + (3 * sizeof(ULONG)) + sizeof(PVOID))
524#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MAX 0xffffffffUL
525
537 PVOID POINTER_ALIGN SenseInfoBuffer;
541
542#define SRBEX_DATA_WMI_LENGTH ((4 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID))
543
555
556#define SRBEX_DATA_POWER_LENGTH ((4 * sizeof(UCHAR)) + sizeof(STOR_DEVICE_POWER_STATE) + sizeof(STOR_POWER_ACTION))
557
568
569#define SRBEX_DATA_PNP_LENGTH ((4 * sizeof(UCHAR)) + sizeof(STOR_PNP_ACTION) + (2 * sizeof(ULONG)))
570
582
583#define SRBEX_DATA_IO_INFO_LENGTH ((5 * sizeof(ULONG)) + (4 * sizeof(UCHAR)))
584
585#define REQUEST_INFO_NO_CACHE_FLAG 0x00000001
586#define REQUEST_INFO_PAGING_IO_FLAG 0x00000002
587#define REQUEST_INFO_SEQUENTIAL_IO_FLAG 0x00000004
588#define REQUEST_INFO_TEMPORARY_FLAG 0x00000008
589#define REQUEST_INFO_WRITE_THROUGH_FLAG 0x00000010
590#define REQUEST_INFO_HYBRID_WRITE_THROUGH_FLAG 0x00000020
591
592#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
593
594#define REQUEST_INFO_NO_FILE_OBJECT_FLAG 0x00000040
595#define REQUEST_INFO_VOLSNAP_IO_FLAG 0x00000080
596#define REQUEST_INFO_STREAM_FLAG 0x00000100
597
598#endif /* (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) */
599
600#define REQUEST_INFO_VALID_CACHEPRIORITY_FLAG 0x80000000
601
615
616#define SRB_SIGNATURE 0x53524258
617#define STORAGE_REQUEST_BLOCK_VERSION_1 0x1
618
625
626typedef _Struct_size_bytes_(SrbLength) struct SRB_ALIGN _STORAGE_REQUEST_BLOCK {
630 UCHAR SrbStatus;
631 UCHAR ReservedUchar[4];
636 ULONG SrbLength;
637 ULONG SrbFunction;
638 ULONG SrbFlags;
639 ULONG ReservedUlong;
640 ULONG RequestTag;
641 USHORT RequestPriority;
642 USHORT RequestAttribute;
643 ULONG TimeOutValue;
644 ULONG SystemStatus;
645 ULONG ZeroGuard1;
646 _Field_range_(sizeof(STORAGE_REQUEST_BLOCK), SrbLength - sizeof(STOR_ADDRESS))
647 ULONG AddressOffset;
648 ULONG NumSrbExData;
649 ULONG DataTransferLength;
650 _Field_size_bytes_full_(DataTransferLength)
651 PVOID POINTER_ALIGN DataBuffer;
652 PVOID POINTER_ALIGN ZeroGuard2;
654 PVOID POINTER_ALIGN ClassContext;
655 PVOID POINTER_ALIGN PortContext;
656 PVOID POINTER_ALIGN MiniportContext;
657 struct _STORAGE_REQUEST_BLOCK POINTER_ALIGN *NextSrb;
658 _At_buffer_(SrbExDataOffset, _Iter_, NumSrbExData, _Field_range_(0, SrbLength - sizeof(SRBEX_DATA)))
659 _Field_size_(NumSrbExData)
660 ULONG SrbExDataOffset[ANYSIZE_ARRAY];
662
663#define SRB_TYPE_SCSI_REQUEST_BLOCK 0
664#define SRB_TYPE_STORAGE_REQUEST_BLOCK 1
665
666#define STORAGE_ADDRESS_TYPE_BTL8 0
667#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
668
669typedef
673 _In_ PVOID DeviceExtension);
674
675typedef
679 _In_ PVOID DeviceExtension,
681
682typedef
686 _In_ PVOID DeviceExtension);
687
688typedef VOID
690 _In_ PVOID DeviceExtension);
691
692typedef VOID
694 _In_ PVOID DeviceExtension);
695
696typedef
700 _In_ PVOID DeviceExtension,
703 _In_ PCHAR ArgumentString,
705 _Out_ PBOOLEAN Again);
706
707typedef
711 _In_ PVOID DeviceExtension,
713
714typedef
718 _In_ PVOID DeviceExtension,
721
722typedef
726 _In_ PVOID DeviceExtension,
729
747
748typedef struct _HW_INITIALIZATION_DATA {
771 _ANONYMOUS_UNION union {
779
780#if defined(_NTDDK_)
781#define SCSIPORT_API
782#else
783#define SCSIPORT_API DECLSPEC_IMPORT
784#endif
785
787VOID
788NTAPI
790 _In_ PVOID HwDeviceExtension,
793 _In_ UCHAR Lun,
794 _In_ UCHAR SrbStatus);
795
798ULONG
799NTAPI
802
803#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
804#define ScsiPortConvertPhysicalAddressToULongPtr(Address) ((ULONG_PTR)((Address).QuadPart))
805
809NTAPI
811 _In_ ULONG_PTR UlongAddress);
812
814VOID
815NTAPI
817 _In_ PVOID DeviceExtension);
818
820VOID
821NTAPI
823 _In_ PVOID HwDeviceExtension,
824 _In_ PVOID MappedAddress);
825
828ULONG
829NTAPI
831 _In_ PVOID DeviceExtension,
832 _In_ ULONG BusDataType,
833 _In_ ULONG SystemIoBusNumber,
837
840PVOID
841NTAPI
843 _In_ PVOID HwDeviceExtension,
845 _In_ ULONG SystemIoBusNumber,
846 _In_ SCSI_PHYSICAL_ADDRESS IoAddress,
848 _In_ BOOLEAN InIoSpace);
849
852PVOID
853NTAPI
855 _In_ PVOID HwDeviceExtension,
858 _In_ UCHAR Lun);
859
863NTAPI
865 _In_ PVOID HwDeviceExtension,
869
873NTAPI
875 _In_ PVOID DeviceExtension,
878 _In_ UCHAR Lun,
879 _In_ LONG QueueTag);
880
883PVOID
884NTAPI
886 _In_ PVOID HwDeviceExtension,
889
892PVOID
893NTAPI
895 _In_ PVOID HwDeviceExtension,
897
901ULONG
902NTAPI
908
910VOID
911NTAPI
913 _In_ PVOID HwDeviceExtension,
915 _In_ PVOID LogicalAddress,
917
919VOID
920NTAPI
922 _In_ PVOID HwDeviceExtension,
926 _In_ UCHAR Lun,
928 _In_ ULONG UniqueId);
929
931VOID
935 _In_ PVOID HwDeviceExtension,
936 ...);
937
939VOID
940NTAPI
942 _Out_ PLARGE_INTEGER CurrentTime);
943
946ULONG
947NTAPI
949 _In_ PVOID DeviceExtension,
950 _In_ ULONG BusDataType,
951 _In_ ULONG SystemIoBusNumber,
956
958VOID
959NTAPI
961 _In_ ULONG Delay);
962
966NTAPI
968 _In_ PVOID HwDeviceExtension,
970 _In_ ULONG SystemIoBusNumber,
971 _In_ SCSI_PHYSICAL_ADDRESS IoAddress,
973 _In_ BOOLEAN InIoSpace);
974
976VOID
979 ULONG DebugPrintLevel,
980 PCCHAR DebugMessage,
981 ...);
982
983#if defined(_M_AMD64)
984
985#define ScsiPortReadPortUchar READ_PORT_UCHAR
986#define ScsiPortReadPortUshort READ_PORT_USHORT
987#define ScsiPortReadPortUlong READ_PORT_ULONG
988
989#define ScsiPortReadPortBufferUchar READ_PORT_BUFFER_UCHAR
990#define ScsiPortReadPortBufferUshort READ_PORT_BUFFER_USHORT
991#define ScsiPortReadPortBufferUlong READ_PORT_BUFFER_ULONG
992
993#define ScsiPortReadRegisterUchar READ_REGISTER_UCHAR
994#define ScsiPortReadRegisterUshort READ_REGISTER_USHORT
995#define ScsiPortReadRegisterUlong READ_REGISTER_ULONG
996
997#define ScsiPortReadRegisterBufferUchar READ_REGISTER_BUFFER_UCHAR
998#define ScsiPortReadRegisterBufferUshort READ_REGISTER_BUFFER_USHORT
999#define ScsiPortReadRegisterBufferUlong READ_REGISTER_BUFFER_ULONG
1000
1001#define ScsiPortWritePortUchar WRITE_PORT_UCHAR
1002#define ScsiPortWritePortUshort WRITE_PORT_USHORT
1003#define ScsiPortWritePortUlong WRITE_PORT_ULONG
1004
1005#define ScsiPortWritePortBufferUchar WRITE_PORT_BUFFER_UCHAR
1006#define ScsiPortWritePortBufferUshort WRITE_PORT_BUFFER_USHORT
1007#define ScsiPortWritePortBufferUlong WRITE_PORT_BUFFER_ULONG
1008
1009#define ScsiPortWriteRegisterUchar WRITE_REGISTER_UCHAR
1010#define ScsiPortWriteRegisterUshort WRITE_REGISTER_USHORT
1011#define ScsiPortWriteRegisterUlong WRITE_REGISTER_ULONG
1012
1013#define ScsiPortWriteRegisterBufferUchar WRITE_REGISTER_BUFFER_UCHAR
1014#define ScsiPortWriteRegisterBufferUshort WRITE_REGISTER_BUFFER_USHORT
1015#define ScsiPortWriteRegisterBufferUlong WRITE_REGISTER_BUFFER_ULONG
1016
1017#define ScsiPortMoveMemory memmove
1018
1019#else
1020
1023UCHAR
1024NTAPI
1026 _In_ PUCHAR Port);
1027
1030ULONG
1031NTAPI
1033 _In_ PULONG Port);
1034
1037USHORT
1038NTAPI
1040 _In_ PUSHORT Port);
1041
1043VOID
1044NTAPI
1048 _In_ ULONG Count);
1049
1051VOID
1052NTAPI
1056 _In_ ULONG Count);
1057
1059VOID
1060NTAPI
1064 _In_ ULONG Count);
1065
1068UCHAR
1069NTAPI
1072
1075ULONG
1076NTAPI
1079
1082USHORT
1083NTAPI
1086
1088VOID
1089NTAPI
1093 _In_ ULONG Count);
1094
1096VOID
1097NTAPI
1101 _In_ ULONG Count);
1102
1104VOID
1105NTAPI
1109 _In_ ULONG Count);
1110
1112VOID
1113NTAPI
1116 _In_ UCHAR Value);
1117
1119VOID
1120NTAPI
1123 _In_ ULONG Value);
1124
1126VOID
1127NTAPI
1130 _In_ USHORT Value);
1131
1133VOID
1134NTAPI
1138 _In_ ULONG Count);
1139
1141VOID
1142NTAPI
1146 _In_ ULONG Count);
1147
1149VOID
1150NTAPI
1154 _In_ ULONG Count);
1155
1157VOID
1158NTAPI
1161 _In_ UCHAR Value);
1162
1164VOID
1165NTAPI
1168 _In_ ULONG Value);
1169
1171VOID
1172NTAPI
1175 _In_ USHORT Value);
1176
1178VOID
1179NTAPI
1183 _In_ ULONG Count);
1184
1186VOID
1187NTAPI
1191 _In_ ULONG Count);
1192
1194VOID
1195NTAPI
1199 _In_ ULONG Count);
1200
1202VOID
1203NTAPI
1207 _In_ ULONG Length);
1208
1209#endif /* defined(_M_AMD64) */
1210
1211#ifdef __cplusplus
1212}
1213#endif
1214
1215#endif /* _NTSRB_ */
#define SaveState(State)
unsigned char BOOLEAN
Type
Definition: Type.h:7
#define __cdecl
Definition: accygwin.h:79
#define VOID
Definition: acefi.h:82
#define WriteBuffer(BaseIoAddress, Buffer, Count)
Definition: atapi.h:344
#define ReadBuffer(BaseIoAddress, Buffer, Count)
Definition: atapi.h:339
@ Reserved1
Definition: bcd.h:201
_In_ PSCSI_REQUEST_BLOCK Srb
Definition: cdrom.h:989
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN _In_opt_ WDFREQUEST OriginalRequest
Definition: cdrom.h:994
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
Definition: cdrom.h:1156
Definition: bufpool.h:45
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
Definition: classpnp.h:1315
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
Definition: classpnp.h:1313
_In_ PVOID Argument2
Definition: classpnp.h:721
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
Definition: classpnp.h:1314
static const WCHAR Signature[]
Definition: parser.c:141
struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST SCSI_SUPPORTED_CONTROL_TYPE_LIST
SCSIPORT_API VOID NTAPI ScsiPortLogError(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN ULONG ErrorCode, IN ULONG UniqueId)
Definition: scsiport.c:1299
SCSIPORT_API BOOLEAN NTAPI ScsiPortValidateRange(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
Definition: scsiport.c:1497
VOID(NTAPI * PHW_DMA_STARTED)(IN PVOID DeviceExtension)
Definition: srb.h:462
struct _SCSI_REQUEST_BLOCK SCSI_REQUEST_BLOCK
BOOLEAN(NTAPI * PHW_INTERRUPT)(IN PVOID DeviceExtension)
Definition: srb.h:450
struct _ACCESS_RANGE ACCESS_RANGE
SCSIPORT_API VOID NTAPI ScsiPortReadPortBufferUshort(IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count)
Definition: stubs.c:64
_SCSI_ADAPTER_CONTROL_TYPE
Definition: srb.h:176
@ ScsiRestartAdapter
Definition: srb.h:179
@ ScsiQuerySupportedControlTypes
Definition: srb.h:177
@ ScsiAdapterControlMax
Definition: srb.h:182
@ ScsiSetBootConfig
Definition: srb.h:180
@ ScsiStopAdapter
Definition: srb.h:178
@ MakeAdapterControlTypeSizeOfUlong
Definition: srb.h:183
@ ScsiSetRunningConfig
Definition: srb.h:181
SCSIPORT_API VOID NTAPI ScsiPortReadRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count)
Definition: scsiport.c:1438
PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS
Definition: srb.h:38
#define SCSIPORT_API
Definition: srb.h:608
struct _PORT_CONFIGURATION_INFORMATION * PPORT_CONFIGURATION_INFORMATION
enum _SCSI_NOTIFICATION_TYPE * PSCSI_NOTIFICATION_TYPE
SCSIPORT_API VOID NTAPI ScsiPortWritePortBufferUshort(IN PUSHORT Port, IN PUSHORT Buffer, IN ULONG Count)
Definition: scsiport.c:1537
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
SCSIPORT_API ULONG NTAPI ScsiPortReadPortUlong(IN PULONG Port)
Definition: scsiport.c:1400
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUlong(IN PULONG Register, IN ULONG Value)
Definition: scsiport.c:1616
SCSIPORT_API VOID NTAPI ScsiPortFreeDeviceBase(IN PVOID HwDeviceExtension, IN PVOID MappedAddress)
Definition: scsiport.c:549
SCSIPORT_API USHORT NTAPI ScsiPortReadPortUshort(IN PUSHORT Port)
Definition: scsiport.c:1408
SCSIPORT_API VOID NTAPI ScsiPortWritePortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count)
Definition: scsiport.c:1517
SCSIPORT_API VOID NTAPI ScsiPortMoveMemory(IN PVOID WriteBuffer, IN PVOID ReadBuffer, IN ULONG Length)
Definition: scsiport.c:1314
_SCSI_ADAPTER_CONTROL_STATUS
Definition: srb.h:190
@ ScsiAdapterControlSuccess
Definition: srb.h:191
@ ScsiAdapterControlUnsuccessful
Definition: srb.h:192
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count)
Definition: scsiport.c:1585
struct _HW_INITIALIZATION_DATA * PHW_INITIALIZATION_DATA
VOID(NTAPI * PHW_TIMER)(IN PVOID DeviceExtension)
Definition: srb.h:456
struct _SCSI_WMI_REQUEST_BLOCK SCSI_WMI_REQUEST_BLOCK
enum _SCSI_ADAPTER_CONTROL_TYPE SCSI_ADAPTER_CONTROL_TYPE
SCSIPORT_API PSCSI_REQUEST_BLOCK NTAPI ScsiPortGetSrb(IN PVOID DeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN LONG QueueTag)
Definition: scsiport.c:658
SCSIPORT_API ULONG NTAPI ScsiPortSetBusDataByOffset(IN PVOID DeviceExtension, IN ULONG BusDataType, IN ULONG SystemIoBusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
Definition: scsiport.c:1473
enum _SCSI_ADAPTER_CONTROL_STATUS SCSI_ADAPTER_CONTROL_STATUS
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUchar(IN PUCHAR Register, IN UCHAR Value)
Definition: scsiport.c:1607
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count)
Definition: scsiport.c:1596
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUshort(IN PUSHORT Register, IN USHORT Value)
Definition: scsiport.c:1625
SCSIPORT_API ULONG NTAPI ScsiPortGetBusData(IN PVOID DeviceExtension, IN ULONG BusDataType, IN ULONG SystemIoBusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Length)
Definition: scsiport.c:558
SCSIPORT_API VOID NTAPI ScsiPortReadPortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count)
Definition: stubs.c:54
SCSIPORT_API ULONG NTAPI ScsiPortReadRegisterUlong(IN PULONG Register)
Definition: scsiport.c:1457
SCSIPORT_API SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortConvertUlongToPhysicalAddress(ULONG UlongAddress)
SCSIPORT_API VOID NTAPI ScsiPortCompleteRequest(IN PVOID HwDeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun, IN UCHAR SrbStatus)
Definition: scsiport.c:507
struct _HW_INITIALIZATION_DATA HW_INITIALIZATION_DATA
SCSIPORT_API PVOID NTAPI ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
Definition: scsiport.c:821
struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST * PSCSI_SUPPORTED_CONTROL_TYPE_LIST
SCSIPORT_API VOID NTAPI ScsiPortFlushDma(IN PVOID DeviceExtension)
Definition: scsiport.c:540
SCSIPORT_API VOID __cdecl ScsiDebugPrint(ULONG DebugPrintLevel, PCCHAR DebugMessage,...)
SCSIPORT_API VOID NTAPI ScsiPortReadPortBufferUlong(IN PULONG Port, IN PULONG Buffer, IN ULONG Count)
Definition: stubs.c:74
SCSIPORT_API PVOID NTAPI ScsiPortGetLogicalUnit(IN PVOID HwDeviceExtension, IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun)
Definition: scsiport.c:609
BOOLEAN(NTAPI * PHW_STARTIO)(IN PVOID DeviceExtension, IN PSCSI_REQUEST_BLOCK Srb)
Definition: srb.h:443
BOOLEAN(NTAPI * PHW_ADAPTER_STATE)(IN PVOID DeviceExtension, IN PVOID Context, IN BOOLEAN SaveState)
Definition: srb.h:486
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count)
Definition: scsiport.c:1574
BOOLEAN(NTAPI * PHW_RESET_BUS)(IN PVOID DeviceExtension, IN ULONG PathId)
Definition: srb.h:479
SCSIPORT_API PVOID NTAPI ScsiPortGetDeviceBase(IN PVOID HwDeviceExtension, IN INTERFACE_TYPE BusType, IN ULONG SystemIoBusNumber, IN SCSI_PHYSICAL_ADDRESS IoAddress, IN ULONG NumberOfBytes, IN BOOLEAN InIoSpace)
Definition: scsiport.c:571
SCSIPORT_API VOID NTAPI ScsiPortWritePortUchar(IN PUCHAR Port, IN UCHAR Value)
Definition: scsiport.c:1547
SCSIPORT_API USHORT NTAPI ScsiPortReadRegisterUshort(IN PUSHORT Register)
Definition: scsiport.c:1465
SCSIPORT_API VOID NTAPI ScsiPortIoMapTransfer(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, IN PVOID LogicalAddress, IN ULONG Length)
Definition: scsiport.c:1287
SCSIPORT_API ULONG NTAPI ScsiPortInitialize(IN PVOID Argument1, IN PVOID Argument2, IN struct _HW_INITIALIZATION_DATA *HwInitializationData, IN PVOID HwContext)
Definition: scsiport.c:836
SCSIPORT_API VOID __cdecl ScsiPortNotification(IN SCSI_NOTIFICATION_TYPE NotificationType, IN PVOID HwDeviceExtension,...)
Definition: scsiport.c:1451
#define ScsiPortConvertPhysicalAddressToUlong(Address)
Definition: srb.h:957
struct _SCSI_REQUEST_BLOCK * PSCSI_REQUEST_BLOCK
SCSIPORT_API VOID NTAPI ScsiPortStallExecution(IN ULONG Delay)
Definition: scsiport.c:1489
PHYSICAL_ADDRESS * PSCSI_PHYSICAL_ADDRESS
Definition: srb.h:38
struct _PORT_CONFIGURATION_INFORMATION PORT_CONFIGURATION_INFORMATION
SCSIPORT_API VOID NTAPI ScsiPortWritePortUshort(IN PUSHORT Port, IN USHORT Value)
Definition: scsiport.c:1565
struct _SCSI_WMI_REQUEST_BLOCK * PSCSI_WMI_REQUEST_BLOCK
SCSI_ADAPTER_CONTROL_STATUS(NTAPI * PHW_ADAPTER_CONTROL)(IN PVOID DeviceExtension, IN SCSI_ADAPTER_CONTROL_TYPE ControlType, IN PVOID Parameters)
Definition: srb.h:494
SCSIPORT_API VOID NTAPI ScsiPortWritePortBufferUlong(IN PULONG Port, IN PULONG Buffer, IN ULONG Count)
Definition: scsiport.c:1527
SCSIPORT_API VOID NTAPI ScsiPortReadRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count)
Definition: scsiport.c:1427
SCSIPORT_API UCHAR NTAPI ScsiPortReadRegisterUchar(IN PUCHAR Register)
Definition: scsiport.c:1449
enum _SCSI_ADAPTER_CONTROL_TYPE * PSCSI_ADAPTER_CONTROL_TYPE
SCSIPORT_API VOID NTAPI ScsiPortWritePortUlong(IN PULONG Port, IN ULONG Value)
Definition: scsiport.c:1556
_SCSI_NOTIFICATION_TYPE
Definition: srb.h:530
@ ResetDetected
Definition: srb.h:534
@ WMIEvent
Definition: srb.h:539
@ RequestTimerCall
Definition: srb.h:537
@ CallEnableInterrupts
Definition: srb.h:536
@ CallDisableInterrupts
Definition: srb.h:535
@ RequestComplete
Definition: srb.h:531
@ WMIReregister
Definition: srb.h:540
@ NextRequest
Definition: srb.h:532
@ BusChangeDetected
Definition: srb.h:538
@ NextLuRequest
Definition: srb.h:533
enum _SCSI_ADAPTER_CONTROL_STATUS * PSCSI_ADAPTER_CONTROL_STATUS
SCSIPORT_API SCSI_PHYSICAL_ADDRESS NTAPI ScsiPortGetPhysicalAddress(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, IN PVOID VirtualAddress, OUT ULONG *Length)
Definition: scsiport.c:622
SCSIPORT_API UCHAR NTAPI ScsiPortReadPortUchar(IN PUCHAR Port)
Definition: scsiport.c:1390
SCSIPORT_API PVOID NTAPI ScsiPortGetUncachedExtension(IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, IN ULONG NumberOfBytes)
Definition: scsiport.c:736
ULONG(NTAPI * PHW_FIND_ADAPTER)(IN PVOID DeviceExtension, IN PVOID HwContext, IN PVOID BusInformation, IN PCHAR ArgumentString, IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo, OUT PBOOLEAN Again)
Definition: srb.h:468
SCSIPORT_API VOID NTAPI ScsiPortReadRegisterBufferUchar(IN PUCHAR Register, IN PUCHAR Buffer, IN ULONG Count)
Definition: scsiport.c:1416
struct _ACCESS_RANGE * PACCESS_RANGE
BOOLEAN(NTAPI * PHW_INITIALIZE)(IN PVOID DeviceExtension)
Definition: srb.h:437
#define _IRQL_requires_max_(irql)
Definition: driverspecs.h:230
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
CPPORT Port[4]
Definition: headless.c:35
enum _INTERFACE_TYPE INTERFACE_TYPE
#define _In_reads_bytes_(size)
Definition: ms_sal.h:321
#define _Inout_
Definition: ms_sal.h:378
#define _Field_size_(size)
Definition: ms_sal.h:593
#define _Field_size_bytes_full_(size)
Definition: ms_sal.h:604
#define _Struct_size_bytes_(size)
Definition: ms_sal.h:591
#define _Must_inspect_result_
Definition: ms_sal.h:558
#define _Out_
Definition: ms_sal.h:345
#define _Field_range_(min, max)
Definition: ms_sal.h:609
#define _In_
Definition: ms_sal.h:308
#define _At_buffer_(target, iter, bound, annos)
Definition: ms_sal.h:250
#define _In_opt_
Definition: ms_sal.h:309
_In_ NDIS_ERROR_CODE ErrorCode
Definition: ndis.h:4436
int Count
Definition: noreturn.cpp:7
#define _ANONYMOUS_UNION
Definition: ntbasedef.h:30
_In_ ULONG _In_ ULONG Offset
Definition: ntddpcm.h:101
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
#define BOOLEAN
Definition: pedump.c:73
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
static WCHAR Address[46]
Definition: ping.c:68
_In_opt_ WDFREQUEST _In_ ULONG _In_ BOOLEAN _In_ PCDB Cdb
Definition: scratch.h:159
_Iter_
Definition: memory.h:71
enum _KINTERRUPT_MODE KINTERRUPT_MODE
enum _DMA_SPEED DMA_SPEED
enum _DMA_WIDTH DMA_WIDTH
_In_ UCHAR SenseInfoBufferLength
Definition: scsi.h:3705
struct STOR_ADDRESS_ALIGN _STOR_ADDRESS STOR_ADDRESS
#define SRB_SIGNATURE
Definition: srb.h:616
_STOR_POWER_ACTION
Definition: srb.h:364
@ StorPowerActionWarmEject
Definition: srb.h:372
@ StorPowerActionShutdown
Definition: srb.h:369
@ StorPowerActionReserved
Definition: srb.h:366
@ StorPowerActionNone
Definition: srb.h:365
@ StorPowerActionShutdownReset
Definition: srb.h:370
@ StorPowerActionSleep
Definition: srb.h:367
@ StorPowerActionHibernate
Definition: srb.h:368
@ StorPowerActionShutdownOff
Definition: srb.h:371
enum _STOR_PNP_ACTION STOR_PNP_ACTION
struct _SCSI_PNP_REQUEST_BLOCK * PSCSI_PNP_REQUEST_BLOCK
#define SRBEX_DATA_SCSI_CDB32_LENGTH
Definition: srb.h:506
enum _STOR_PNP_ACTION * PSTOR_PNP_ACTION
_STOR_PNP_ACTION
Definition: srb.h:399
@ StorRemoveDevice
Definition: srb.h:401
@ StorQueryCapabilities
Definition: srb.h:403
@ StorQueryResourceRequirements
Definition: srb.h:404
@ StorFilterResourceRequirements
Definition: srb.h:405
@ StorStopDevice
Definition: srb.h:402
@ StorStartDevice
Definition: srb.h:400
@ StorSurpriseRemoval
Definition: srb.h:406
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB_VAR SRBEX_DATA_SCSI_CDB_VAR
struct SRB_ALIGN _SRBEX_DATA_BIDIRECTIONAL * PSRBEX_DATA_BIDIRECTIONAL
enum _STOR_DEVICE_POWER_STATE * PSTOR_DEVICE_POWER_STATE
struct SRB_ALIGN _SRBEX_DATA_IO_INFO SRBEX_DATA_IO_INFO
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB_VAR * PSRBEX_DATA_SCSI_CDB_VAR
struct SRB_ALIGN _SRBEX_DATA SRBEX_DATA
#define STORAGE_REQUEST_BLOCK_VERSION_1
Definition: srb.h:617
#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MIN
Definition: srb.h:523
#define SRBEX_DATA_IO_INFO_LENGTH
Definition: srb.h:583
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
Definition: srb.h:907
#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MAX
Definition: srb.h:524
enum _STOR_DEVICE_POWER_STATE STOR_DEVICE_POWER_STATE
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB16 SRBEX_DATA_SCSI_CDB16
struct _STOR_DEVICE_CAPABILITIES STOR_DEVICE_CAPABILITIES
struct _SCSI_PNP_REQUEST_BLOCK SCSI_PNP_REQUEST_BLOCK
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA * HwInitializationData
Definition: srb.h:906
struct _STOR_DEVICE_CAPABILITIES * PSTOR_DEVICE_CAPABILITIES
#define SRB_FUNCTION_STORAGE_REQUEST_BLOCK
Definition: srb.h:108
struct _SCSI_POWER_REQUEST_BLOCK SCSI_POWER_REQUEST_BLOCK
struct _SCSI_POWER_REQUEST_BLOCK * PSCSI_POWER_REQUEST_BLOCK
* PSTORAGE_REQUEST_BLOCK
Definition: srb.h:661
SCSIPORT_API VOID NTAPI ScsiPortQuerySystemTime(_Out_ PLARGE_INTEGER CurrentTime)
enum _SRBEXDATATYPE * PSRBEXDATATYPE
#define SRB_ALIGN
Definition: srb.h:452
#define SRBEX_DATA_BIDIRECTIONAL_LENGTH
Definition: srb.h:476
struct SRB_ALIGN _SRBEX_DATA * PSRBEX_DATA
#define SRBEX_DATA_PNP_LENGTH
Definition: srb.h:569
struct SRB_ALIGN _SRBEX_DATA_PNP SRBEX_DATA_PNP
struct SRB_ALIGN _SRBEX_DATA_WMI SRBEX_DATA_WMI
#define POINTER_ALIGN
Definition: srb.h:453
enum _STOR_POWER_ACTION * PSTOR_POWER_ACTION
struct SRB_ALIGN _SRBEX_DATA_IO_INFO * PSRBEX_DATA_IO_INFO
enum _STOR_POWER_ACTION STOR_POWER_ACTION
struct SRB_ALIGN _SRBEX_DATA_POWER SRBEX_DATA_POWER
_SRBEXDATATYPE
Definition: srb.h:456
@ SrbExDataTypeMSReservedStart
Definition: srb.h:466
@ SrbExDataTypeReserved
Definition: srb.h:467
@ SrbExDataTypeWmi
Definition: srb.h:462
@ SrbExDataTypeScsiCdb32
Definition: srb.h:460
@ SrbExDataTypeBidirectional
Definition: srb.h:458
@ SrbExDataTypeScsiCdb16
Definition: srb.h:459
@ SrbExDataTypePower
Definition: srb.h:463
@ SrbExDataTypeScsiCdbVar
Definition: srb.h:461
@ SrbExDataTypePnP
Definition: srb.h:464
@ SrbExDataTypeUnknown
Definition: srb.h:457
@ SrbExDataTypeIoInfo
Definition: srb.h:465
#define SRBEX_DATA_POWER_LENGTH
Definition: srb.h:556
#define SRBEX_DATA_WMI_LENGTH
Definition: srb.h:542
struct SRB_ALIGN _SRBEX_DATA_BIDIRECTIONAL SRBEX_DATA_BIDIRECTIONAL
@ QueryTickCount
Definition: srb.h:743
@ BufferOverrunDetected
Definition: srb.h:744
@ LinkUp
Definition: srb.h:741
@ TraceNotification
Definition: srb.h:745
@ LinkDown
Definition: srb.h:742
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB16 * PSRBEX_DATA_SCSI_CDB16
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB32 * PSRBEX_DATA_SCSI_CDB32
STORAGE_REQUEST_BLOCK
Definition: srb.h:661
struct SRB_ALIGN _SRBEX_DATA_SCSI_CDB32 SRBEX_DATA_SCSI_CDB32
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER * PSTORAGE_REQUEST_BLOCK_HEADER
struct SRB_ALIGN _SRBEX_DATA_POWER * PSRBEX_DATA_POWER
struct SRB_ALIGN _SRBEX_DATA_WMI * PSRBEX_DATA_WMI
struct SRB_ALIGN _SRBEX_DATA_PNP * PSRBEX_DATA_PNP
#define SRBEX_DATA_SCSI_CDB16_LENGTH
Definition: srb.h:489
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER STORAGE_REQUEST_BLOCK_HEADER
enum _SRBEXDATATYPE SRBEXDATATYPE
_STOR_DEVICE_POWER_STATE
Definition: srb.h:355
@ StorPowerDeviceMaximum
Definition: srb.h:361
@ StorPowerDeviceD3
Definition: srb.h:360
@ StorPowerDeviceD2
Definition: srb.h:359
@ StorPowerDeviceUnspecified
Definition: srb.h:356
@ StorPowerDeviceD1
Definition: srb.h:358
@ StorPowerDeviceD0
Definition: srb.h:357
enum _STOR_PNP_ACTION STOR_PNP_ACTION
enum _STOR_DEVICE_POWER_STATE STOR_DEVICE_POWER_STATE
enum _STOR_POWER_ACTION STOR_POWER_ACTION
struct _ACCESS_RANGE ACCESS_RANGE
BOOLEAN(STREAMAPI * PHW_INTERRUPT)(IN PVOID DeviceExtension)
Definition: strmini.h:311
ULONG RangeLength
Definition: srb.h:42
BOOLEAN RangeInMemory
Definition: srb.h:43
SCSI_PHYSICAL_ADDRESS RangeStart
Definition: srb.h:41
USHORT ReservedUshort
Definition: srb.h:588
PHW_INTERRUPT HwInterrupt
Definition: srb.h:569
_ANONYMOUS_UNION union _HW_INITIALIZATION_DATA::@2218 DUMMYUNIONNAME
PHW_ADAPTER_CONTROL HwAdapterControl
Definition: srb.h:777
BOOLEAN TaggedQueuing
Definition: srb.h:582
BOOLEAN ReceiveEvent
Definition: srb.h:585
PHW_ADAPTER_STATE HwAdapterState
Definition: srb.h:573
PHW_DMA_STARTED HwDmaStarted
Definition: srb.h:572
USHORT PortVersionFlags
Definition: srb.h:773
BOOLEAN AutoRequestSense
Definition: srb.h:583
PHW_RESET_BUS HwResetBus
Definition: srb.h:571
USHORT VendorIdLength
Definition: srb.h:586
PHW_STARTIO HwStartIo
Definition: srb.h:568
BOOLEAN MultipleRequestPerLu
Definition: srb.h:584
BOOLEAN NeedPhysicalAddresses
Definition: srb.h:581
ULONG SpecificLuExtensionSize
Definition: srb.h:575
ULONG SrbExtensionSize
Definition: srb.h:576
ULONG HwInitializationDataSize
Definition: srb.h:550
USHORT DeviceIdLength
Definition: srb.h:589
PHW_INITIALIZE HwInitialize
Definition: srb.h:567
ULONG DeviceExtensionSize
Definition: srb.h:574
INTERFACE_TYPE AdapterInterfaceType
Definition: srb.h:565
PHW_FIND_ADAPTER HwFindAdapter
Definition: srb.h:570
BOOLEAN MapBuffers
Definition: srb.h:580
ULONG NumberOfAccessRanges
Definition: srb.h:577
ACCESS_RANGE(* AccessRanges)[]
Definition: srb.h:74
BOOLEAN AtdiskSecondaryClaimed
Definition: srb.h:83
BOOLEAN BufferAccessScsiPortControlled
Definition: srb.h:94
KINTERRUPT_MODE InterruptMode
Definition: srb.h:64
INTERFACE_TYPE AdapterInterfaceType
Definition: srb.h:59
KINTERRUPT_MODE InterruptMode2
Definition: srb.h:101
PVOID SenseInfoBuffer
Definition: srb.h:436
ULONG DataTransferLength
Definition: srb.h:433
UCHAR PnPSubFunction
Definition: srb.h:427
STOR_PNP_ACTION PnPAction
Definition: srb.h:431
UCHAR Reserved4[16]
Definition: srb.h:444
struct _SCSI_REQUEST_BLOCK * NextSrb
Definition: srb.h:437
PVOID OriginalRequest
Definition: srb.h:438
STOR_POWER_ACTION PowerAction
Definition: srb.h:392
UCHAR Reserved5[16]
Definition: srb.h:396
struct _SCSI_REQUEST_BLOCK * NextSrb
Definition: srb.h:389
ULONG DataTransferLength
Definition: srb.h:385
STOR_DEVICE_POWER_STATE DevicePowerState
Definition: srb.h:383
UCHAR QueueTag
Definition: srb.h:256
ULONG TimeOutValue
Definition: srb.h:262
UCHAR TargetId
Definition: srb.h:254
PVOID OriginalRequest
Definition: srb.h:266
UCHAR SenseInfoBufferLength
Definition: srb.h:259
PVOID DataBuffer
Definition: srb.h:263
UCHAR PathId
Definition: srb.h:253
UCHAR QueueAction
Definition: srb.h:257
UCHAR CdbLength
Definition: srb.h:258
UCHAR Cdb[16]
Definition: srb.h:279
PVOID SenseInfoBuffer
Definition: srb.h:264
ULONG QueueSortKey
Definition: srb.h:270
UCHAR Function
Definition: srb.h:250
UCHAR ScsiStatus
Definition: srb.h:252
_ANONYMOUS_UNION union _SCSI_REQUEST_BLOCK::@2217 DUMMYUNIONNAME
ULONG DataTransferLength
Definition: srb.h:261
PVOID SrbExtension
Definition: srb.h:267
ULONG InternalStatus
Definition: srb.h:269
_Field_size_bytes_(DataTransferLength) PVOID DataBuffer
struct _SCSI_REQUEST_BLOCK * NextSrb
Definition: srb.h:265
ULONG SrbFlags
Definition: srb.h:260
USHORT Length
Definition: srb.h:249
UCHAR SrbStatus
Definition: srb.h:251
ULONG LinkTimeoutValue
Definition: srb.h:319
OUT BOOLEAN SupportedTypeList[0]
Definition: srb.h:221
UCHAR WMISubFunction
Definition: srb.h:292
UCHAR Reserved5[16]
Definition: srb.h:308
UCHAR Reserved2[2]
Definition: srb.h:298
ULONG DataTransferLength
Definition: srb.h:300
PVOID OriginalRequest
Definition: srb.h:305
ULONG DataInTransferLength
Definition: srb.h:483
_Field_size_bytes_full_(DataInTransferLength) PVOID POINTER_ALIGN DataInBuffer
_Field_range_(SrbExDataTypeBidirectional, SrbExDataTypeBidirectional) SRBEXDATATYPE Type
_Field_range_(SRBEX_DATA_BIDIRECTIONAL_LENGTH, SRBEX_DATA_BIDIRECTIONAL_LENGTH) ULONG Length
BOOLEAN IsWriteRequest
Definition: srb.h:610
ULONG RWLength
Definition: srb.h:609
UCHAR CachePriority
Definition: srb.h:611
_Field_range_(SRBEX_DATA_IO_INFO_LENGTH, SRBEX_DATA_IO_INFO_LENGTH) ULONG Length
_Field_range_(SrbExDataTypeIoInfo, SrbExDataTypeIoInfo) SRBEXDATATYPE Type
STOR_PNP_ACTION PnPAction
Definition: srb.h:578
UCHAR PnPSubFunction
Definition: srb.h:576
ULONG Reserved1
Definition: srb.h:580
_Field_range_(SRBEX_DATA_PNP_LENGTH, SRBEX_DATA_PNP_LENGTH) ULONG Length
_Field_range_(SrbExDataTypePnP, SrbExDataTypePnP) SRBEXDATATYPE Type
ULONG SrbPnPFlags
Definition: srb.h:579
_Field_range_(SRBEX_DATA_POWER_LENGTH, SRBEX_DATA_POWER_LENGTH) ULONG Length
UCHAR SrbPowerFlags
Definition: srb.h:563
STOR_DEVICE_POWER_STATE DevicePowerState
Definition: srb.h:565
STOR_POWER_ACTION PowerAction
Definition: srb.h:566
_Field_range_(SrbExDataTypePower, SrbExDataTypePower) SRBEXDATATYPE Type
_Field_range_(SRBEX_DATA_SCSI_CDB16_LENGTH, SRBEX_DATA_SCSI_CDB16_LENGTH) ULONG Length
_Field_size_bytes_full_(SenseInfoBufferLength) PVOID POINTER_ALIGN SenseInfoBuffer
_Field_range_(SrbExDataTypeScsiCdb16, SrbExDataTypeScsiCdb16) SRBEXDATATYPE Type
UCHAR SenseInfoBufferLength
Definition: srb.h:497
_Field_range_(SrbExDataTypeScsiCdb32, SrbExDataTypeScsiCdb32) SRBEXDATATYPE Type
_Field_range_(SRBEX_DATA_SCSI_CDB32_LENGTH, SRBEX_DATA_SCSI_CDB32_LENGTH) ULONG Length
_Field_size_bytes_full_(SenseInfoBufferLength) PVOID POINTER_ALIGN SenseInfoBuffer
UCHAR SenseInfoBufferLength
Definition: srb.h:514
_Field_size_bytes_full_(CdbLength) UCHAR POINTER_ALIGN Cdb[ANYSIZE_ARRAY]
_Field_range_(SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MIN, SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MAX) ULONG Length
_Field_size_bytes_full_(SenseInfoBufferLength) PVOID POINTER_ALIGN SenseInfoBuffer
UCHAR SenseInfoBufferLength
Definition: srb.h:532
_Field_range_(SrbExDataTypeScsiCdbVar, SrbExDataTypeScsiCdbVar) SRBEXDATATYPE Type
ULONG Reserved1
Definition: srb.h:552
UCHAR WMIFlags
Definition: srb.h:550
_Field_range_(SrbExDataTypeWmi, SrbExDataTypeWmi) SRBEXDATATYPE Type
_Field_range_(SRBEX_DATA_WMI_LENGTH, SRBEX_DATA_WMI_LENGTH) ULONG Length
PVOID POINTER_ALIGN DataPath
Definition: srb.h:553
UCHAR WMISubFunction
Definition: srb.h:549
ULONG Length
Definition: srb.h:472
_Field_size_bytes_(Length) UCHAR Data[ANYSIZE_ARRAY]
SRBEXDATATYPE Type
Definition: srb.h:471
_Field_range_(SRB_FUNCTION_STORAGE_REQUEST_BLOCK, SRB_FUNCTION_STORAGE_REQUEST_BLOCK) UCHAR Function
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char * PBOOLEAN
Definition: typedefs.h:53
#define ANYSIZE_ARRAY
Definition: typedefs.h:46
#define NTAPI
Definition: typedefs.h:36
uint16_t * PUSHORT
Definition: typedefs.h:56
uint32_t ULONG_PTR
Definition: typedefs.h:65
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
char * PCHAR
Definition: typedefs.h:51
_In_ WDF_SPECIAL_FILE_TYPE NotificationType
Definition: wdfdevice.h:1024
_In_ WDFDEVICE _In_ PPNP_BUS_INFORMATION BusInformation
Definition: wdfdevice.h:3915
_Must_inspect_result_ _In_ WDFDMATRANSACTION _In_ PFN_WDF_PROGRAM_DMA _In_ WDF_DMA_DIRECTION _In_ PMDL _In_ PVOID VirtualAddress
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
Definition: wdfio.h:869
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
Definition: wdfregistry.h:413
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
Definition: wdfresource.h:68
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
Definition: halfuncs.h:159
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
Definition: iotypes.h:1098
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _Inout_ PLARGE_INTEGER NumberOfBytes
Definition: iotypes.h:1036
unsigned char UCHAR
Definition: xmlstorage.h:181