ReactOS  0.4.15-dev-1367-g07cc0b5
classpnp.h
Go to the documentation of this file.
1 
2 #pragma once
3 
4 #define _CLASS_
5 
6 #include <ntdddisk.h>
7 #include <ntddcdrm.h>
8 #include <ntddtape.h>
9 #include <ntddscsi.h>
10 #include <ntddstor.h>
11 
12 #include <stdio.h>
13 
14 #include <scsi.h>
15 
16 #define max(a,b) (((a) > (b)) ? (a) : (b))
17 #define min(a,b) (((a) < (b)) ? (a) : (b))
18 
19 #define SRB_CLASS_FLAGS_LOW_PRIORITY 0x10000000
20 #define SRB_CLASS_FLAGS_PERSISTANT 0x20000000
21 #define SRB_CLASS_FLAGS_PAGING 0x40000000
22 #define SRB_CLASS_FLAGS_FREE_MDL 0x80000000
23 
24 #define ASSERT_FDO(x) \
25  ASSERT(((PCOMMON_DEVICE_EXTENSION) (x)->DeviceExtension)->IsFdo)
26 
27 #define ASSERT_PDO(x) \
28  ASSERT(!(((PCOMMON_DEVICE_EXTENSION) (x)->DeviceExtension)->IsFdo))
29 
30 #define IS_CLEANUP_REQUEST(majorFunction) \
31  ((majorFunction == IRP_MJ_CLOSE) || \
32  (majorFunction == IRP_MJ_CLEANUP) || \
33  (majorFunction == IRP_MJ_SHUTDOWN))
34 
35 #define DO_MCD(fdoExtension) \
36  (((fdoExtension)->MediaChangeDetectionInfo != NULL) && \
37  ((fdoExtension)->MediaChangeDetectionInfo->MediaChangeDetectionDisableCount == 0))
38 
39 #define IS_SCSIOP_READ(opCode) \
40  ((opCode == SCSIOP_READ6) || \
41  (opCode == SCSIOP_READ) || \
42  (opCode == SCSIOP_READ12) || \
43  (opCode == SCSIOP_READ16))
44 
45 #define IS_SCSIOP_WRITE(opCode) \
46  ((opCode == SCSIOP_WRITE6) || \
47  (opCode == SCSIOP_WRITE) || \
48  (opCode == SCSIOP_WRITE12) || \
49  (opCode == SCSIOP_WRITE16))
50 
51 #define IS_SCSIOP_READWRITE(opCode) (IS_SCSIOP_READ(opCode) || IS_SCSIOP_WRITE(opCode))
52 
53 #define ADJUST_FUA_FLAG(fdoExt) { \
54  if (TEST_FLAG(fdoExt->DeviceFlags, DEV_WRITE_CACHE) && \
55  !TEST_FLAG(fdoExt->DeviceFlags, DEV_POWER_PROTECTED) && \
56  !TEST_FLAG(fdoExt->ScanForSpecialFlags, CLASS_SPECIAL_FUA_NOT_SUPPORTED) ) { \
57  fdoExt->CdbForceUnitAccess = TRUE; \
58  } else { \
59  fdoExt->CdbForceUnitAccess = FALSE; \
60  } \
61 }
62 
63 #define FREE_POOL(_PoolPtr) \
64  if (_PoolPtr != NULL) { \
65  ExFreePool(_PoolPtr); \
66  _PoolPtr = NULL; \
67  }
68 
69 #ifdef POOL_TAGGING
70 #undef ExAllocatePool
71 #undef ExAllocatePoolWithQuota
72 #define ExAllocatePool(a,b) ExAllocatePoolWithTag(a,b,'nUcS')
73 //#define ExAllocatePool(a,b) #assert(0)
74 #define ExAllocatePoolWithQuota(a,b) ExAllocatePoolWithQuotaTag(a,b,'nUcS')
75 #endif
76 
77 #define CLASS_TAG_AUTORUN_DISABLE 'ALcS'
78 #define CLASS_TAG_FILE_OBJECT_EXTENSION 'FLcS'
79 #define CLASS_TAG_MEDIA_CHANGE_DETECTION 'MLcS'
80 #define CLASS_TAG_MOUNT 'mLcS'
81 #define CLASS_TAG_RELEASE_QUEUE 'qLcS'
82 #define CLASS_TAG_POWER 'WLcS'
83 #define CLASS_TAG_WMI 'wLcS'
84 #define CLASS_TAG_FAILURE_PREDICT 'fLcS'
85 #define CLASS_TAG_DEVICE_CONTROL 'OIcS'
86 #define CLASS_TAG_MODE_DATA 'oLcS'
87 #define CLASS_TAG_MULTIPATH 'mPcS'
88 #define CLASS_TAG_LOCK_TRACKING 'TLcS'
89 #define CLASS_TAG_LB_PROVISIONING 'PLcS'
90 #define CLASS_TAG_MANAGE_DATASET 'MDcS'
91 
92 #define MAXIMUM_RETRIES 4
93 
94 #define CLASS_DRIVER_EXTENSION_KEY ((PVOID) ClassInitialize)
95 
96 #define NO_REMOVE 0
97 #define REMOVE_PENDING 1
98 #define REMOVE_COMPLETE 2
99 
100 #define ClassAcquireRemoveLock(devobj, tag) \
101  ClassAcquireRemoveLockEx(devobj, tag, __FILE__, __LINE__)
102 
103 #ifdef TRY
104 #undef TRY
105 #endif
106 #ifdef LEAVE
107 #undef LEAVE
108 #endif
109 
110 #ifdef FINALLY
111 #undef FINALLY
112 #endif
113 
114 #define TRY
115 #define LEAVE goto __tryLabel;
116 #define FINALLY __tryLabel:
117 
118 #if defined DebugPrint
119 #undef DebugPrint
120 #endif
121 
122 #if DBG
123 #define DebugPrint(x) ClassDebugPrint x
124 #else
125 #define DebugPrint(x)
126 #endif
127 
128 #define DEBUG_BUFFER_LENGTH 256
129 
130 #define START_UNIT_TIMEOUT (60 * 4)
131 
132 #define MEDIA_CHANGE_DEFAULT_TIME 1
133 #define MEDIA_CHANGE_TIMEOUT_TIME 300
134 
135 #ifdef ALLOCATE_SRB_FROM_POOL
136 
137 #define ClasspAllocateSrb(ext) \
138  ExAllocatePoolWithTag(NonPagedPool, \
139  sizeof(SCSI_REQUEST_BLOCK), \
140  'sBRS')
141 
142 #define ClasspFreeSrb(ext, srb) ExFreePool((srb));
143 
144 #else /* ALLOCATE_SRB_FROM_POOL */
145 
146 #define ClasspAllocateSrb(ext) \
147  ExAllocateFromNPagedLookasideList( \
148  &((ext)->CommonExtension.SrbLookasideList))
149 
150 #define ClasspFreeSrb(ext, srb) \
151  ExFreeToNPagedLookasideList( \
152  &((ext)->CommonExtension.SrbLookasideList), \
153  (srb))
154 
155 #endif /* ALLOCATE_SRB_FROM_POOL */
156 
157 #define SET_FLAG(Flags, Bit) ((Flags) |= (Bit))
158 #define CLEAR_FLAG(Flags, Bit) ((Flags) &= ~(Bit))
159 #define TEST_FLAG(Flags, Bit) (((Flags) & (Bit)) != 0)
160 
161 #define CLASS_WORKING_SET_MAXIMUM 2048
162 
163 #define CLASS_INTERPRET_SENSE_INFO2_MAXIMUM_HISTORY_COUNT 30000
164 
165 #define CLASS_SPECIAL_DISABLE_SPIN_DOWN 0x00000001
166 #define CLASS_SPECIAL_DISABLE_SPIN_UP 0x00000002
167 #define CLASS_SPECIAL_NO_QUEUE_LOCK 0x00000008
168 #define CLASS_SPECIAL_DISABLE_WRITE_CACHE 0x00000010
169 #define CLASS_SPECIAL_CAUSE_NOT_REPORTABLE_HACK 0x00000020
170 #if ((NTDDI_VERSION == NTDDI_WIN2KSP3) || (OSVER(NTDDI_VERSION) == NTDDI_WINXP))
171 #define CLASS_SPECIAL_DISABLE_WRITE_CACHE_NOT_SUPPORTED 0x00000040
172 #endif
173 #define CLASS_SPECIAL_MODIFY_CACHE_UNSUCCESSFUL 0x00000040
174 #define CLASS_SPECIAL_FUA_NOT_SUPPORTED 0x00000080
175 #define CLASS_SPECIAL_VALID_MASK 0x000000FB
176 #define CLASS_SPECIAL_RESERVED (~CLASS_SPECIAL_VALID_MASK)
177 
178 #define DEV_WRITE_CACHE 0x00000001
179 #define DEV_USE_SCSI1 0x00000002
180 #define DEV_SAFE_START_UNIT 0x00000004
181 #define DEV_NO_12BYTE_CDB 0x00000008
182 #define DEV_POWER_PROTECTED 0x00000010
183 #define DEV_USE_16BYTE_CDB 0x00000020
184 
185 #define GUID_CLASSPNP_QUERY_REGINFOEX {0x00e34b11, 0x2444, 0x4745, {0xa5, 0x3d, 0x62, 0x01, 0x00, 0xcd, 0x82, 0xf7}}
186 #define GUID_CLASSPNP_SENSEINFO2 {0x509a8c5f, 0x71d7, 0x48f6, {0x82, 0x1e, 0x17, 0x3c, 0x49, 0xbf, 0x2f, 0x18}}
187 #define GUID_CLASSPNP_WORKING_SET {0x105701b0, 0x9e9b, 0x47cb, {0x97, 0x80, 0x81, 0x19, 0x8a, 0xf7, 0xb5, 0x24}}
188 #define GUID_CLASSPNP_SRB_SUPPORT {0x0a483941, 0xbdfd, 0x4f7b, {0xbe, 0x95, 0xce, 0xe2, 0xa2, 0x16, 0x09, 0x0c}}
189 
190 #define DEFAULT_FAILURE_PREDICTION_PERIOD 60 * 60 * 1
191 
192 #define MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS (0x3b9aca00)
193 
195 { ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
197 { ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
199 { ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
201 { ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
203 { ULONG i = 0; while (_X) { _X &= _X - 1; i++; } return i; }
204 
211 
212 typedef enum _CLASS_DEBUG_LEVEL {
227 
228 typedef enum {
232 
233 typedef enum {
239 
240 typedef enum {
247 
248 typedef enum {
256 
257 typedef enum {
266 
267 typedef enum {
274 
275 struct _CLASS_INIT_DATA;
277 
280 
281 struct _CLASS_PRIVATE_PDO_DATA;
282 typedef struct _CLASS_PRIVATE_PDO_DATA CLASS_PRIVATE_PDO_DATA, *PCLASS_PRIVATE_PDO_DATA;
283 
286 
289 
290 struct _DICTIONARY_HEADER;
292 
293 typedef struct _DICTIONARY {
298 
305 
307 typedef VOID
313 
315 typedef NTSTATUS
316 (NTAPI *PCLASS_ADD_DEVICE)(
319 
320 typedef NTSTATUS
323  _In_ PIRP Irp);
324 
326 typedef NTSTATUS
327 (NTAPI *PCLASS_START_DEVICE)(
329 
331 typedef NTSTATUS
332 (NTAPI *PCLASS_STOP_DEVICE)(
335 
337 typedef NTSTATUS
338 (NTAPI *PCLASS_INIT_DEVICE)(
340 
342 typedef NTSTATUS
343 (NTAPI *PCLASS_ENUM_DEVICE)(
345 
347 typedef NTSTATUS
351 
353 typedef NTSTATUS
356  _In_ PIRP Irp);
357 
359 typedef NTSTATUS
362  _In_ PIRP Irp);
363 
365 typedef NTSTATUS
368  _In_ PIRP Irp);
369 
371 typedef NTSTATUS
372 (NTAPI *PCLASS_QUERY_ID)(
376 
378 typedef NTSTATUS
379 (NTAPI *PCLASS_REMOVE_DEVICE)(
381  _In_ UCHAR Type);
382 
384 typedef VOID
385 (NTAPI *PCLASS_UNLOAD)(
387 
389 typedef NTSTATUS
390 (NTAPI *PCLASS_QUERY_PNP_CAPABILITIES)(
393 
395 typedef VOID
396 (NTAPI *PCLASS_TICK)(
398 
400 typedef NTSTATUS
401 (NTAPI *PCLASS_QUERY_WMI_REGINFO_EX)(
406 
408 typedef NTSTATUS
409 (NTAPI *PCLASS_QUERY_WMI_REGINFO)(
413 
415 typedef NTSTATUS
416 (NTAPI *PCLASS_QUERY_WMI_DATABLOCK)(
422 
424 typedef NTSTATUS
425 (NTAPI *PCLASS_SET_WMI_DATABLOCK)(
431 
433 typedef NTSTATUS
434 (NTAPI *PCLASS_SET_WMI_DATAITEM)(
441 
443 typedef NTSTATUS
444 (NTAPI *PCLASS_EXECUTE_WMI_METHOD)(
451  _In_reads_(_Inexpressible_(max(InBufferSize, OutBufferSize))) PUCHAR Buffer);
452 
454 typedef NTSTATUS
455 (NTAPI *PCLASS_WMI_FUNCTION_CONTROL)(
461 
462 typedef struct _SRB_HISTORY_ITEM {
470 
471 typedef struct _SRB_HISTORY {
473  _Field_range_(1,30000) ULONG TotalHistoryCount;
474  _Field_range_(0,TotalHistoryCount) ULONG UsedHistoryCount;
475  _Field_size_part_(TotalHistoryCount, UsedHistoryCount) SRB_HISTORY_ITEM History[1];
477 
479 typedef BOOLEAN
480 (NTAPI *PCLASS_INTERPRET_SENSE_INFO)(
490  LONGLONG *RetryIn100nsUnits);
491 
493 _At_(RequestHistory->UsedHistoryCount, _Pre_equal_to_(RequestHistory->TotalHistoryCount)
494  _Out_range_(0, RequestHistory->TotalHistoryCount - 1))
495 typedef VOID
496 (NTAPI *PCLASS_COMPRESS_RETRY_HISTORY_DATA)(
499 
500 typedef struct {
505 
506 typedef struct _CLASS_WMI_INFO {
509  PCLASS_QUERY_WMI_REGINFO ClassQueryWmiRegInfo;
510  PCLASS_QUERY_WMI_DATABLOCK ClassQueryWmiDataBlock;
511  PCLASS_SET_WMI_DATABLOCK ClassSetWmiDataBlock;
512  PCLASS_SET_WMI_DATAITEM ClassSetWmiDataItem;
513  PCLASS_EXECUTE_WMI_METHOD ClassExecuteWmiMethod;
514  PCLASS_WMI_FUNCTION_CONTROL ClassWmiFunctionControl;
516 
517 typedef struct _CLASS_DEV_INFO {
527  PCLASS_INIT_DEVICE ClassInitDevice;
528  PCLASS_START_DEVICE ClassStartDevice;
530  PCLASS_STOP_DEVICE ClassStopDevice;
531  PCLASS_REMOVE_DEVICE ClassRemoveDevice;
532  PCLASS_QUERY_PNP_CAPABILITIES ClassQueryPnpCapabilities;
535 
536 struct _CLASS_INIT_DATA {
537  ULONG InitializationDataSize;
540  PCLASS_ADD_DEVICE ClassAddDevice;
541  PCLASS_ENUM_DEVICE ClassEnumerateDevice;
542  PCLASS_QUERY_ID ClassQueryId;
544  PCLASS_UNLOAD ClassUnload;
545  PCLASS_TICK ClassTick;
546 };
547 
548 typedef struct _FILE_OBJECT_EXTENSION {
554 
555 typedef struct _CLASS_WORKING_SET {
557  _Field_range_(0,2048) ULONG XferPacketsWorkingSetMaximum;
558  _Field_range_(0,2048) ULONG XferPacketsWorkingSetMinimum;
560 
562  _Field_range_(sizeof(CLASS_INTERPRET_SENSE_INFO),sizeof(CLASS_INTERPRET_SENSE_INFO))
563  ULONG Size;
564  _Field_range_(1,30000) ULONG HistoryCount;
565  __callback PCLASS_COMPRESS_RETRY_HISTORY_DATA Compress;
566  __callback PCLASS_INTERPRET_SENSE_INFO Interpret;
568 
569 C_ASSERT((MAXULONG - sizeof(SRB_HISTORY)) / 30000 >= sizeof(SRB_HISTORY_ITEM));
570 
571 // for SrbSupport
572 #define CLASS_SRB_SCSI_REQUEST_BLOCK 0x1
573 #define CLASS_SRB_STORAGE_REQUEST_BLOCK 0x2
574 
575 typedef struct _CLASS_DRIVER_EXTENSION {
579 #if (NTDDI_VERSION >= NTDDI_WINXP)
580  PCLASS_QUERY_WMI_REGINFO_EX ClassFdoQueryWmiRegInfoEx;
581  PCLASS_QUERY_WMI_REGINFO_EX ClassPdoQueryWmiRegInfoEx;
582 #endif
583 #if (NTDDI_VERSION >= NTDDI_VISTA)
585  PDRIVER_DISPATCH DeviceMajorFunctionTable[IRP_MJ_MAXIMUM_FUNCTION + 1];
586  PDRIVER_DISPATCH MpDeviceMajorFunctionTable[IRP_MJ_MAXIMUM_FUNCTION + 1];
589 #endif
590 #if (NTDDI_VERSION >= NTDDI_WIN8)
592 #endif
594 
595 typedef struct _COMMON_DEVICE_EXTENSION {
607  _ANONYMOUS_STRUCT struct {
611  } DUMMYSTRUCTNAME;
625 #ifndef ALLOCATE_SRB_FROM_POOL
627 #endif
632 #if (NTDDI_VERSION >= NTDDI_WINXP)
634 #else
636 #endif
637 #if (NTDDI_VERSION >= NTDDI_VISTA)
639 #else
641 #endif
645 
647  _ANONYMOUS_UNION union {
648  _ANONYMOUS_STRUCT struct {
651  } DUMMYSTRUCTNAME;
653  } DUMMYUNIONNAME;
656 #if (NTDDI_VERSION >= NTDDI_WINXP)
658 #else
660 #endif
665 
666 typedef struct _CLASS_POWER_OPTIONS {
673 
674 typedef struct _CLASS_POWER_CONTEXT {
675  union {
680  } PowerChangeState;
692 
693 #if (NTDDI_VERSION >= NTDDI_WIN8)
694 
695 #define CLASS_SRBEX_SCSI_CDB16_BUFFER_SIZE (sizeof(STORAGE_REQUEST_BLOCK) + sizeof(STOR_ADDR_BTL8) + sizeof(SRBEX_DATA_SCSI_CDB16))
696 #define CLASS_SRBEX_NO_SRBEX_DATA_BUFFER_SIZE (sizeof(STORAGE_REQUEST_BLOCK) + sizeof(STOR_ADDR_BTL8))
697 
698 #endif
699 
700 typedef struct _COMPLETION_CONTEXT {
702 #if (NTDDI_VERSION >= NTDDI_WIN8)
703  union
704  {
708  } Srb;
709 #else
711 #endif
713 
717 ULONG
718 NTAPI
719 ClassInitialize(
723 
726  __callback PCLASS_QUERY_WMI_REGINFO_EX ClassFdoQueryWmiRegInfoEx;
727  __callback PCLASS_QUERY_WMI_REGINFO_EX ClassPdoQueryWmiRegInfoEx;
729 
730 typedef enum
731 {
736 
737 typedef struct _CLASS_VPD_B1_DATA
738 {
746 
747 typedef struct _CLASS_VPD_B0_DATA
748 {
760 
761 #ifdef _MSC_VER
762 #pragma warning(push)
763 #pragma warning(disable:4214)
764 #endif
765 typedef struct _CLASS_VPD_B2_DATA
766 {
780 #ifdef _MSC_VER
781 #pragma warning(pop)
782 #endif
783 
785 {
792  UCHAR Reserved0[2];
795 
797 {
807 
808 #ifdef _MSC_VER
809 #pragma warning(push)
810 #pragma warning(disable:4214)
811 #endif
813 {
817  struct
818  {
826  } ValidInquiryPages;
827  struct
828  {
833  } LowerLayerSupport;
836 #if (NTDDI_VERSION >= NTDDI_WIN10_RS2)
839 #else
840  UCHAR Reserved[2];
841 #endif
847  struct
848  {
856  } IdlePower;
857 
858 #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
860  PSTORAGE_HW_FIRMWARE_INFO HwFirmwareInfo;
861 #endif
863 #ifdef _MSC_VER
864 #pragma warning(pop)
865 #endif
866 
868  _ANONYMOUS_UNION union {
869  _ANONYMOUS_STRUCT struct {
872  } DUMMYSTRUCTNAME;
874  } DUMMYUNIONNAME;
882 #if (NTDDI_VERSION >= NTDDI_WIN8)
884 #else
885  UCHAR Reserved;
886 #endif
887  UCHAR Reserved0[2];
900 #if (NTDDI_VERSION >= NTDDI_VISTA)
902 #else
903  UCHAR ReservedByte;
904 #endif
929 
930 #if (NTDDI_VERSION <= NTDDI_WIN2K)
931 
932 #if (SPVER(NTDDI_VERSION) < 2))
937 #else
938  ULONG CompletionSuccessCount;
939  ULONG SavedSrbFlags;
940  ULONG SavedErrorCount;
942 #endif /* (SPVER(NTDDI_VERSION) < 2) */
943 
944 #else /* (NTDDI_VERSION <= NTDDI_WIN2K) */
945 
946  PCLASS_PRIVATE_FDO_DATA PrivateFdoData;
947 #if (NTDDI_VERSION >= NTDDI_WIN8)
948  PCLASS_FUNCTION_SUPPORT_INFO FunctionSupportInfo;
949  PSTORAGE_MINIPORT_DESCRIPTOR MiniportDescriptor;
950 #else
953 #endif
954 
955 #if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
956  PADDITIONAL_FDO_DATA AdditionalFdoData;
957 #else
959 #endif
960 #endif /* (NTDDI_VERSION <= NTDDI_WIN2K) */
961 
963 
967 ULONG
968 NTAPI
969 ClassInitializeEx(
972  _In_ PVOID Data);
973 
976 _Post_satisfies_(return <= 0)
978 NTSTATUS
979 NTAPI
980 ClassCreateDeviceObject(
987 
990 NTSTATUS
991 NTAPI
994 
996 VOID
997 NTAPI
1000 
1002 VOID
1003 NTAPI
1006  _In_ PIRP Irp,
1007  _In_ ULONG MaximumBytes);
1008 
1010 NTSTATUS
1011 NTAPI
1014  _Inout_ PIRP Irp);
1015 
1017 NTSTATUS
1018 NTAPI
1021  PIRP Irp,
1022  PVOID Context);
1023 
1025 NTSTATUS
1026 NTAPI
1029  PIRP Irp,
1030  PVOID Context);
1031 
1033 BOOLEAN
1034 NTAPI
1040  _In_ ULONG RetryCount,
1042  _Out_opt_ _Deref_out_range_(0,100) ULONG *RetryInterval);
1043 
1044 VOID
1045 NTAPI
1050  PVOID Buffer,
1055 
1057 NTSTATUS
1058 NTAPI
1061  _In_ PIRP Irp);
1062 
1064 NTSTATUS
1065 NTAPI
1067  _In_ PCOMMON_DEVICE_EXTENSION CommonExtension,
1068  _In_ PIRP Irp);
1069 
1071 NTSTATUS
1072 NTAPI
1079 
1081 NTSTATUS
1082 NTAPI
1086  _In_ PIRP Irp,
1090 
1092 NTSTATUS
1093 NTAPI
1096  _In_ PIRP Irp);
1097 
1099 ULONG
1100 NTAPI
1103  _In_reads_bytes_(Length) PCHAR ModeSenseBuffer,
1104  _In_ ULONG Length,
1105  _In_ UCHAR PageMode);
1106 
1108 PVOID
1109 NTAPI
1111  _In_reads_bytes_(Length) PCHAR ModeSenseBuffer,
1112  _In_ ULONG Length,
1115 
1118 NTSTATUS
1119 NTAPI
1120 ClassClaimDevice(
1123 
1125 NTSTATUS
1126 NTAPI
1129  PIRP Irp);
1130 
1133 VOID
1134 NTAPI
1135 ClassInitializeSrbLookasideList(
1136  _Inout_ PCOMMON_DEVICE_EXTENSION CommonExtension,
1138 
1141 VOID
1142 NTAPI
1143 ClassDeleteSrbLookasideList(
1144  _Inout_ PCOMMON_DEVICE_EXTENSION CommonExtension);
1145 
1148 ULONG
1149 NTAPI
1150 ClassQueryTimeOutRegistryValue(
1152 
1155 NTSTATUS
1156 NTAPI
1157 ClassGetDescriptor(
1161 
1164 VOID
1165 NTAPI
1166 ClassInvalidateBusRelations(
1168 
1171 VOID
1172 NTAPI
1173 ClassMarkChildrenMissing(
1175 
1178 BOOLEAN
1179 NTAPI
1180 ClassMarkChildMissing(
1183 
1185 VOID
1187  _In_ CLASS_DEBUG_LEVEL DebugPrintLevel,
1188  _In_z_ PCCHAR DebugMessage,
1189  ...);
1190 
1195 NTAPI
1196 ClassGetDriverExtension(
1198 
1200 VOID
1201 NTAPI
1204  _In_ PIRP Irp,
1206 
1208 VOID
1209 NTAPI
1212  PIRP Tag);
1213 
1215 ULONG
1216 NTAPI
1219  PVOID Tag,
1220  _In_ PCSTR File,
1221  _In_ ULONG Line);
1222 
1225 VOID
1226 NTAPI
1227 ClassUpdateInformationInRegistry(
1233 
1235 NTSTATUS
1236 NTAPI
1239  _Inout_ PIRP Irp,
1243 
1246 NTSTATUS
1247 NTAPI
1248 ClassWmiFireEvent(
1253  _In_reads_bytes_(EventDataSize) PVOID EventData);
1254 
1256 VOID
1257 NTAPI
1260 
1263 VOID
1264 NTAPI
1265 ClassInitializeMediaChangeDetection(
1268 
1271 NTSTATUS
1272 NTAPI
1273 ClassInitializeTestUnitPolling(
1276 
1278 PVPB
1279 NTAPI
1280 ClassGetVpb(
1282 
1284 NTSTATUS
1285 NTAPI
1288  _In_ PIRP Irp);
1289 
1290 NTSTATUS
1291 NTAPI
1294  _In_ PIRP Irp);
1295 
1297 NTSTATUS
1298 NTAPI
1299 ClassSetFailurePredictionPoll(
1303 
1305 VOID
1306 NTAPI
1307 ClassNotifyFailurePredicted(
1313  _In_ UCHAR PathId,
1315  _In_ UCHAR Lun);
1316 
1319 VOID
1320 NTAPI
1321 ClassAcquireChildLock(
1323 
1325 VOID
1326 NTAPI
1329 
1330 IO_COMPLETION_ROUTINE ClassSignalCompletion;
1331 
1332 VOID
1333 NTAPI
1336 
1339 NTSTATUS
1340 NTAPI
1341 ClassRemoveDevice(
1344 
1346 NTSTATUS
1347 NTAPI
1350  PIRP Irp,
1351  PVOID Event);
1352 
1354 VOID
1355 NTAPI
1358 
1360 NTSTATUS
1361 NTAPI
1364  PIRP Irp,
1365  PVOID Context);
1366 
1369 VOID
1370 NTAPI
1371 ClassSetMediaChangeState(
1374  _In_ BOOLEAN Wait);
1375 
1378 VOID
1379 NTAPI
1380 ClassEnableMediaChangeDetection(
1382 
1385 VOID
1386 NTAPI
1387 ClassDisableMediaChangeDetection(
1389 
1392 VOID
1393 NTAPI
1394 ClassCleanupMediaChangeDetection(
1396 
1398 VOID
1399 NTAPI
1400 ClassGetDeviceParameter(
1405 
1407 NTSTATUS
1408 NTAPI
1409 ClassSetDeviceParameter(
1414 
1415 #if (NTDDI_VERSION >= NTDDI_VISTA)
1416 
1419 NTAPI
1420 ClassGetFsContext(
1421  _In_ PCOMMON_DEVICE_EXTENSION CommonExtension,
1423 
1425 VOID
1426 NTAPI
1427 ClassSendNotification(
1429  _In_ const GUID *Guid,
1432 
1433 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1434 
1435 __inline
1436 UCHAR
1439 {
1440  UCHAR SenseDataLength = 0;
1441 
1442  if (FdoExtension->SenseData != NULL)
1443  {
1444 #if (NTDDI_VERSION >= NTDDI_WIN8)
1445  if (FdoExtension->SenseDataLength > 0)
1446  {
1447  SenseDataLength = FdoExtension->SenseDataLength;
1448  }
1449  else
1450  {
1451  // For backward compatibility with Windows 7 and earlier
1452  SenseDataLength = SENSE_BUFFER_SIZE;
1453  }
1454 #else
1455  SenseDataLength = SENSE_BUFFER_SIZE;
1456 #endif
1457  }
1458 
1459  return SenseDataLength;
1460 }
1461 
1462 static __inline
1463 BOOLEAN
1467 {
1468  return ((BOOLEAN)((TEST_FLAG(Srb->SrbFlags, SRB_FLAGS_PORT_DRIVER_ALLOCSENSE) &&
1469  TEST_FLAG(Srb->SrbFlags, SRB_FLAGS_FREE_SENSE_BUFFER)) &&
1470  (Srb->SenseInfoBuffer != FdoExtension->SenseData)));
1471 }
1472 
1473 static __inline
1474 VOID
1478 {
1481  ASSERT(Srb->SenseInfoBuffer != FdoExtension->SenseData);
1482 
1483  ExFreePool(Srb->SenseInfoBuffer);
1484  Srb->SenseInfoBuffer = FdoExtension->SenseData;
1485  Srb->SenseInfoBufferLength = SENSE_BUFFER_SIZE;
1487  return;
1488 }
1489 
1491 typedef VOID
1492 (NTAPI *PCLASS_SCAN_FOR_SPECIAL_HANDLER)(
1494  _In_ ULONG_PTR Data);
1495 
1497 VOID
1498 NTAPI
1499 ClassScanForSpecial(
1502  _In_ PCLASS_SCAN_FOR_SPECIAL_HANDLER Function);
__callback PCLASS_COMPRESS_RETRY_HISTORY_DATA Compress
Definition: classpnp.h:565
_In_ ULONG _Out_ PULONG BufferUsed
Definition: wdfwmi.h:92
UCHAR SrbStatus
Definition: cdromp.h:101
ULONG UnmapGranularityAlignment
Definition: classpnp.h:753
COMMON_DEVICE_EXTENSION CommonExtension
Definition: classpnp.h:652
_In_ ULONG _In_ BOOLEAN _In_ ULONG UniqueErrorValue
Definition: classpnp.h:1310
SCSIPORT_API NTSTATUS NTAPI ClassIoCompleteAssociated(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
CLASS_VPD_B2_DATA LBProvisioningData
Definition: classpnp.h:844
signed char * PCHAR
Definition: retypes.h:7
struct _CLASS_READ_CAPACITY16_DATA CLASS_READ_CAPACITY16_DATA
LARGE_INTEGER PartitionLength
Definition: classpnp.h:618
UCHAR ClassDriverUse
Definition: cdromp.h:102
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3767
struct _CLASS_FUNCTION_SUPPORT_INFO * PCLASS_FUNCTION_SUPPORT_INFO
_Must_inspect_result_ _In_ WDFWMIINSTANCE _In_opt_ ULONG EventDataSize
Definition: wdfwmi.h:615
enum _MEDIA_CHANGE_DETECTION_STATE MEDIA_CHANGE_DETECTION_STATE
#define _Must_inspect_result_
Definition: no_sal2.h:62
USHORT OptimalTransferLengthGranularity
Definition: classpnp.h:756
SCSIPORT_API BOOLEAN NTAPI ClassInterpretSenseInfo(_In_ PDEVICE_OBJECT DeviceObject, _In_ PSCSI_REQUEST_BLOCK Srb, _In_ UCHAR MajorFunctionCode, _In_ ULONG IoDeviceCode, _In_ ULONG RetryCount, _Out_ NTSTATUS *Status, _Out_opt_ _Deref_out_range_(0, 100) ULONG *RetryInterval)
Definition: class.c:4452
PGUIDREGINFO GuidRegInfo
Definition: classpnp.h:508
struct _CLASS_PRIVATE_FDO_DATA * PCLASS_PRIVATE_FDO_DATA
Definition: classpnp.h:279
* PSTORAGE_ADAPTER_DESCRIPTOR
Definition: ntddstor.h:599
GUID Guid
Definition: classpnp.h:501
NTSTATUS(NTAPI * PCLASS_READ_WRITE)(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: class2.h:57
struct _MEDIA_CHANGE_DETECTION_INFO * PMEDIA_CHANGE_DETECTION_INFO
Definition: classpnp.h:288
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
SCSIPORT_API NTSTATUS NTAPI ClassSendSrbSynchronous(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PSCSI_REQUEST_BLOCK Srb, _In_reads_bytes_opt_(BufferLength) PVOID BufferAddress, _In_ ULONG BufferLength, _In_ BOOLEAN WriteToDevice)
Definition: class.c:4042
unsigned int ULONG32
Definition: basetsd.h:125
ULONG MaxUnmapBlockDescrCount
Definition: classpnp.h:751
static ULONG CountOfSetBitsUlongPtr(ULONG_PTR _X)
Definition: classpnp.h:202
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_In_ PIRP _In_ ULONG _In_ CLASSENABLEDISABLEFUNCTION Function
Definition: classpnp.h:457
ULONG MaxUnmapLbaCount
Definition: classpnp.h:750
_In_ size_t _In_ UCHAR PageMode
Definition: cdrom.h:1325
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:339
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
Definition: classpnp.h:1310
_In_ PDEVICE_OBJECT Pdo
Definition: classpnp.h:318
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS * Status
Definition: classpnp.h:310
struct _SRB_HISTORY_ITEM * PSRB_HISTORY_ITEM
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
struct GUIDREGINFO * PGUIDREGINFO
SCSIPORT_API VOID NTAPI ClassCheckMediaState(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: autorun.c:1752
_In_ BOOLEAN Release
Definition: classpnp.h:1122
BOOLEAN AsynchronousNotificationSupported
Definition: classpnp.h:835
PMEDIA_CHANGE_DETECTION_INFO MediaChangeDetectionInfo
Definition: classpnp.h:905
_In_ ULONG _In_ BOOLEAN LogError
Definition: classpnp.h:1310
NTSTATUS FinalStatus
Definition: classpnp.h:684
_In_ PSTORAGE_PROPERTY_ID PropertyId
Definition: classpnp.h:1159
_Field_range_(1, 30000) ULONG TotalHistoryCount
_Out_ ULONG _Out_ PUNICODE_STRING Name
Definition: classpnp.h:403
PCLASS_QUERY_ID ClassQueryId
Definition: classpnp.h:542
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
CLASS_DEV_INFO FdoData
Definition: classpnp.h:538
#define TEST_FLAG(Flags, Bit)
Definition: classpnp.h:159
_In_ const GUID _In_ ULONG ExtraDataSize
Definition: classpnp.h:1429
DISK_GEOMETRY DiskGeometry
Definition: classpnp.h:888
#define SRB_FLAGS_FREE_SENSE_BUFFER
Definition: srb.h:398
SCSIPORT_API ULONG NTAPI ClassModeSense(_In_ PDEVICE_OBJECT DeviceObject, _In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode)
Definition: class.c:6637
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
Definition: classpnp.h:1310
_In_ PIRP _In_ ULONG _In_ ULONG DataItemId
Definition: classpnp.h:436
volatile ULONG ChangeRequestCount
Definition: classpnp.h:816
struct _CLASS_PRIVATE_PDO_DATA CLASS_PRIVATE_PDO_DATA
Definition: classpnp.h:282
_In_ BUS_QUERY_ID_TYPE _In_ PUNICODE_STRING IdString
Definition: classpnp.h:374
uint16_t * PWSTR
Definition: typedefs.h:56
BOOLEAN UGAVALID
Definition: classpnp.h:754
#define _ANONYMOUS_UNION
Definition: ntbasedef.h:30
struct _CLASSPNP_SCAN_FOR_SPECIAL_INFO CLASSPNP_SCAN_FOR_SPECIAL_INFO
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:167
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
Definition: classpnp.h:1310
#define SCSIPORT_API
Definition: scsi_port.h:177
unsigned char * PUCHAR
Definition: retypes.h:3
_In_z_ PCCHAR _In_ PDEVICE_OBJECT _In_ BOOLEAN IsFdo
Definition: classpnp.h:982
static ULONG CountOfSetBitsULong(ULONG _X)
Definition: classpnp.h:196
SCSIPORT_API VOID NTAPI ClassReleaseChildLock(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: class.c:12019
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID _In_ ULONG _In_ BOOLEAN InternalDeviceIoControl
Definition: iofuncs.h:713
struct _FUNCTIONAL_DEVICE_EXTENSION * PartitionZeroExtension
Definition: classpnp.h:599
IO_COMPLETION_ROUTINE ClassSignalCompletion
Definition: classpnp.h:1330
#define IRP_MJ_MAXIMUM_FUNCTION
LONG NTSTATUS
Definition: precomp.h:26
_In_ PIRP _In_ ULONG _In_ ULONG _Out_writes_bytes_(BufferAvail) PUCHAR Buffer)
COMMON_DEVICE_EXTENSION CommonExtension
Definition: classpnp.h:873
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:213
_In_ LPGUID _In_ ULONG InstanceIndex
Definition: classpnp.h:1250
SCSIPORT_API VOID NTAPI ClassReleaseQueue(_In_ PDEVICE_OBJECT DeviceObject)
Definition: class.c:11589
__callback PCLASS_QUERY_WMI_REGINFO_EX ClassFdoQueryWmiRegInfoEx
Definition: classpnp.h:726
#define _Outptr_
Definition: no_sal2.h:262
CLASS_POWER_OPTIONS Options
Definition: classpnp.h:681
PCLASS_INTERPRET_SENSE_INFO2 InterpretSenseInfo
Definition: classpnp.h:587
struct _COMPLETION_CONTEXT COMPLETION_CONTEXT
static ULONG CountOfSetBitsULong32(ULONG32 _X)
Definition: classpnp.h:198
CLASS_POWER_DOWN_STATE PowerDown
Definition: classpnp.h:676
_In_ PIRP _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG OutBufferSize
Definition: classpnp.h:446
struct _CLASS_VPD_B1_DATA CLASS_VPD_B1_DATA
NTSTATUS(NTAPI * PCLASS_SHUTDOWN_FLUSH)(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: class2.h:72
SCSIPORT_API VOID NTAPI ClassCompleteRequest(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ CCHAR PriorityBoost)
Definition: lock.c:401
IN PVOID IN PVOID IN USHORT IN USHORT Size
Definition: pci.h:361
C_ASSERT((MAXULONG - sizeof(SRB_HISTORY))/30000 >=sizeof(SRB_HISTORY_ITEM))
ULONG MediumProductType
Definition: classpnp.h:743
SCSIPORT_API NTSTATUS NTAPI ClassIoComplete(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
CLASS_POWER_UP_STATE PowerUp
Definition: classpnp.h:679
_In_z_ PCCHAR _In_ PDEVICE_OBJECT _In_ BOOLEAN _Outptr_result_nullonfailure_ _At_ * DeviceObject(Mem) __drv_aliasesMem) PDEVICE_OBJECT *DeviceObject
ULONG OptimalTransferLength
Definition: classpnp.h:758
_In_ PSCSI_REQUEST_BLOCK Srb
Definition: classpnp.h:310
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
Definition: wdfio.h:318
SCSIPORT_API NTSTATUS NTAPI ClassWmiCompleteRequest(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp, _In_ NTSTATUS Status, _In_ ULONG BufferUsed, _In_ CCHAR PriorityBoost)
Definition: classwmi.c:1009
PCLASS_CREATE_CLOSE ClassCreateClose
Definition: classpnp.h:526
UCHAR NominalFormFactor
Definition: classpnp.h:741
enum _CLASS_DEBUG_LEVEL * PCLASS_DEBUG_LEVEL
struct _CLASS_POWER_CONTEXT * PCLASS_POWER_CONTEXT
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1155
struct _CLASS_WORKING_SET CLASS_WORKING_SET
PCLASS_DEVICE_CONTROL ClassDeviceControl
Definition: classpnp.h:524
#define DUMMYUNIONNAME
Definition: ntbasedef.h:32
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:550
struct _CLASS_VPD_B0_DATA * PCLASS_VPD_B0_DATA
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:688
ULONG DeviceCharacteristics
Definition: classpnp.h:521
#define SENSE_BUFFER_SIZE
Definition: cdrw_hw.h:1183
_In_ size_t _In_ UCHAR _In_ BOOLEAN Use6Byte
Definition: cdrom.h:1325
static ULONG CountOfSetBitsUChar(UCHAR _X)
Definition: classpnp.h:194
#define _In_opt_
Definition: no_sal2.h:212
_In_opt_ PIRP OriginalRequest
Definition: classpnp.h:482
SCSIPORT_API VOID NTAPI ClassSplitRequest(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ ULONG MaximumBytes)
Definition: obsolete.c:61
PCLASS_QUERY_WMI_DATABLOCK ClassQueryWmiDataBlock
Definition: classpnp.h:510
static ULONG CountOfSetBitsULong64(ULONG64 _X)
Definition: classpnp.h:200
SCSIPORT_API NTSTATUS NTAPI ClassSendIrpSynchronous(_In_ PDEVICE_OBJECT TargetDeviceObject, _In_ PIRP Irp)
Definition: class.c:11373
SCSIPORT_API VOID NTAPI ClassResetMediaChangeTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: autorun.c:1804
ULONGLONG Signature
Definition: classpnp.h:294
uint32_t ULONG_PTR
Definition: typedefs.h:65
PCLASS_TICK ClassTick
Definition: classpnp.h:545
_In_ WDFREQUEST _In_ size_t OutputBufferLength
Definition: wdfio.h:318
struct _DICTIONARY DICTIONARY
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
CLASS_FUNCTION_SUPPORT
Definition: classpnp.h:730
ULONG DepopulationTime
Definition: classpnp.h:744
struct _CLASS_READ_CAPACITY16_DATA * PCLASS_READ_CAPACITY16_DATA
struct _DICTIONARY_HEADER * List
Definition: classpnp.h:295
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3272
struct _CLASS_POWER_CONTEXT CLASS_POWER_CONTEXT
__inline UCHAR GET_FDO_EXTENSON_SENSE_DATA_LENGTH(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: classpnp.h:1437
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG _In_ ULONG _In_opt_ SRB_HISTORY * RequestHistory
Definition: classpnp.h:482
* PSTORAGE_DEVICE_DESCRIPTOR
Definition: ntddstor.h:576
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
CLASS_FUNCTION_SUPPORT SeekPenaltyProperty
Definition: classpnp.h:829
CLASS_POWER_DOWN_STATE2
Definition: classpnp.h:248
NTSTATUS CommandStatus
Definition: classpnp.h:767
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
Definition: wdfrequest.h:1011
_In_ PIRP Irp
Definition: csq.h:116
#define max(a, b)
Definition: classpnp.h:16
_Field_size_part_(TotalHistoryCount, UsedHistoryCount) SRB_HISTORY_ITEM History[1]
long LONG
Definition: pedump.c:60
#define _X(x)
Definition: CString.cpp:149
struct _FUNCTIONAL_DEVICE_EXTENSION * PFUNCTIONAL_DEVICE_EXTENSION
SCSI_REQUEST_BLOCK Srb
Definition: classpnp.h:690
#define CLASS_SRBEX_SCSI_CDB16_BUFFER_SIZE
Definition: classpnp.h:695
ULONG InstanceCount
Definition: classpnp.h:502
struct _FUNCTIONAL_DEVICE_EXTENSION FUNCTIONAL_DEVICE_EXTENSION
SCSIPORT_API NTSTATUS NTAPI ClassBuildRequest(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: obsolete.c:505
#define CLEAR_FLAG(Flags, Bit)
Definition: classpnp.h:158
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG _In_ ULONG _In_opt_ SRB_HISTORY _Out_ NTSTATUS _Out_ _Deref_out_range_(0, MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS) LONGLONG *RetryIn100nsUnits)
_In_ BOOLEAN AcquireChildLock
Definition: classpnp.h:1182
struct _FILE_OBJECT_EXTENSION * PFILE_OBJECT_EXTENSION
DRIVER_STARTIO * PDRIVER_STARTIO
Definition: iotypes.h:2225
#define __drv_aliasesMem
Definition: btrfs_drv.h:205
VOID(* PCLASS_ERROR)(IN PDEVICE_OBJECT DeviceObject, IN PSCSI_REQUEST_BLOCK Srb, IN OUT NTSTATUS *Status, IN OUT BOOLEAN *Retry)
Definition: class.h:58
PCLASS_INIT_DEVICE ClassInitDevice
Definition: classpnp.h:527
KSPIN_LOCK ReleaseQueueSpinLock
Definition: classpnp.h:911
PCLASS_SET_WMI_DATABLOCK ClassSetWmiDataBlock
Definition: classpnp.h:511
CLASS_POWER_DOWN_STATE
Definition: classpnp.h:240
unsigned char BOOLEAN
PCLASS_ADD_DEVICE ClassAddDevice
Definition: classpnp.h:540
_In_ PIRP _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG _In_reads_(_Inexpressible_(max(InBufferSize, OutBufferSize))) PUCHAR Buffer)
_Out_ ULONG * RegFlags
Definition: classpnp.h:403
_In_z_ PCCHAR ObjectNameBuffer
Definition: classpnp.h:982
_Out_ ULONG _Out_ PUNICODE_STRING _Out_ PUNICODE_STRING MofResourceName
Definition: classpnp.h:403
static __inline BOOLEAN PORT_ALLOCATED_SENSE(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
Definition: classpnp.h:1464
ULONG SoftThresholdEventPending
Definition: classpnp.h:778
LARGE_INTEGER TickCountSent
Definition: cdromp.h:97
VOID NTAPI ClassSendStartUnit(_In_ PDEVICE_OBJECT DeviceObject)
Definition: class.c:3071
CLASS_POWER_UP_STATE
Definition: classpnp.h:267
_In_ UCHAR RemoveType
Definition: classpnp.h:1343
#define _Out_
Definition: no_sal2.h:160
CLASS_FUNCTION_SUPPORT TrimProperty
Definition: classpnp.h:831
_In_ PIRP _In_ ULONG GuidIndex
Definition: classpnp.h:418
PCLASS_READ_WRITE ClassReadWriteVerification
Definition: classpnp.h:523
struct _CLASS_DRIVER_EXTENSION * PCLASS_DRIVER_EXTENSION
NTSTATUS(NTAPI * PCLASS_POWER_DEVICE)(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: classpnp.h:321
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
Definition: bufpool.h:45
NPAGED_LOOKASIDE_LIST SrbLookasideList
Definition: classpnp.h:626
#define _Out_range_(l, h)
Definition: no_sal2.h:370
PCLASS_QUERY_WMI_REGINFO_EX ClassFdoQueryWmiRegInfoEx
Definition: classpnp.h:580
PCLASS_ERROR ClassError
Definition: classpnp.h:522
NTSTATUS CommandStatus
Definition: classpnp.h:749
struct _CLASS_WMI_INFO * PCLASS_WMI_INFO
_In_ BUS_QUERY_ID_TYPE IdType
Definition: classpnp.h:374
Definition: bcd.h:202
struct _COMMON_DEVICE_EXTENSION * PCOMMON_DEVICE_EXTENSION
enum _MEDIA_CHANGE_DETECTION_STATE MEDIA_CHANGE_DETECTION_STATE
struct _CLASS_VPD_B2_DATA * PCLASS_VPD_B2_DATA
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:547
_In_ PVOID Argument2
Definition: classpnp.h:721
CLASS_POWER_DOWN_STATE2 PowerDown2
Definition: classpnp.h:677
struct _DICTIONARY_HEADER * PDICTIONARY_HEADER
Definition: classpnp.h:291
UNICODE_STRING DeviceName
Definition: classpnp.h:615
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
struct _CLASS_INTERPRET_SENSE_INFO2 CLASS_INTERPRET_SENSE_INFO2
SCSIPORT_API VOID NTAPI ClassReleaseRemoveLock(_In_ PDEVICE_OBJECT DeviceObject, PIRP Tag)
LARGE_INTEGER StartingOffset
Definition: classpnp.h:619
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:650
Status
Definition: gdiplustypes.h:24
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
SCSIPORT_API NTSTATUS NTAPI ClassCheckVerifyComplete(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
struct _PHYSICAL_DEVICE_EXTENSION * PPHYSICAL_DEVICE_EXTENSION
_In_ PIRP _In_ ULONG _In_ ULONG MethodId
Definition: classpnp.h:446
int64_t LONGLONG
Definition: typedefs.h:68
#define _Out_opt_
Definition: no_sal2.h:214
LARGE_INTEGER TickCountCompleted
Definition: cdromp.h:98
_In_ ULONG InBufferSize
Definition: wdfwmi.h:106
SCSIPORT_API NTSTATUS NTAPI ClassInternalIoControl(PDEVICE_OBJECT DeviceObject, PIRP Irp)
#define __drv_allocatesMem(kind)
Definition: driverspecs.h:239
#define _Pre_equal_to_(e)
Definition: no_sal2.h:382
_In_ PIRP _In_ ULONG _In_ ULONG _In_ ULONG InBufferSize
Definition: classpnp.h:446
ULONG Flags
Definition: classpnp.h:503
#define ASSERT(a)
Definition: mode.c:45
PCLASS_POWER_DEVICE ClassPowerDevice
Definition: classpnp.h:529
_In_ PUCHAR EventPrefix
Definition: classpnp.h:1267
CLASS_WMI_INFO ClassWmiInfo
Definition: classpnp.h:533
_In_ ULONG OutBufferSize
Definition: wdfwmi.h:87
PCLASS_START_DEVICE ClassStartDevice
Definition: classpnp.h:528
CLASS_READ_CAPACITY16_DATA ReadCapacity16Data
Definition: classpnp.h:845
char CCHAR
Definition: typedefs.h:51
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
Definition: wdfobject.h:760
struct _CLASS_VPD_B2_DATA CLASS_VPD_B2_DATA
SCSIPORT_API ULONG NTAPI ClassAcquireRemoveLockEx(_In_ PDEVICE_OBJECT DeviceObject, PVOID Tag, _In_ PCSTR File, _In_ ULONG Line)
uint64_t ULONGLONG
Definition: typedefs.h:67
struct _CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS * PCLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS
PCLASS_QUERY_WMI_REGINFO_EX ClassPdoQueryWmiRegInfoEx
Definition: classpnp.h:581
struct _CLASS_QUERY_WMI_REGINFO_EX_LIST CLASS_QUERY_WMI_REGINFO_EX_LIST
static __inline VOID FREE_PORT_ALLOCATED_SENSE_BUFFER(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
Definition: classpnp.h:1475
PSTORAGE_ADAPTER_DESCRIPTOR AdapterDescriptor
Definition: classpnp.h:877
static DRIVER_STARTIO ClassStartIo
Definition: kbdclass.c:25
PSTORAGE_DEVICE_DESCRIPTOR DeviceDescriptor
Definition: classpnp.h:876
UNICODE_STRING MountedDeviceInterfaceName
Definition: classpnp.h:628
enum FAILURE_PREDICTION_METHOD * PFAILURE_PREDICTION_METHOD
struct _FILE_OBJECT_EXTENSION FILE_OBJECT_EXTENSION
struct _PHYSICAL_DEVICE_EXTENSION * ChildList
Definition: classpnp.h:616
PCLASS_UNLOAD ClassUnload
Definition: classpnp.h:544
enum _STORAGE_PROPERTY_ID * PSTORAGE_PROPERTY_ID
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR MajorFunctionCode
Definition: classpnp.h:482
#define _Inout_
Definition: no_sal2.h:162
SCSIPORT_API PVOID NTAPI ClassFindModePage(_In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode, _In_ BOOLEAN Use6Byte)
Definition: class.c:6798
struct _CLASS_PRIVATE_COMMON_DATA * PCLASS_PRIVATE_COMMON_DATA
Definition: classpnp.h:285
CLASS_FUNCTION_SUPPORT HwFirmwareGetInfoSupport
Definition: classpnp.h:859
struct _COMMON_DEVICE_EXTENSION COMMON_DEVICE_EXTENSION
* PFILE_OBJECT
Definition: iotypes.h:1978
struct _CLASS_QUERY_WMI_REGINFO_EX_LIST * PCLASS_QUERY_WMI_REGINFO_EX_LIST
PCLASS_SHUTDOWN_FLUSH ClassShutdownFlush
Definition: classpnp.h:525
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:871
CLASS_POWER_CONTEXT PowerContext
Definition: classpnp.h:928
struct _COMPLETION_CONTEXT * PCOMPLETION_CONTEXT
Definition: ncftp.h:79
_Must_inspect_result_ _In_ WDFDEVICE Fdo
Definition: wdffdo.h:461
UCHAR ThresholdExponent
Definition: classpnp.h:768
unsigned __int64 ULONG64
Definition: imports.h:198
_In_ PCHAR _In_ ULONG _In_reads_bytes_opt_(InquiryDataLength) PINQUIRYDATA InquiryData
_In_ PIRP _In_ ULONG _In_ CLASSENABLEDISABLEFUNCTION _In_ BOOLEAN Enable
Definition: classpnp.h:457
struct _CLASS_VPD_B1_DATA * PCLASS_VPD_B1_DATA
BOOLEAN RegAccessAlignmentQueryNotSupported
Definition: classpnp.h:834
unsigned char UCHAR
Definition: xmlstorage.h:181
#define _Post_satisfies_(e)
Definition: no_sal2.h:66
PIO_COMPLETION_ROUTINE CompletionRoutine
Definition: classpnp.h:687
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG _In_ ULONG PreviousRetryCount
Definition: classpnp.h:482
__callback PCLASS_QUERY_WMI_REGINFO_EX ClassPdoQueryWmiRegInfoEx
Definition: classpnp.h:727
struct _CLASS_DEV_INFO * PCLASS_DEV_INFO
PDEVICE_OBJECT LowerPdo
Definition: classpnp.h:875
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS _Inout_ BOOLEAN * Retry
Definition: classpnp.h:310
CLASSENABLEDISABLEFUNCTION
Definition: classpnp.h:228
PSTORAGE_HW_FIRMWARE_INFO HwFirmwareInfo
Definition: classpnp.h:860
Definition: ketypes.h:687
PCLASS_ENUM_DEVICE ClassEnumerateDevice
Definition: classpnp.h:541
#define NTSTATUS
Definition: precomp.h:20
_In_ PVOID _In_ PCLASS_INIT_DATA InitializationData
Definition: classpnp.h:721
PCLASS_DRIVER_EXTENSION DriverExtension
Definition: classpnp.h:600
struct _SRB_HISTORY_ITEM SRB_HISTORY_ITEM
#define VOID
Definition: acefi.h:82
PCLASS_WORKING_SET WorkingSet
Definition: classpnp.h:588
_In_z_ PCCHAR _In_ PDEVICE_OBJECT LowerDeviceObject
Definition: classpnp.h:982
CLASS_VPD_B1_DATA DeviceCharacteristicsData
Definition: classpnp.h:843
#define _Outptr_result_nullonfailure_
Definition: no_sal2.h:490
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
Definition: wdfio.h:318
_In_ PIRP _In_ ULONG _In_ ULONG BufferAvail
Definition: classpnp.h:418
VOID NTAPI ClassSendDeviceIoControlSynchronous(_In_ ULONG IoControlCode, _In_ PDEVICE_OBJECT TargetDeviceObject, _Inout_updates_opt_(_Inexpressible_(max(InputBufferLength, OutputBufferLength))) PVOID Buffer, _In_ ULONG InputBufferLength, _In_ ULONG OutputBufferLength, _In_ BOOLEAN InternalDeviceIoControl, _Out_ PIO_STATUS_BLOCK IoStatus)
Definition: class.c:11065
CLASS_FUNCTION_SUPPORT TrimProcess
Definition: classpnp.h:832
_In_opt_ PWSTR SubkeyName
Definition: classpnp.h:1402
CLASS_VPD_B0_DATA BlockLimitsData
Definition: classpnp.h:842
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
SCSIPORT_API PVPB NTAPI ClassGetVpb(_In_ PDEVICE_OBJECT DeviceObject)
Definition: class.c:11473
USHORT MediumRotationRate
Definition: classpnp.h:740
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4061
struct _CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS
PCLASS_STOP_DEVICE ClassStopDevice
Definition: classpnp.h:530
_IRQL_requires_max_(DISPATCH_LEVEL) typedef VOID(NTAPI *PCLASS_ERROR)(_In_ PDEVICE_OBJECT DeviceObject
Definition: common.c:3557
#define _ANONYMOUS_STRUCT
Definition: ntbasedef.h:56
SCSIPORT_API NTSTATUS NTAPI ClassSpinDownPowerHandler(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
* PDEVICE_CAPABILITIES
Definition: iotypes.h:948
_In_ PIRP Irp
Definition: classpnp.h:350
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
Definition: cdrom.h:989
#define MAXULONG
Definition: typedefs.h:251
_In_ FAILURE_PREDICTION_METHOD _In_ ULONG PollingPeriod
Definition: classpnp.h:1301
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
#define _In_
Definition: no_sal2.h:158
struct _CLASS_PRIVATE_PDO_DATA * PCLASS_PRIVATE_PDO_DATA
Definition: classpnp.h:282
DRIVER_DISPATCH * PDRIVER_DISPATCH
Definition: iotypes.h:2242
PCLASS_SET_WMI_DATAITEM ClassSetWmiDataItem
Definition: classpnp.h:512
PCLASS_REMOVE_DEVICE ClassRemoveDevice
Definition: classpnp.h:531
#define MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS
Definition: classpnp.h:192
struct _CLASS_INIT_DATA * PCLASS_INIT_DATA
Definition: classpnp.h:276
#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE
Definition: srb.h:405
BOOLEAN IsSrbLookasideListInitialized
Definition: classpnp.h:610
_In_ LPGUID _In_ PVOID Data
Definition: classpnp.h:971
struct _FAILURE_PREDICTION_INFO * FailurePredictionInfo
Definition: classpnp.h:919
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _CLASS_VPD_B0_DATA CLASS_VPD_B0_DATA
PGUIDREGINFO GuidRegInfo
Definition: classpnp.h:630
#define __callback
Definition: sal.h:2876
unsigned short USHORT
Definition: pedump.c:61
ULONG GuidCount
Definition: classpnp.h:507
STORAGE_REQUEST_BLOCK
Definition: srb.h:652
#define _In_z_
Definition: no_sal2.h:164
CLASS_FUNCTION_SUPPORT AccessAlignmentProperty
Definition: classpnp.h:830
PCLASS_DEV_INFO DevInfo
Definition: classpnp.h:620
enum _MEDIA_CHANGE_DETECTION_STATE * PMEDIA_CHANGE_DETECTION_STATE
#define _At_(t, a)
Definition: no_sal2.h:40
CLASS_POWER_DOWN_STATE3
Definition: classpnp.h:257
PCLASS_PRIVATE_COMMON_DATA PrivateCommonData
Definition: classpnp.h:633
_In_opt_ PWSTR _In_ PWSTR ParameterName
Definition: classpnp.h:1402
SCSIPORT_API NTSTATUS NTAPI ClassForwardIrpSynchronous(_In_ PCOMMON_DEVICE_EXTENSION CommonExtension, _In_ PIRP Irp)
Definition: class.c:11343
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS BlockDeviceRODLimitsData
Definition: classpnp.h:846
#define DEVICE_TYPE
Definition: guid.c:10
PCLASS_PRIVATE_PDO_DATA PrivatePdoData
Definition: classpnp.h:657
_In_ PIRP _In_ ULONG _In_ ULONG _In_reads_bytes_(BufferSize) PUCHAR Buffer)
struct _PHYSICAL_DEVICE_EXTENSION PHYSICAL_DEVICE_EXTENSION
ULONG MillisecondsDelayOnRetry
Definition: cdromp.h:99
unsigned int * PULONG
Definition: retypes.h:1
_IRQL_requires_(DISPATCH_LEVEL) typedef VOID(NTAPI *PCLASS_TICK)(_In_ PDEVICE_OBJECT DeviceObject)
Definition: expool.c:1448
SCSIPORT_API VOID ClassDebugPrint(_In_ CLASS_DEBUG_LEVEL DebugPrintLevel, _In_z_ PCCHAR DebugMessage,...)
Definition: debug.c:563
ULONG OptimalUnmapGranularity
Definition: classpnp.h:752
#define NULL
Definition: types.h:112
PDEVICE_OBJECT LowerDeviceObject
Definition: classpnp.h:598
FAILURE_PREDICTION_METHOD
Definition: classpnp.h:233
struct _CLASS_INTERPRET_SENSE_INFO2 * PCLASS_INTERPRET_SENSE_INFO2
Definition: bcd.h:201
SCSIPORT_API NTSTATUS NTAPI ClassAsynchronousCompletion(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Event)
Definition: class.c:3246
_In_ BOOLEAN AllowDriveToSleep
Definition: classpnp.h:1275
IO_COMPLETION_ROUTINE * PIO_COMPLETION_ROUTINE
Definition: iotypes.h:2814
NTSTATUS(NTAPI * PCLASS_CREATE_CLOSE)(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: class2.h:76
_In_ PCHAR _In_ ULONG _In_ ULONG InquiryDataLength
Definition: classpnp.h:1232
STORAGE_REQUEST_BLOCK SrbEx
Definition: classpnp.h:706
UCHAR StackSize
Definition: classpnp.h:520
CLASS_DEV_INFO PdoData
Definition: classpnp.h:539
_In_ ULONG NumberElements
Definition: classpnp.h:1137
_Must_inspect_result_ SCSIPORT_API NTSTATUS NTAPI ClassReadDriveCapacity(_In_ PDEVICE_OBJECT DeviceObject)
Definition: class.c:2742
NTSTATUS CommandStatus
Definition: classpnp.h:739
KSPIN_LOCK SpinLock
Definition: classpnp.h:296
DEVICE_TYPE DeviceType
Definition: classpnp.h:519
ULONG_PTR ClassDriverUse[4]
Definition: cdromp.h:106
Definition: iotypes.h:168
_MEDIA_CHANGE_DETECTION_STATE
Definition: cdromp.h:80
SCSIPORT_API NTSTATUS NTAPI ClassDeviceControl(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PIRP Irp)
Definition: class.c:7317
struct _DICTIONARY * PDICTIONARY
struct _CLASS_POWER_OPTIONS CLASS_POWER_OPTIONS
NTSTATUS NTAPI ClassStopUnitPowerHandler(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: power.c:2048
CLASS_INIT_DATA InitData
Definition: classpnp.h:577
struct _CLASS_DEV_INFO CLASS_DEV_INFO
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:155
unsigned int ULONG
Definition: retypes.h:1
_In_ UCHAR Type
Definition: classpnp.h:334
PCLASS_EXECUTE_WMI_METHOD ClassExecuteWmiMethod
Definition: classpnp.h:513
VOID History(INT, LPTSTR)
Definition: history.c:326
DICTIONARY FileObjectDictionary
Definition: classpnp.h:631
PDRIVER_DISPATCH * DispatchTable
Definition: classpnp.h:638
ULONGLONG REGHANDLE
Definition: evntprov.h:48
struct _CLASSPNP_SCAN_FOR_SPECIAL_INFO * PCLASSPNP_SCAN_FOR_SPECIAL_INFO
const char * PCSTR
Definition: typedefs.h:52
Definition: File.h:15
KSPIN_LOCK RemoveTrackingSpinlock
Definition: classpnp.h:603
enum _CLASS_DEBUG_LEVEL CLASS_DEBUG_LEVEL
struct _CLASS_FUNCTION_SUPPORT_INFO CLASS_FUNCTION_SUPPORT_INFO
NTSTATUS(NTAPI * PCLASS_DEVICE_CONTROL)(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: class2.h:68
_In_ PCHAR _In_ ULONG DeviceNumber
Definition: classpnp.h:1229
IN PSCSI_REQUEST_BLOCK Srb
Definition: class2.h:49
SCSIPORT_API NTSTATUS NTAPI ClassSendSrbAsynchronous(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PSCSI_REQUEST_BLOCK Srb, _In_ PIRP Irp, _In_reads_bytes_opt_(BufferLength) __drv_aliasesMem PVOID BufferAddress, _In_ ULONG BufferLength, _In_ BOOLEAN WriteToDevice)
_In_ FAILURE_PREDICTION_METHOD FailurePredictionMethod
Definition: classpnp.h:1301
#define _Inout_updates_opt_(s)
Definition: no_sal2.h:232
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
Definition: fatprocs.h:1673
_In_ PDEVICE_CAPABILITIES Capabilities
Definition: classpnp.h:392
struct _CLASS_WORKING_SET * PCLASS_WORKING_SET
#define DUMMYSTRUCTNAME
Definition: ntbasedef.h:58
struct _CLASS_WMI_INFO CLASS_WMI_INFO
ULONG MaximumTransferLength
Definition: classpnp.h:757
PFILE_OBJECT FileObject
Definition: classpnp.h:549
CLASS_POWER_DOWN_STATE3 PowerDown3
Definition: classpnp.h:678
struct _CLASS_POWER_OPTIONS * PCLASS_POWER_OPTIONS
PCLASS_WMI_FUNCTION_CONTROL ClassWmiFunctionControl
Definition: classpnp.h:514
SENSE_DATA NormalizedSenseData
Definition: cdromp.h:100
_In_ CLASSPNP_SCAN_FOR_SPECIAL_INFO DeviceList[]
Definition: classpnp.h:1501
ULONG DeviceExtensionSize
Definition: classpnp.h:518
__callback PCLASS_INTERPRET_SENSE_INFO Interpret
Definition: classpnp.h:566
SCSI_REQUEST_BLOCK ReleaseQueueSrb
Definition: classpnp.h:913
_CLASS_DEBUG_LEVEL
Definition: classpnp.h:212
_In_ PIRP _In_ ULONG _In_ ULONG BufferSize
Definition: classpnp.h:427
#define ExFreePool(addr)
Definition: env_spec_w32.h:352
_In_opt_ PWSTR _In_ PWSTR _Inout_ PULONG ParameterValue
Definition: classpnp.h:1402
FILE_OBJECT_EXTENSION KernelModeMcnContext
Definition: classpnp.h:908
PCLASS_QUERY_WMI_REGINFO ClassQueryWmiRegInfo
Definition: classpnp.h:509
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG IoDeviceCode
Definition: classpnp.h:482
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:251
UCHAR ProvisioningType
Definition: classpnp.h:776
struct _CLASS_DRIVER_EXTENSION CLASS_DRIVER_EXTENSION
DEVICE_POWER_STATE DevicePowerState
Definition: classpnp.h:878
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID BufferAddress
Definition: cdrom.h:989
PCLASS_QUERY_PNP_CAPABILITIES ClassQueryPnpCapabilities
Definition: classpnp.h:532