ReactOS 0.4.15-dev-6049-ge54b32b
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#define SCSI_MAXIMUM_LOGICAL_UNITS 8
31#define SCSI_MAXIMUM_TARGETS_PER_BUS 128
32#define SCSI_MAXIMUM_LUNS_PER_TARGET 255
33#define SCSI_MAXIMUM_BUSES 8
34#define SCSI_MINIMUM_PHYSICAL_BREAKS 16
35#define SCSI_MAXIMUM_PHYSICAL_BREAKS 255
36#define SCSI_MAXIMUM_TARGETS 8
37
38/* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */
39#define SCSI_DMA64_MINIPORT_SUPPORTED 0x01
40#define SCSI_DMA64_SYSTEM_SUPPORTED 0x80
41#if (NTDDI_VERSION > NTDDI_WS03SP1)
42#define SCSI_DMA64_MINIPORT_FULL64BIT_SUPPORTED 0x02
43#endif
44
45#define SP_UNINITIALIZED_VALUE ((ULONG) ~0)
46#define SP_UNTAGGED ((UCHAR) ~0)
47
48/* Asynchronous events */
49#define SRBEV_BUS_RESET 0x0001
50#define SRBEV_SCSI_ASYNC_NOTIFICATION 0x0002
51
52#define MAXIMUM_CDB_SIZE 12
53
54#if DBG
55#define DebugPrint(x) ScsiDebugPrint x
56#else
57#define DebugPrint(x)
58#endif
59
60#define SCSI_COMBINE_BUS_TARGET(Bus, Target)( \
61 ((((UCHAR) (Target)) & ~(0x20 - 1)) << 8) | \
62 (((UCHAR) (Bus)) << 5) | \
63 (((UCHAR) (Target)) & (0x20 - 1)))
64
65#define SCSI_DECODE_BUS_TARGET(Value, Bus, Target)( \
66 Bus = (UCHAR) ((Value) >> 5), \
67 Target = (UCHAR) ((((Value) >> 8) & ~(0x20 - 1)) | ((Value) & (0x20 - 1))))
68
69/* SCSI_REQUEST_BLOCK.Function constants */
70#define SRB_FUNCTION_EXECUTE_SCSI 0x00
71#define SRB_FUNCTION_CLAIM_DEVICE 0x01
72#define SRB_FUNCTION_IO_CONTROL 0x02
73#define SRB_FUNCTION_RECEIVE_EVENT 0x03
74#define SRB_FUNCTION_RELEASE_QUEUE 0x04
75#define SRB_FUNCTION_ATTACH_DEVICE 0x05
76#define SRB_FUNCTION_RELEASE_DEVICE 0x06
77#define SRB_FUNCTION_SHUTDOWN 0x07
78#define SRB_FUNCTION_FLUSH 0x08
79#define SRB_FUNCTION_PROTOCOL_COMMAND 0x09
80#define SRB_FUNCTION_ABORT_COMMAND 0x10
81#define SRB_FUNCTION_RELEASE_RECOVERY 0x11
82#define SRB_FUNCTION_RESET_BUS 0x12
83#define SRB_FUNCTION_RESET_DEVICE 0x13
84#define SRB_FUNCTION_TERMINATE_IO 0x14
85#define SRB_FUNCTION_FLUSH_QUEUE 0x15
86#define SRB_FUNCTION_REMOVE_DEVICE 0x16
87#define SRB_FUNCTION_WMI 0x17
88#define SRB_FUNCTION_LOCK_QUEUE 0x18
89#define SRB_FUNCTION_UNLOCK_QUEUE 0x19
90#define SRB_FUNCTION_QUIESCE_DEVICE 0x1a
91#define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20
92#define SRB_FUNCTION_SET_LINK_TIMEOUT 0x21
93#define SRB_FUNCTION_LINK_TIMEOUT_OCCURRED 0x22
94#define SRB_FUNCTION_LINK_TIMEOUT_COMPLETE 0x23
95#define SRB_FUNCTION_POWER 0x24
96#define SRB_FUNCTION_PNP 0x25
97#define SRB_FUNCTION_DUMP_POINTERS 0x26
98#define SRB_FUNCTION_FREE_DUMP_POINTERS 0x27
99#define SRB_FUNCTION_STORAGE_REQUEST_BLOCK 0x28 // special value
100#define SRB_FUNCTION_CRYPTO_OPERATION 0x29
101#define SRB_FUNCTION_GET_DUMP_INFO 0x2a
102#define SRB_FUNCTION_FREE_DUMP_INFO 0x2b
103
104/* SCSI_REQUEST_BLOCK.SrbStatus constants */
105#define SRB_STATUS_PENDING 0x00
106#define SRB_STATUS_SUCCESS 0x01
107#define SRB_STATUS_ABORTED 0x02
108#define SRB_STATUS_ABORT_FAILED 0x03
109#define SRB_STATUS_ERROR 0x04
110#define SRB_STATUS_BUSY 0x05
111#define SRB_STATUS_INVALID_REQUEST 0x06
112#define SRB_STATUS_INVALID_PATH_ID 0x07
113#define SRB_STATUS_NO_DEVICE 0x08
114#define SRB_STATUS_TIMEOUT 0x09
115#define SRB_STATUS_SELECTION_TIMEOUT 0x0A
116#define SRB_STATUS_COMMAND_TIMEOUT 0x0B
117#define SRB_STATUS_MESSAGE_REJECTED 0x0D
118#define SRB_STATUS_BUS_RESET 0x0E
119#define SRB_STATUS_PARITY_ERROR 0x0F
120#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10
121#define SRB_STATUS_NO_HBA 0x11
122#define SRB_STATUS_DATA_OVERRUN 0x12
123#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13
124#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
125#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15
126#define SRB_STATUS_REQUEST_FLUSHED 0x16
127#define SRB_STATUS_INVALID_LUN 0x20
128#define SRB_STATUS_INVALID_TARGET_ID 0x21
129#define SRB_STATUS_BAD_FUNCTION 0x22
130#define SRB_STATUS_ERROR_RECOVERY 0x23
131#define SRB_STATUS_NOT_POWERED 0x24
132#define SRB_STATUS_LINK_DOWN 0x25
133#define SRB_STATUS_INSUFFICIENT_RESOURCES 0x26
134#define SRB_STATUS_THROTTLED_REQUEST 0x27
135#define SRB_STATUS_INTERNAL_ERROR 0x30
136
137#define SRB_STATUS_QUEUE_FROZEN 0x40
138#define SRB_STATUS_AUTOSENSE_VALID 0x80
139
140#define SRB_STATUS(Status) \
141 (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
142
143/* SCSI_REQUEST_BLOCK.SrbFlags constants */
144#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002
145#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004
146#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
147#define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010
148#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020
149#define SRB_FLAGS_DATA_IN 0x00000040
150#define SRB_FLAGS_DATA_OUT 0x00000080
151#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000
152#define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
153#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100
154#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200
155#define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400
156#define SRB_FLAGS_D3_PROCESSING 0x00000800
157#define SRB_FLAGS_SEQUENTIAL_REQUIRED 0x00001000
158#define SRB_FLAGS_IS_ACTIVE 0x00010000
159#define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000
160#define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000
161#define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000
162#define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000
163#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000
164#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000
165#define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000
166#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
167#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
168
169#if DBG
170#define SCSI_PORT_SIGNATURE 0x54524f50
171#endif
172
173#define SRB_SIMPLE_TAG_REQUEST 0x20
174#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21
175#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22
176
177#define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x0001
178#define SRB_POWER_FLAGS_ADAPTER_REQUEST 0x0001
179#define SRB_PNP_FLAGS_ADAPTER_REQUEST 0x0001
180
181#define SP_BUS_PARITY_ERROR 0x0001
182#define SP_UNEXPECTED_DISCONNECT 0x0002
183#define SP_INVALID_RESELECTION 0x0003
184#define SP_BUS_TIME_OUT 0x0004
185#define SP_PROTOCOL_ERROR 0x0005
186#define SP_INTERNAL_ADAPTER_ERROR 0x0006
187#define SP_REQUEST_TIMEOUT 0x0007
188#define SP_IRQ_NOT_RESPONDING 0x0008
189#define SP_BAD_FW_WARNING 0x0009
190#define SP_BAD_FW_ERROR 0x000a
191#define SP_LOST_WMI_MINIPORT_REQUEST 0x000b
192
193#define SP_VER_TRACE_SUPPORT 0x0010
194
195#define SP_RETURN_NOT_FOUND 0
196#define SP_RETURN_FOUND 1
197#define SP_RETURN_ERROR 2
198#define SP_RETURN_BAD_CONFIG 3
199
201
202typedef struct _ACCESS_RANGE {
207
208typedef struct _PORT_CONFIGURATION_INFORMATION {
261
262#define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION)
263
264#ifdef __GNUC__
265__extension__ /* enums limited to range of integer */
266#endif
276
281
286
287typedef struct _SCSI_REQUEST_BLOCK {
294 UCHAR Lun;
307 _ANONYMOUS_UNION union {
312#if defined(_WIN64)
314#endif
315 UCHAR Cdb[16];
317
318#define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK)
319
320typedef struct _SCSI_WMI_REQUEST_BLOCK {
327 UCHAR Lun;
330 UCHAR Reserved2[2];
340#if (NTDDI_VERSION >= NTDDI_WS03SP1) && defined(_WIN64)
341 ULONG Reserved6;
342#endif
343 UCHAR Reserved5[16];
345
354
355typedef enum _STOR_POWER_ACTION {
365
384#if defined(_WIN64)
386#endif
389
390typedef enum _STOR_PNP_ACTION {
399
413
432#if defined(_WIN64)
434#endif
437
438#if (NTDDI_VERSION >= NTDDI_WIN8)
439#if defined(_WIN64)
440#define SRB_ALIGN DECLSPEC_ALIGN(8)
441#define POINTER_ALIGN DECLSPEC_ALIGN(8)
442#else
443#define SRB_ALIGN
444#define POINTER_ALIGN
445#endif
446
447typedef enum _SRBEXDATATYPE {
458 SrbExDataTypeReserved = 0xffffffff
460
461typedef struct SRB_ALIGN _SRBEX_DATA {
466
467#define SRBEX_DATA_BIDIRECTIONAL_LENGTH ((2 * sizeof(ULONG)) + sizeof(PVOID))
468
476 _Field_size_bytes_full_(DataInTransferLength)
477 PVOID POINTER_ALIGN DataInBuffer;
479
480#define SRBEX_DATA_SCSI_CDB16_LENGTH ((20 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID))
481
493 PVOID POINTER_ALIGN SenseInfoBuffer;
496
497#define SRBEX_DATA_SCSI_CDB32_LENGTH ((36 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID))
498
510 PVOID POINTER_ALIGN SenseInfoBuffer;
513
514#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MIN ((4 * sizeof(UCHAR)) + (3 * sizeof(ULONG)) + sizeof(PVOID))
515#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MAX 0xffffffffUL
516
528 PVOID POINTER_ALIGN SenseInfoBuffer;
532
533#define SRBEX_DATA_WMI_LENGTH ((4 * sizeof(UCHAR)) + sizeof(ULONG) + sizeof(PVOID))
534
546
547#define SRBEX_DATA_POWER_LENGTH ((4 * sizeof(UCHAR)) + sizeof(STOR_DEVICE_POWER_STATE) + sizeof(STOR_POWER_ACTION))
548
559
560#define SRBEX_DATA_PNP_LENGTH ((4 * sizeof(UCHAR)) + sizeof(STOR_PNP_ACTION) + (2 * sizeof(ULONG)))
561
573
574#define SRBEX_DATA_IO_INFO_LENGTH ((5 * sizeof(ULONG)) + (4 * sizeof(UCHAR)))
575
576#define REQUEST_INFO_NO_CACHE_FLAG 0x00000001
577#define REQUEST_INFO_PAGING_IO_FLAG 0x00000002
578#define REQUEST_INFO_SEQUENTIAL_IO_FLAG 0x00000004
579#define REQUEST_INFO_TEMPORARY_FLAG 0x00000008
580#define REQUEST_INFO_WRITE_THROUGH_FLAG 0x00000010
581#define REQUEST_INFO_HYBRID_WRITE_THROUGH_FLAG 0x00000020
582
583#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
584
585#define REQUEST_INFO_NO_FILE_OBJECT_FLAG 0x00000040
586#define REQUEST_INFO_VOLSNAP_IO_FLAG 0x00000080
587#define REQUEST_INFO_STREAM_FLAG 0x00000100
588
589#endif /* (NTDDI_VERSION >= NTDDI_WINTHRESHOLD) */
590
591#define REQUEST_INFO_VALID_CACHEPRIORITY_FLAG 0x80000000
592
606
607#define SRB_SIGNATURE 0x53524258
608#define STORAGE_REQUEST_BLOCK_VERSION_1 0x1
609
616
617typedef _Struct_size_bytes_(SrbLength) struct SRB_ALIGN _STORAGE_REQUEST_BLOCK {
621 UCHAR SrbStatus;
622 UCHAR ReservedUchar[4];
627 ULONG SrbLength;
628 ULONG SrbFunction;
629 ULONG SrbFlags;
630 ULONG ReservedUlong;
631 ULONG RequestTag;
632 USHORT RequestPriority;
633 USHORT RequestAttribute;
634 ULONG TimeOutValue;
635 ULONG SystemStatus;
636 ULONG ZeroGuard1;
637 _Field_range_(sizeof(STORAGE_REQUEST_BLOCK), SrbLength - sizeof(STOR_ADDRESS))
638 ULONG AddressOffset;
639 ULONG NumSrbExData;
640 ULONG DataTransferLength;
641 _Field_size_bytes_full_(DataTransferLength)
642 PVOID POINTER_ALIGN DataBuffer;
643 PVOID POINTER_ALIGN ZeroGuard2;
645 PVOID POINTER_ALIGN ClassContext;
646 PVOID POINTER_ALIGN PortContext;
647 PVOID POINTER_ALIGN MiniportContext;
648 struct _STORAGE_REQUEST_BLOCK POINTER_ALIGN *NextSrb;
649 _At_buffer_(SrbExDataOffset, _Iter_, NumSrbExData, _Field_range_(0, SrbLength - sizeof(SRBEX_DATA)))
650 _Field_size_(NumSrbExData)
651 ULONG SrbExDataOffset[ANYSIZE_ARRAY];
653
654#define SRB_TYPE_SCSI_REQUEST_BLOCK 0
655#define SRB_TYPE_STORAGE_REQUEST_BLOCK 1
656
657#define STORAGE_ADDRESS_TYPE_BTL8 0
658#endif /* (NTDDI_VERSION >= NTDDI_WIN8) */
659
660typedef
664 _In_ PVOID DeviceExtension);
665
666typedef
670 _In_ PVOID DeviceExtension,
672
673typedef
677 _In_ PVOID DeviceExtension);
678
679typedef VOID
681 _In_ PVOID DeviceExtension);
682
683typedef VOID
685 _In_ PVOID DeviceExtension);
686
687typedef
691 _In_ PVOID DeviceExtension,
694 _In_ PCHAR ArgumentString,
696 _Out_ PBOOLEAN Again);
697
698typedef
702 _In_ PVOID DeviceExtension,
704
705typedef
709 _In_ PVOID DeviceExtension,
712
713typedef
717 _In_ PVOID DeviceExtension,
720
738
739typedef struct _HW_INITIALIZATION_DATA {
762 _ANONYMOUS_UNION union {
770
771#if defined(_NTDDK_)
772#define SCSIPORT_API
773#else
774#define SCSIPORT_API DECLSPEC_IMPORT
775#endif
776
778VOID
779NTAPI
781 _In_ PVOID HwDeviceExtension,
784 _In_ UCHAR Lun,
785 _In_ UCHAR SrbStatus);
786
789ULONG
790NTAPI
793
794#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
795#define ScsiPortConvertPhysicalAddressToULongPtr(Address) ((ULONG_PTR)((Address).QuadPart))
796
800NTAPI
802 _In_ ULONG_PTR UlongAddress);
803
805VOID
806NTAPI
808 _In_ PVOID DeviceExtension);
809
811VOID
812NTAPI
814 _In_ PVOID HwDeviceExtension,
815 _In_ PVOID MappedAddress);
816
819ULONG
820NTAPI
822 _In_ PVOID DeviceExtension,
823 _In_ ULONG BusDataType,
824 _In_ ULONG SystemIoBusNumber,
828
831PVOID
832NTAPI
834 _In_ PVOID HwDeviceExtension,
836 _In_ ULONG SystemIoBusNumber,
837 _In_ SCSI_PHYSICAL_ADDRESS IoAddress,
839 _In_ BOOLEAN InIoSpace);
840
843PVOID
844NTAPI
846 _In_ PVOID HwDeviceExtension,
849 _In_ UCHAR Lun);
850
854NTAPI
856 _In_ PVOID HwDeviceExtension,
860
864NTAPI
866 _In_ PVOID DeviceExtension,
869 _In_ UCHAR Lun,
870 _In_ LONG QueueTag);
871
874PVOID
875NTAPI
877 _In_ PVOID HwDeviceExtension,
880
883PVOID
884NTAPI
886 _In_ PVOID HwDeviceExtension,
888
892ULONG
893NTAPI
899
901VOID
902NTAPI
904 _In_ PVOID HwDeviceExtension,
906 _In_ PVOID LogicalAddress,
908
910VOID
911NTAPI
913 _In_ PVOID HwDeviceExtension,
917 _In_ UCHAR Lun,
919 _In_ ULONG UniqueId);
920
922VOID
926 _In_ PVOID HwDeviceExtension,
927 ...);
928
930VOID
931NTAPI
933 _Out_ PLARGE_INTEGER CurrentTime);
934
937ULONG
938NTAPI
940 _In_ PVOID DeviceExtension,
941 _In_ ULONG BusDataType,
942 _In_ ULONG SystemIoBusNumber,
947
949VOID
950NTAPI
952 _In_ ULONG Delay);
953
957NTAPI
959 _In_ PVOID HwDeviceExtension,
961 _In_ ULONG SystemIoBusNumber,
962 _In_ SCSI_PHYSICAL_ADDRESS IoAddress,
964 _In_ BOOLEAN InIoSpace);
965
967VOID
970 ULONG DebugPrintLevel,
971 PCCHAR DebugMessage,
972 ...);
973
974#if defined(_M_AMD64)
975
976#define ScsiPortReadPortUchar READ_PORT_UCHAR
977#define ScsiPortReadPortUshort READ_PORT_USHORT
978#define ScsiPortReadPortUlong READ_PORT_ULONG
979
980#define ScsiPortReadPortBufferUchar READ_PORT_BUFFER_UCHAR
981#define ScsiPortReadPortBufferUshort READ_PORT_BUFFER_USHORT
982#define ScsiPortReadPortBufferUlong READ_PORT_BUFFER_ULONG
983
984#define ScsiPortReadRegisterUchar READ_REGISTER_UCHAR
985#define ScsiPortReadRegisterUshort READ_REGISTER_USHORT
986#define ScsiPortReadRegisterUlong READ_REGISTER_ULONG
987
988#define ScsiPortReadRegisterBufferUchar READ_REGISTER_BUFFER_UCHAR
989#define ScsiPortReadRegisterBufferUshort READ_REGISTER_BUFFER_USHORT
990#define ScsiPortReadRegisterBufferUlong READ_REGISTER_BUFFER_ULONG
991
992#define ScsiPortWritePortUchar WRITE_PORT_UCHAR
993#define ScsiPortWritePortUshort WRITE_PORT_USHORT
994#define ScsiPortWritePortUlong WRITE_PORT_ULONG
995
996#define ScsiPortWritePortBufferUchar WRITE_PORT_BUFFER_UCHAR
997#define ScsiPortWritePortBufferUshort WRITE_PORT_BUFFER_USHORT
998#define ScsiPortWritePortBufferUlong WRITE_PORT_BUFFER_ULONG
999
1000#define ScsiPortWriteRegisterUchar WRITE_REGISTER_UCHAR
1001#define ScsiPortWriteRegisterUshort WRITE_REGISTER_USHORT
1002#define ScsiPortWriteRegisterUlong WRITE_REGISTER_ULONG
1003
1004#define ScsiPortWriteRegisterBufferUchar WRITE_REGISTER_BUFFER_UCHAR
1005#define ScsiPortWriteRegisterBufferUshort WRITE_REGISTER_BUFFER_USHORT
1006#define ScsiPortWriteRegisterBufferUlong WRITE_REGISTER_BUFFER_ULONG
1007
1008#define ScsiPortMoveMemory memmove
1009
1010#else
1011
1014UCHAR
1015NTAPI
1017 _In_ PUCHAR Port);
1018
1021ULONG
1022NTAPI
1024 _In_ PULONG Port);
1025
1028USHORT
1029NTAPI
1031 _In_ PUSHORT Port);
1032
1034VOID
1035NTAPI
1039 _In_ ULONG Count);
1040
1042VOID
1043NTAPI
1047 _In_ ULONG Count);
1048
1050VOID
1051NTAPI
1055 _In_ ULONG Count);
1056
1059UCHAR
1060NTAPI
1062 _In_ PUCHAR Register);
1063
1066ULONG
1067NTAPI
1069 _In_ PULONG Register);
1070
1073USHORT
1074NTAPI
1076 _In_ PUSHORT Register);
1077
1079VOID
1080NTAPI
1082 _In_ PUCHAR Register,
1084 _In_ ULONG Count);
1085
1087VOID
1088NTAPI
1090 _In_ PULONG Register,
1092 _In_ ULONG Count);
1093
1095VOID
1096NTAPI
1098 _In_ PUSHORT Register,
1100 _In_ ULONG Count);
1101
1103VOID
1104NTAPI
1107 _In_ UCHAR Value);
1108
1110VOID
1111NTAPI
1114 _In_ ULONG Value);
1115
1117VOID
1118NTAPI
1121 _In_ USHORT Value);
1122
1124VOID
1125NTAPI
1129 _In_ ULONG Count);
1130
1132VOID
1133NTAPI
1137 _In_ ULONG Count);
1138
1140VOID
1141NTAPI
1145 _In_ ULONG Count);
1146
1148VOID
1149NTAPI
1151 _In_ PUCHAR Register,
1152 _In_ UCHAR Value);
1153
1155VOID
1156NTAPI
1158 _In_ PULONG Register,
1159 _In_ ULONG Value);
1160
1162VOID
1163NTAPI
1165 _In_ PUSHORT Register,
1166 _In_ USHORT Value);
1167
1169VOID
1170NTAPI
1172 _In_ PUCHAR Register,
1174 _In_ ULONG Count);
1175
1177VOID
1178NTAPI
1180 _In_ PULONG Register,
1182 _In_ ULONG Count);
1183
1185VOID
1186NTAPI
1188 _In_ PUSHORT Register,
1190 _In_ ULONG Count);
1191
1193VOID
1194NTAPI
1198 _In_ ULONG Length);
1199
1200#endif /* defined(_M_AMD64) */
1201
1202#ifdef __cplusplus
1203}
1204#endif
1205
1206#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:1290
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:1488
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:1429
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:1528
enum _SCSI_NOTIFICATION_TYPE SCSI_NOTIFICATION_TYPE
SCSIPORT_API ULONG NTAPI ScsiPortReadPortUlong(IN PULONG Port)
Definition: scsiport.c:1391
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUlong(IN PULONG Register, IN ULONG Value)
Definition: scsiport.c:1607
SCSIPORT_API VOID NTAPI ScsiPortFreeDeviceBase(IN PVOID HwDeviceExtension, IN PVOID MappedAddress)
Definition: scsiport.c:547
SCSIPORT_API USHORT NTAPI ScsiPortReadPortUshort(IN PUSHORT Port)
Definition: scsiport.c:1399
SCSIPORT_API VOID NTAPI ScsiPortWritePortBufferUchar(IN PUCHAR Port, IN PUCHAR Buffer, IN ULONG Count)
Definition: scsiport.c:1508
SCSIPORT_API VOID NTAPI ScsiPortMoveMemory(IN PVOID WriteBuffer, IN PVOID ReadBuffer, IN ULONG Length)
Definition: scsiport.c:1305
_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:1576
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:650
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:1464
enum _SCSI_ADAPTER_CONTROL_STATUS SCSI_ADAPTER_CONTROL_STATUS
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUchar(IN PUCHAR Register, IN UCHAR Value)
Definition: scsiport.c:1598
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterBufferUshort(IN PUSHORT Register, IN PUSHORT Buffer, IN ULONG Count)
Definition: scsiport.c:1587
SCSIPORT_API VOID NTAPI ScsiPortWriteRegisterUshort(IN PUSHORT Register, IN USHORT Value)
Definition: scsiport.c:1616
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:556
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:1448
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:505
struct _HW_INITIALIZATION_DATA HW_INITIALIZATION_DATA
SCSIPORT_API PVOID NTAPI ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension, IN SCSI_PHYSICAL_ADDRESS PhysicalAddress)
Definition: scsiport.c:813
struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST * PSCSI_SUPPORTED_CONTROL_TYPE_LIST
SCSIPORT_API VOID NTAPI ScsiPortFlushDma(IN PVOID DeviceExtension)
Definition: scsiport.c:538
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:601
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:1565
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:569
SCSIPORT_API VOID NTAPI ScsiPortWritePortUchar(IN PUCHAR Port, IN UCHAR Value)
Definition: scsiport.c:1538
SCSIPORT_API USHORT NTAPI ScsiPortReadRegisterUshort(IN PUSHORT Register)
Definition: scsiport.c:1456
SCSIPORT_API VOID NTAPI ScsiPortIoMapTransfer(IN PVOID HwDeviceExtension, IN PSCSI_REQUEST_BLOCK Srb, IN PVOID LogicalAddress, IN ULONG Length)
Definition: scsiport.c:1278
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:1480
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:1556
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:1518
SCSIPORT_API VOID NTAPI ScsiPortReadRegisterBufferUlong(IN PULONG Register, IN PULONG Buffer, IN ULONG Count)
Definition: scsiport.c:1418
SCSIPORT_API UCHAR NTAPI ScsiPortReadRegisterUchar(IN PUCHAR Register)
Definition: scsiport.c:1440
enum _SCSI_ADAPTER_CONTROL_TYPE * PSCSI_ADAPTER_CONTROL_TYPE
SCSIPORT_API VOID NTAPI ScsiPortWritePortUlong(IN PULONG Port, IN ULONG Value)
Definition: scsiport.c:1547
_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:614
SCSIPORT_API UCHAR NTAPI ScsiPortReadPortUchar(IN PUCHAR Port)
Definition: scsiport.c:1381
SCSIPORT_API PVOID NTAPI ScsiPortGetUncachedExtension(IN PVOID HwDeviceExtension, IN PPORT_CONFIGURATION_INFORMATION ConfigInfo, IN ULONG NumberOfBytes)
Definition: scsiport.c:728
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:1407
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:607
_STOR_POWER_ACTION
Definition: srb.h:355
@ StorPowerActionWarmEject
Definition: srb.h:363
@ StorPowerActionShutdown
Definition: srb.h:360
@ StorPowerActionReserved
Definition: srb.h:357
@ StorPowerActionNone
Definition: srb.h:356
@ StorPowerActionShutdownReset
Definition: srb.h:361
@ StorPowerActionSleep
Definition: srb.h:358
@ StorPowerActionHibernate
Definition: srb.h:359
@ StorPowerActionShutdownOff
Definition: srb.h:362
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:497
enum _STOR_PNP_ACTION * PSTOR_PNP_ACTION
_STOR_PNP_ACTION
Definition: srb.h:390
@ StorRemoveDevice
Definition: srb.h:392
@ StorQueryCapabilities
Definition: srb.h:394
@ StorQueryResourceRequirements
Definition: srb.h:395
@ StorFilterResourceRequirements
Definition: srb.h:396
@ StorStopDevice
Definition: srb.h:393
@ StorStartDevice
Definition: srb.h:391
@ StorSurpriseRemoval
Definition: srb.h:397
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:608
#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MIN
Definition: srb.h:514
#define SRBEX_DATA_IO_INFO_LENGTH
Definition: srb.h:574
_Must_inspect_result_ _In_ PVOID _In_ struct _HW_INITIALIZATION_DATA _In_ PVOID HwContext
Definition: srb.h:898
#define SRBEX_DATA_SCSI_CDB_VAR_LENGTH_MAX
Definition: srb.h:515
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:897
struct _STOR_DEVICE_CAPABILITIES * PSTOR_DEVICE_CAPABILITIES
#define SRB_FUNCTION_STORAGE_REQUEST_BLOCK
Definition: srb.h:99
struct _SCSI_POWER_REQUEST_BLOCK SCSI_POWER_REQUEST_BLOCK
struct _SCSI_POWER_REQUEST_BLOCK * PSCSI_POWER_REQUEST_BLOCK
* PSTORAGE_REQUEST_BLOCK
Definition: srb.h:652
SCSIPORT_API VOID NTAPI ScsiPortQuerySystemTime(_Out_ PLARGE_INTEGER CurrentTime)
enum _SRBEXDATATYPE * PSRBEXDATATYPE
#define SRB_ALIGN
Definition: srb.h:443
#define SRBEX_DATA_BIDIRECTIONAL_LENGTH
Definition: srb.h:467
struct SRB_ALIGN _SRBEX_DATA * PSRBEX_DATA
#define SRBEX_DATA_PNP_LENGTH
Definition: srb.h:560
struct SRB_ALIGN _SRBEX_DATA_PNP SRBEX_DATA_PNP
struct SRB_ALIGN _SRBEX_DATA_WMI SRBEX_DATA_WMI
#define POINTER_ALIGN
Definition: srb.h:444
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:447
@ SrbExDataTypeMSReservedStart
Definition: srb.h:457
@ SrbExDataTypeReserved
Definition: srb.h:458
@ SrbExDataTypeWmi
Definition: srb.h:453
@ SrbExDataTypeScsiCdb32
Definition: srb.h:451
@ SrbExDataTypeBidirectional
Definition: srb.h:449
@ SrbExDataTypeScsiCdb16
Definition: srb.h:450
@ SrbExDataTypePower
Definition: srb.h:454
@ SrbExDataTypeScsiCdbVar
Definition: srb.h:452
@ SrbExDataTypePnP
Definition: srb.h:455
@ SrbExDataTypeUnknown
Definition: srb.h:448
@ SrbExDataTypeIoInfo
Definition: srb.h:456
#define SRBEX_DATA_POWER_LENGTH
Definition: srb.h:547
#define SRBEX_DATA_WMI_LENGTH
Definition: srb.h:533
struct SRB_ALIGN _SRBEX_DATA_BIDIRECTIONAL SRBEX_DATA_BIDIRECTIONAL
@ QueryTickCount
Definition: srb.h:734
@ BufferOverrunDetected
Definition: srb.h:735
@ LinkUp
Definition: srb.h:732
@ TraceNotification
Definition: srb.h:736
@ LinkDown
Definition: srb.h:733
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:652
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:480
struct SRB_ALIGN _STORAGE_REQUEST_BLOCK_HEADER STORAGE_REQUEST_BLOCK_HEADER
enum _SRBEXDATATYPE SRBEXDATATYPE
_STOR_DEVICE_POWER_STATE
Definition: srb.h:346
@ StorPowerDeviceMaximum
Definition: srb.h:352
@ StorPowerDeviceD3
Definition: srb.h:351
@ StorPowerDeviceD2
Definition: srb.h:350
@ StorPowerDeviceUnspecified
Definition: srb.h:347
@ StorPowerDeviceD1
Definition: srb.h:349
@ StorPowerDeviceD0
Definition: srb.h:348
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
PHW_ADAPTER_CONTROL HwAdapterControl
Definition: srb.h:768
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:764
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
_ANONYMOUS_UNION union _HW_INITIALIZATION_DATA::@2191 DUMMYUNIONNAME
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:427
ULONG DataTransferLength
Definition: srb.h:424
UCHAR PnPSubFunction
Definition: srb.h:418
STOR_PNP_ACTION PnPAction
Definition: srb.h:422
UCHAR Reserved4[16]
Definition: srb.h:435
struct _SCSI_REQUEST_BLOCK * NextSrb
Definition: srb.h:428
PVOID OriginalRequest
Definition: srb.h:429
STOR_POWER_ACTION PowerAction
Definition: srb.h:383
UCHAR Reserved5[16]
Definition: srb.h:387
struct _SCSI_REQUEST_BLOCK * NextSrb
Definition: srb.h:380
ULONG DataTransferLength
Definition: srb.h:376
STOR_DEVICE_POWER_STATE DevicePowerState
Definition: srb.h:374
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
ULONG DataTransferLength
Definition: srb.h:261
PVOID SrbExtension
Definition: srb.h:267
ULONG InternalStatus
Definition: srb.h:269
_ANONYMOUS_UNION union _SCSI_REQUEST_BLOCK::@2190 DUMMYUNIONNAME
_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:310
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:474
_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:601
ULONG RWLength
Definition: srb.h:600
UCHAR CachePriority
Definition: srb.h:602
_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:569
UCHAR PnPSubFunction
Definition: srb.h:567
ULONG Reserved1
Definition: srb.h:571
_Field_range_(SRBEX_DATA_PNP_LENGTH, SRBEX_DATA_PNP_LENGTH) ULONG Length
_Field_range_(SrbExDataTypePnP, SrbExDataTypePnP) SRBEXDATATYPE Type
ULONG SrbPnPFlags
Definition: srb.h:570
_Field_range_(SRBEX_DATA_POWER_LENGTH, SRBEX_DATA_POWER_LENGTH) ULONG Length
UCHAR SrbPowerFlags
Definition: srb.h:554
STOR_DEVICE_POWER_STATE DevicePowerState
Definition: srb.h:556
STOR_POWER_ACTION PowerAction
Definition: srb.h:557
_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:488
_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:505
_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:523
_Field_range_(SrbExDataTypeScsiCdbVar, SrbExDataTypeScsiCdbVar) SRBEXDATATYPE Type
ULONG Reserved1
Definition: srb.h:543
UCHAR WMIFlags
Definition: srb.h:541
_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:544
UCHAR WMISubFunction
Definition: srb.h:540
ULONG Length
Definition: srb.h:463
_Field_size_bytes_(Length) UCHAR Data[ANYSIZE_ARRAY]
SRBEXDATATYPE Type
Definition: srb.h:462
_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