ReactOS 0.4.15-dev-7788-g1ad9096
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
212typedef enum _CLASS_DEBUG_LEVEL {
227
228typedef enum {
232
233typedef enum {
239
240typedef enum {
247
248typedef enum {
256
257typedef enum {
266
267typedef enum {
274
275struct _CLASS_INIT_DATA;
277
280
281struct _CLASS_PRIVATE_PDO_DATA;
282typedef struct _CLASS_PRIVATE_PDO_DATA CLASS_PRIVATE_PDO_DATA, *PCLASS_PRIVATE_PDO_DATA;
283
286
289
290struct _DICTIONARY_HEADER;
292
293typedef struct _DICTIONARY {
298
305
307typedef VOID
308(NTAPI *PCLASS_ERROR)(
313
315typedef NTSTATUS
316(NTAPI *PCLASS_ADD_DEVICE)(
319
320typedef NTSTATUS
323 _In_ PIRP Irp);
324
326typedef NTSTATUS
327(NTAPI *PCLASS_START_DEVICE)(
329
331typedef NTSTATUS
332(NTAPI *PCLASS_STOP_DEVICE)(
335
337typedef NTSTATUS
338(NTAPI *PCLASS_INIT_DEVICE)(
340
342typedef NTSTATUS
343(NTAPI *PCLASS_ENUM_DEVICE)(
345
347typedef NTSTATUS
348(NTAPI *PCLASS_READ_WRITE)(
351
353typedef NTSTATUS
354(NTAPI *PCLASS_DEVICE_CONTROL)(
356 _In_ PIRP Irp);
357
359typedef NTSTATUS
360(NTAPI *PCLASS_SHUTDOWN_FLUSH)(
362 _In_ PIRP Irp);
363
365typedef NTSTATUS
366(NTAPI *PCLASS_CREATE_CLOSE)(
368 _In_ PIRP Irp);
369
371typedef NTSTATUS
372(NTAPI *PCLASS_QUERY_ID)(
376
378typedef NTSTATUS
379(NTAPI *PCLASS_REMOVE_DEVICE)(
381 _In_ UCHAR Type);
382
384typedef VOID
385(NTAPI *PCLASS_UNLOAD)(
387
389typedef NTSTATUS
390(NTAPI *PCLASS_QUERY_PNP_CAPABILITIES)(
393
395typedef VOID
396(NTAPI *PCLASS_TICK)(
398
400typedef NTSTATUS
401(NTAPI *PCLASS_QUERY_WMI_REGINFO_EX)(
406
408typedef NTSTATUS
409(NTAPI *PCLASS_QUERY_WMI_REGINFO)(
413
415typedef NTSTATUS
416(NTAPI *PCLASS_QUERY_WMI_DATABLOCK)(
418 _In_ PIRP Irp,
422
424typedef NTSTATUS
425(NTAPI *PCLASS_SET_WMI_DATABLOCK)(
427 _In_ PIRP Irp,
431
433typedef NTSTATUS
434(NTAPI *PCLASS_SET_WMI_DATAITEM)(
436 _In_ PIRP Irp,
441
443typedef NTSTATUS
444(NTAPI *PCLASS_EXECUTE_WMI_METHOD)(
446 _In_ PIRP Irp,
452
454typedef NTSTATUS
455(NTAPI *PCLASS_WMI_FUNCTION_CONTROL)(
457 _In_ PIRP Irp,
461
462typedef struct _SRB_HISTORY_ITEM {
470
471typedef 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
479typedef 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))
495typedef VOID
496(NTAPI *PCLASS_COMPRESS_RETRY_HISTORY_DATA)(
499
500typedef struct {
505
506typedef 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
517typedef struct _CLASS_DEV_INFO {
522 PCLASS_ERROR ClassError;
523 PCLASS_READ_WRITE ClassReadWriteVerification;
524 PCLASS_DEVICE_CONTROL ClassDeviceControl;
525 PCLASS_SHUTDOWN_FLUSH ClassShutdownFlush;
526 PCLASS_CREATE_CLOSE ClassCreateClose;
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
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
548typedef struct _FILE_OBJECT_EXTENSION {
554
555typedef 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
570
571// for SrbSupport
572#define CLASS_SRB_SCSI_REQUEST_BLOCK 0x1
573#define CLASS_SRB_STORAGE_REQUEST_BLOCK 0x2
574
575typedef 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
595typedef struct _COMMON_DEVICE_EXTENSION {
607 _ANONYMOUS_STRUCT struct {
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 {
656#if (NTDDI_VERSION >= NTDDI_WINXP)
658#else
660#endif
665
666typedef struct _CLASS_POWER_OPTIONS {
673
674typedef 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
700typedef struct _COMPLETION_CONTEXT {
702#if (NTDDI_VERSION >= NTDDI_WIN8)
703 union
704 {
709#else
711#endif
713
717ULONG
718NTAPI
719ClassInitialize(
723
726 __callback PCLASS_QUERY_WMI_REGINFO_EX ClassFdoQueryWmiRegInfoEx;
727 __callback PCLASS_QUERY_WMI_REGINFO_EX ClassPdoQueryWmiRegInfoEx;
729
730typedef enum
731{
736
737typedef struct _CLASS_VPD_B1_DATA
738{
746
747typedef struct _CLASS_VPD_B0_DATA
748{
760
761#ifdef _MSC_VER
762#pragma warning(push)
763#pragma warning(disable:4214)
764#endif
765typedef 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 {
882#if (NTDDI_VERSION >= NTDDI_WIN8)
884#else
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
967ULONG
968NTAPI
969ClassInitializeEx(
973
976_Post_satisfies_(return <= 0)
979NTAPI
980ClassCreateDeviceObject(
987
991NTAPI
994
996VOID
997NTAPI
1000
1002VOID
1003NTAPI
1006 _In_ PIRP Irp,
1007 _In_ ULONG MaximumBytes);
1008
1011NTAPI
1014 _Inout_ PIRP Irp);
1015
1018NTAPI
1021 PIRP Irp,
1022 PVOID Context);
1023
1026NTAPI
1029 PIRP Irp,
1030 PVOID Context);
1031
1033BOOLEAN
1034NTAPI
1040 _In_ ULONG RetryCount,
1042 _Out_opt_ _Deref_out_range_(0,100) ULONG *RetryInterval);
1043
1044VOID
1045NTAPI
1050 PVOID Buffer,
1055
1058NTAPI
1061 _In_ PIRP Irp);
1062
1065NTAPI
1067 _In_ PCOMMON_DEVICE_EXTENSION CommonExtension,
1068 _In_ PIRP Irp);
1069
1072NTAPI
1079
1082NTAPI
1086 _In_ PIRP Irp,
1090
1093NTAPI
1096 _In_ PIRP Irp);
1097
1099ULONG
1100NTAPI
1103 _In_reads_bytes_(Length) PCHAR ModeSenseBuffer,
1106
1108PVOID
1109NTAPI
1111 _In_reads_bytes_(Length) PCHAR ModeSenseBuffer,
1115
1119NTAPI
1120ClassClaimDevice(
1123
1126NTAPI
1129 PIRP Irp);
1130
1133VOID
1134NTAPI
1135ClassInitializeSrbLookasideList(
1136 _Inout_ PCOMMON_DEVICE_EXTENSION CommonExtension,
1138
1141VOID
1142NTAPI
1143ClassDeleteSrbLookasideList(
1144 _Inout_ PCOMMON_DEVICE_EXTENSION CommonExtension);
1145
1148ULONG
1149NTAPI
1150ClassQueryTimeOutRegistryValue(
1152
1156NTAPI
1157ClassGetDescriptor(
1161
1164VOID
1165NTAPI
1166ClassInvalidateBusRelations(
1168
1171VOID
1172NTAPI
1173ClassMarkChildrenMissing(
1175
1178BOOLEAN
1179NTAPI
1180ClassMarkChildMissing(
1183
1185VOID
1187 _In_ CLASS_DEBUG_LEVEL DebugPrintLevel,
1188 _In_z_ PCCHAR DebugMessage,
1189 ...);
1190
1195NTAPI
1196ClassGetDriverExtension(
1198
1200VOID
1201NTAPI
1204 _In_ PIRP Irp,
1206
1208VOID
1209NTAPI
1212 PIRP Tag);
1213
1215ULONG
1216NTAPI
1219 PVOID Tag,
1220 _In_ PCSTR File,
1221 _In_ ULONG Line);
1222
1225VOID
1226NTAPI
1227ClassUpdateInformationInRegistry(
1233
1236NTAPI
1243
1247NTAPI
1248ClassWmiFireEvent(
1254
1256VOID
1257NTAPI
1260
1263VOID
1264NTAPI
1265ClassInitializeMediaChangeDetection(
1268
1272NTAPI
1273ClassInitializeTestUnitPolling(
1276
1278PVPB
1279NTAPI
1282
1285NTAPI
1288 _In_ PIRP Irp);
1289
1291NTAPI
1294 _In_ PIRP Irp);
1295
1298NTAPI
1299ClassSetFailurePredictionPoll(
1303
1305VOID
1306NTAPI
1307ClassNotifyFailurePredicted(
1316
1319VOID
1320NTAPI
1321ClassAcquireChildLock(
1323
1325VOID
1326NTAPI
1329
1330IO_COMPLETION_ROUTINE ClassSignalCompletion;
1331
1332VOID
1333NTAPI
1336
1340NTAPI
1341ClassRemoveDevice(
1344
1347NTAPI
1350 PIRP Irp,
1351 PVOID Event);
1352
1354VOID
1355NTAPI
1358
1361NTAPI
1364 PIRP Irp,
1365 PVOID Context);
1366
1369VOID
1370NTAPI
1371ClassSetMediaChangeState(
1375
1378VOID
1379NTAPI
1380ClassEnableMediaChangeDetection(
1382
1385VOID
1386NTAPI
1387ClassDisableMediaChangeDetection(
1389
1392VOID
1393NTAPI
1394ClassCleanupMediaChangeDetection(
1396
1398VOID
1399NTAPI
1400ClassGetDeviceParameter(
1405
1408NTAPI
1409ClassSetDeviceParameter(
1414
1415#if (NTDDI_VERSION >= NTDDI_VISTA)
1416
1419NTAPI
1420ClassGetFsContext(
1421 _In_ PCOMMON_DEVICE_EXTENSION CommonExtension,
1423
1425VOID
1426NTAPI
1427ClassSendNotification(
1429 _In_ const GUID *Guid,
1432
1433#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
1434
1436UCHAR
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
1462static __inline
1463BOOLEAN
1467{
1470 (Srb->SenseInfoBuffer != FdoExtension->SenseData)));
1471}
1472
1473static __inline
1474VOID
1478{
1481 ASSERT(Srb->SenseInfoBuffer != FdoExtension->SenseData);
1482
1484 Srb->SenseInfoBuffer = FdoExtension->SenseData;
1487 return;
1488}
1489
1491typedef VOID
1492(NTAPI *PCLASS_SCAN_FOR_SPECIAL_HANDLER)(
1495
1497VOID
1498NTAPI
1499ClassScanForSpecial(
1502 _In_ PCLASS_SCAN_FOR_SPECIAL_HANDLER Function);
#define _X(x)
Definition: CPath.cpp:42
unsigned char BOOLEAN
#define VOID
Definition: acefi.h:82
LONG NTSTATUS
Definition: precomp.h:26
VOID History(INT dir, LPTSTR commandline)
Definition: history.c:326
unsigned int ULONG32
Definition: basetsd.h:123
@ Reserved2
Definition: bcd.h:202
@ Reserved1
Definition: bcd.h:201
#define __drv_aliasesMem
Definition: btrfs_drv.h:203
PDEVICE_OBJECT PhysicalDeviceObject
Definition: btrfs_drv.h:1157
_In_ PSCSI_REQUEST_BLOCK Srb
Definition: cdrom.h:989
_In_opt_ PWSTR _In_ PWSTR ParameterName
Definition: cdrom.h:961
_In_ size_t _In_ UCHAR _In_ BOOLEAN Use6Byte
Definition: cdrom.h:1328
FORCEINLINE BOOLEAN PORT_ALLOCATED_SENSE(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
Definition: cdrom.h:826
_In_ size_t _In_ UCHAR PageMode
Definition: cdrom.h:1326
FORCEINLINE VOID FREE_PORT_ALLOCATED_SENSE_BUFFER(_In_ PCDROM_DEVICE_EXTENSION DeviceExtension, _In_ PSCSI_REQUEST_BLOCK Srb)
Definition: cdrom.h:839
struct _COMPLETION_CONTEXT COMPLETION_CONTEXT
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID BufferAddress
Definition: cdrom.h:990
_In_ PSTORAGE_PROPERTY_ID PropertyId
Definition: cdrom.h:932
_In_opt_ PWSTR _In_ PWSTR _Inout_ PULONG ParameterValue
Definition: cdrom.h:963
_In_ BOOLEAN Release
Definition: cdrom.h:920
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
Definition: cdrom.h:992
struct _COMPLETION_CONTEXT * PCOMPLETION_CONTEXT
_In_ CDROM_SCAN_FOR_SPECIAL_INFO _In_ PCDROM_SCAN_FOR_SPECIAL_HANDLER Function
Definition: cdrom.h:1156
_In_opt_ PWSTR SubkeyName
Definition: cdrom.h:960
#define TEST_FLAG(Flags, Bit)
Definition: cdrom.h:1495
#define CLEAR_FLAG(Flags, Bit)
Definition: cdrom.h:1494
_MEDIA_CHANGE_DETECTION_STATE
Definition: cdromp.h:80
enum _MEDIA_CHANGE_DETECTION_STATE MEDIA_CHANGE_DETECTION_STATE
#define SENSE_BUFFER_SIZE
Definition: cdrw_hw.h:1183
Definition: bufpool.h:45
Definition: File.h:16
VOID NTAPI ClassResetMediaChangeTimer(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: autorun.c:1804
VOID NTAPI ClassCheckMediaState(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: autorun.c:1752
static ULONG CountOfSetBitsUChar(UCHAR _X)
Definition: classpnp.h:194
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR _In_ UCHAR Lun
Definition: classpnp.h:1315
struct _CLASS_VPD_B1_DATA CLASS_VPD_B1_DATA
_In_ PSCSI_REQUEST_BLOCK Srb
Definition: classpnp.h:310
_In_ PIRP _In_ ULONG _In_ CLASSENABLEDISABLEFUNCTION _In_ BOOLEAN Enable
Definition: classpnp.h:460
static ULONG CountOfSetBitsULong(ULONG _X)
Definition: classpnp.h:196
IO_COMPLETION_ROUTINE ClassSignalCompletion
Definition: classpnp.h:1330
_In_ PIRP _In_ ULONG _In_ ULONG DataItemId
Definition: classpnp.h:438
struct _CLASS_PRIVATE_COMMON_DATA * PCLASS_PRIVATE_COMMON_DATA
Definition: classpnp.h:285
_In_ PDEVICE_CAPABILITIES Capabilities
Definition: classpnp.h:392
_In_ BUS_QUERY_ID_TYPE IdType
Definition: classpnp.h:374
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS _Inout_ BOOLEAN * Retry
Definition: classpnp.h:312
_In_ PVOID _In_ PCLASS_INIT_DATA InitializationData
Definition: classpnp.h:722
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR PathId
Definition: classpnp.h:1313
enum _CLASS_DEBUG_LEVEL CLASS_DEBUG_LEVEL
struct _PHYSICAL_DEVICE_EXTENSION PHYSICAL_DEVICE_EXTENSION
struct _SRB_HISTORY_ITEM * PSRB_HISTORY_ITEM
struct _CLASSPNP_SCAN_FOR_SPECIAL_INFO * PCLASSPNP_SCAN_FOR_SPECIAL_INFO
FORCEINLINE UCHAR GET_FDO_EXTENSON_SENSE_DATA_LENGTH(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: classpnp.h:1437
#define MAXIMUM_RETRY_FOR_SINGLE_IO_IN_100NS_UNITS
Definition: classpnp.h:192
NTSTATUS(NTAPI * PCLASS_POWER_DEVICE)(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: classpnp.h:321
_In_ LPGUID _In_ ULONG InstanceIndex
Definition: classpnp.h:1251
struct _CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS * PCLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS
_In_ PIRP _In_ ULONG _In_ ULONG MethodId
Definition: classpnp.h:448
_In_ PIRP _In_ ULONG _In_ ULONG BufferSize
Definition: classpnp.h:429
enum _CLASS_DEBUG_LEVEL * PCLASS_DEBUG_LEVEL
struct _FILE_OBJECT_EXTENSION FILE_OBJECT_EXTENSION
_In_z_ PCCHAR _In_ PDEVICE_OBJECT LowerDeviceObject
Definition: classpnp.h:983
_In_ UCHAR Type
Definition: classpnp.h:334
_In_ PVOID Argument2
Definition: classpnp.h:721
CLASS_POWER_DOWN_STATE2
Definition: classpnp.h:248
@ PowerDownDeviceStopped2
Definition: classpnp.h:252
@ PowerDownDeviceOff2
Definition: classpnp.h:253
@ PowerDownDeviceLocked2
Definition: classpnp.h:250
@ PowerDownDeviceFlushed2
Definition: classpnp.h:251
@ PowerDownDeviceInitial2
Definition: classpnp.h:249
@ PowerDownDeviceUnlocked2
Definition: classpnp.h:254
struct _CLASSPNP_SCAN_FOR_SPECIAL_INFO CLASSPNP_SCAN_FOR_SPECIAL_INFO
_In_ PIRP _In_ ULONG _In_ ULONG _In_ ULONG InBufferSize
Definition: classpnp.h:449
struct _CLASS_VPD_B1_DATA * PCLASS_VPD_B1_DATA
CLASS_POWER_DOWN_STATE
Definition: classpnp.h:240
@ PowerDownDeviceUnlocked
Definition: classpnp.h:245
@ PowerDownDeviceStopped
Definition: classpnp.h:243
@ PowerDownDeviceOff
Definition: classpnp.h:244
@ PowerDownDeviceInitial
Definition: classpnp.h:241
@ PowerDownDeviceLocked
Definition: classpnp.h:242
struct _CLASS_POWER_CONTEXT * PCLASS_POWER_CONTEXT
static ULONG CountOfSetBitsULong32(ULONG32 _X)
Definition: classpnp.h:198
_In_z_ PCCHAR _In_ PDEVICE_OBJECT _In_ BOOLEAN IsFdo
Definition: classpnp.h:984
_In_ UCHAR RemoveType
Definition: classpnp.h:1343
_Out_ ULONG * RegFlags
Definition: classpnp.h:403
_In_ FAILURE_PREDICTION_METHOD FailurePredictionMethod
Definition: classpnp.h:1301
_In_ PUCHAR EventPrefix
Definition: classpnp.h:1267
SCSIPORT_API NTSTATUS NTAPI ClassSpinDownPowerHandler(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
_In_ PCHAR _In_ ULONG _In_ ULONG InquiryDataLength
Definition: classpnp.h:1232
struct _CLASS_PRIVATE_FDO_DATA * PCLASS_PRIVATE_FDO_DATA
Definition: classpnp.h:279
struct GUIDREGINFO * PGUIDREGINFO
_CLASS_DEBUG_LEVEL
Definition: classpnp.h:212
@ ClassDebugExternal4
Definition: classpnp.h:222
@ ClassDebugDelayedRetry
Definition: classpnp.h:219
@ ClassDebugMediaLocks
Definition: classpnp.h:217
@ ClassDebugWarning
Definition: classpnp.h:214
@ ClassDebugExternal3
Definition: classpnp.h:223
@ ClassDebugSenseInfo
Definition: classpnp.h:220
@ ClassDebugExternal2
Definition: classpnp.h:224
@ ClassDebugMCN
Definition: classpnp.h:218
@ ClassDebugTrace
Definition: classpnp.h:215
@ ClassDebugInfo
Definition: classpnp.h:216
@ ClassDebugError
Definition: classpnp.h:213
@ ClassDebugRemoveLock
Definition: classpnp.h:221
@ ClassDebugExternal1
Definition: classpnp.h:225
struct _CLASS_DEV_INFO * PCLASS_DEV_INFO
struct _CLASS_READ_CAPACITY16_DATA * PCLASS_READ_CAPACITY16_DATA
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR MajorFunctionCode
Definition: classpnp.h:484
enum _MEDIA_CHANGE_DETECTION_STATE * PMEDIA_CHANGE_DETECTION_STATE
struct _FUNCTIONAL_DEVICE_EXTENSION * PFUNCTIONAL_DEVICE_EXTENSION
_In_ PIRP _In_ ULONG _In_ CLASSENABLEDISABLEFUNCTION Function
Definition: classpnp.h:459
struct _CLASS_POWER_CONTEXT CLASS_POWER_CONTEXT
struct _DICTIONARY * PDICTIONARY
struct _DICTIONARY DICTIONARY
struct _CLASS_VPD_B0_DATA CLASS_VPD_B0_DATA
CLASS_POWER_DOWN_STATE3
Definition: classpnp.h:257
@ PowerDownDeviceUnlocked3
Definition: classpnp.h:264
@ PowerDownDeviceOff3
Definition: classpnp.h:263
@ PowerDownDeviceFlushed3
Definition: classpnp.h:261
@ PowerDownDeviceLocked3
Definition: classpnp.h:259
@ PowerDownDeviceInitial3
Definition: classpnp.h:258
@ PowerDownDeviceStopped3
Definition: classpnp.h:262
@ PowerDownDeviceQuiesced3
Definition: classpnp.h:260
struct _CLASS_FUNCTION_SUPPORT_INFO CLASS_FUNCTION_SUPPORT_INFO
struct _CLASS_FUNCTION_SUPPORT_INFO * PCLASS_FUNCTION_SUPPORT_INFO
_In_ BOOLEAN AcquireChildLock
Definition: classpnp.h:1182
#define CLASS_SRBEX_SCSI_CDB16_BUFFER_SIZE
Definition: classpnp.h:695
struct _CLASS_DEV_INFO CLASS_DEV_INFO
@ MediaUnknown
Definition: classpnp.h:206
@ MediaPresent
Definition: classpnp.h:207
@ MediaNotPresent
Definition: classpnp.h:208
@ MediaUnavailable
Definition: classpnp.h:209
_In_ ULONG _In_ BOOLEAN _In_ ULONG _In_ UCHAR _In_ UCHAR TargetId
Definition: classpnp.h:1314
_In_ PIRP Irp
Definition: classpnp.h:350
_In_ PDEVICE_OBJECT Pdo
Definition: classpnp.h:318
struct _CLASS_VPD_B2_DATA CLASS_VPD_B2_DATA
_In_ PIRP _In_ ULONG GuidIndex
Definition: classpnp.h:419
_In_ ULONG _In_ BOOLEAN LogError
Definition: classpnp.h:1311
_Out_ ULONG _Out_ PUNICODE_STRING Name
Definition: classpnp.h:404
enum FAILURE_PREDICTION_METHOD * PFAILURE_PREDICTION_METHOD
struct _CLASS_PRIVATE_PDO_DATA CLASS_PRIVATE_PDO_DATA
Definition: classpnp.h:282
struct _CLASS_VPD_B2_DATA * PCLASS_VPD_B2_DATA
_In_ PIRP _In_ ULONG _In_ ULONG _In_ ULONG _In_ ULONG OutBufferSize
Definition: classpnp.h:450
struct _SRB_HISTORY_ITEM SRB_HISTORY_ITEM
_In_ BUS_QUERY_ID_TYPE _In_ PUNICODE_STRING IdString
Definition: classpnp.h:375
static ULONG CountOfSetBitsULong64(ULONG64 _X)
Definition: classpnp.h:200
_In_ ULONG _In_ BOOLEAN _In_ ULONG UniqueErrorValue
Definition: classpnp.h:1312
struct _CLASS_WMI_INFO CLASS_WMI_INFO
_In_ PSCSI_REQUEST_BLOCK _Out_ NTSTATUS * Status
Definition: classpnp.h:311
CLASS_POWER_UP_STATE
Definition: classpnp.h:267
@ PowerUpDeviceOn
Definition: classpnp.h:270
@ PowerUpDeviceUnlocked
Definition: classpnp.h:272
@ PowerUpDeviceStarted
Definition: classpnp.h:271
@ PowerUpDeviceInitial
Definition: classpnp.h:268
@ PowerUpDeviceLocked
Definition: classpnp.h:269
CLASSENABLEDISABLEFUNCTION
Definition: classpnp.h:228
@ DataBlockCollection
Definition: classpnp.h:230
@ EventGeneration
Definition: classpnp.h:229
_In_ PCHAR _In_ ULONG DeviceNumber
Definition: classpnp.h:1230
enum _MEDIA_CHANGE_DETECTION_STATE MEDIA_CHANGE_DETECTION_STATE
CLASS_FUNCTION_SUPPORT
Definition: classpnp.h:731
@ Supported
Definition: classpnp.h:733
@ SupportUnknown
Definition: classpnp.h:732
@ NotSupported
Definition: classpnp.h:734
struct _CLASS_POWER_OPTIONS CLASS_POWER_OPTIONS
struct _DICTIONARY_HEADER * PDICTIONARY_HEADER
Definition: classpnp.h:291
struct _CLASS_QUERY_WMI_REGINFO_EX_LIST * PCLASS_QUERY_WMI_REGINFO_EX_LIST
struct _PHYSICAL_DEVICE_EXTENSION * PPHYSICAL_DEVICE_EXTENSION
struct _CLASS_PRIVATE_PDO_DATA * PCLASS_PRIVATE_PDO_DATA
Definition: classpnp.h:282
struct _CLASS_INIT_DATA * PCLASS_INIT_DATA
Definition: classpnp.h:276
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG IoDeviceCode
Definition: classpnp.h:485
struct _CLASS_QUERY_WMI_REGINFO_EX_LIST CLASS_QUERY_WMI_REGINFO_EX_LIST
struct _FILE_OBJECT_EXTENSION * PFILE_OBJECT_EXTENSION
_In_ PIRP _In_ ULONG _In_ ULONG BufferAvail
Definition: classpnp.h:420
struct _MEDIA_CHANGE_DETECTION_INFO * PMEDIA_CHANGE_DETECTION_INFO
Definition: classpnp.h:288
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_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG _In_ ULONG _In_opt_ SRB_HISTORY * RequestHistory
Definition: classpnp.h:487
struct _FUNCTIONAL_DEVICE_EXTENSION FUNCTIONAL_DEVICE_EXTENSION
_In_z_ PCCHAR ObjectNameBuffer
Definition: classpnp.h:982
_In_ FAILURE_PREDICTION_METHOD _In_ ULONG PollingPeriod
Definition: classpnp.h:1302
_In_ BOOLEAN AllowDriveToSleep
Definition: classpnp.h:1275
_In_opt_ PIRP OriginalRequest
Definition: classpnp.h:482
_Out_ ULONG _Out_ PUNICODE_STRING _Out_ PUNICODE_STRING MofResourceName
Definition: classpnp.h:405
struct _CLASS_POWER_OPTIONS * PCLASS_POWER_OPTIONS
struct _CLASS_VPD_B0_DATA * PCLASS_VPD_B0_DATA
struct _CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS
_In_ const GUID _In_ ULONG ExtraDataSize
Definition: classpnp.h:1430
FAILURE_PREDICTION_METHOD
Definition: classpnp.h:233
@ FailurePredictionSense
Definition: classpnp.h:237
@ FailurePredictionSmart
Definition: classpnp.h:236
@ FailurePredictionNone
Definition: classpnp.h:234
@ FailurePredictionIoctl
Definition: classpnp.h:235
_In_ ULONG NumberElements
Definition: classpnp.h:1137
struct _CLASS_READ_CAPACITY16_DATA CLASS_READ_CAPACITY16_DATA
struct _CLASS_WMI_INFO * PCLASS_WMI_INFO
static ULONG CountOfSetBitsUlongPtr(ULONG_PTR _X)
Definition: classpnp.h:202
_In_opt_ PIRP _In_ PSCSI_REQUEST_BLOCK _In_ UCHAR _In_ ULONG _In_ ULONG PreviousRetryCount
Definition: classpnp.h:486
#define max(a, b)
Definition: classpnp.h:16
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
_In_ PIRP Irp
Definition: csq.h:116
#define NULL
Definition: types.h:112
#define DEVICE_TYPE
Definition: guid.c:10
#define NTSTATUS
Definition: precomp.h:21
PDEVICE_LIST DeviceList
Definition: utils.c:27
struct _COMMON_DEVICE_EXTENSION * PCOMMON_DEVICE_EXTENSION
PVOID NTAPI ClassFindModePage(_In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode, _In_ BOOLEAN Use6Byte)
Definition: class.c:6798
NTSTATUS NTAPI ClassIoComplete(IN PDEVICE_OBJECT Fdo, IN PIRP Irp, IN PVOID Context)
Definition: class.c:3768
ULONG NTAPI ClassModeSense(_In_ PDEVICE_OBJECT Fdo, _In_reads_bytes_(Length) PCHAR ModeSenseBuffer, _In_ ULONG Length, _In_ UCHAR PageMode)
Definition: class.c:6637
NTSTATUS NTAPI ClassInternalIoControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: class.c:9394
NTSTATUS NTAPI ClassSendSrbSynchronous(_In_ PDEVICE_OBJECT Fdo, _Inout_ PSCSI_REQUEST_BLOCK _Srb, _In_reads_bytes_opt_(BufferLength) PVOID BufferAddress, _In_ ULONG BufferLength, _In_ BOOLEAN WriteToDevice)
Definition: class.c:4042
PVPB NTAPI ClassGetVpb(_In_ PDEVICE_OBJECT DeviceObject)
Definition: class.c:11473
IO_COMPLETION_ROUTINE ClassCheckVerifyComplete
Definition: class.c:84
VOID NTAPI ClassReleaseChildLock(_In_ PFUNCTIONAL_DEVICE_EXTENSION FdoExtension)
Definition: class.c:12019
VOID NTAPI ClassSendStartUnit(_In_ PDEVICE_OBJECT Fdo)
Definition: class.c:3071
NTSTATUS NTAPI ClassAsynchronousCompletion(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
Definition: class.c:3246
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
_Must_inspect_result_ NTSTATUS NTAPI ClassReadDriveCapacity(_In_ PDEVICE_OBJECT Fdo)
Definition: class.c:2742
VOID NTAPI ClassReleaseQueue(_In_ PDEVICE_OBJECT Fdo)
Definition: class.c:11589
BOOLEAN NTAPI ClassInterpretSenseInfo(_In_ PDEVICE_OBJECT Fdo, _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
NTSTATUS NTAPI ClassSendIrpSynchronous(_In_ PDEVICE_OBJECT TargetDeviceObject, _In_ PIRP Irp)
Definition: class.c:11373
NTSTATUS NTAPI ClassForwardIrpSynchronous(_In_ PCOMMON_DEVICE_EXTENSION CommonExtension, _In_ PIRP Irp)
Definition: class.c:11343
VOID ClassDebugPrint(_In_ CLASS_DEBUG_LEVEL DebugPrintLevel, _In_z_ PCCHAR DebugMessage,...)
Definition: debug.c:563
VOID NTAPI ClassCompleteRequest(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp, _In_ CCHAR PriorityBoost)
Definition: lock.c:401
VOID NTAPI ClassReleaseRemoveLock(_In_ PDEVICE_OBJECT DeviceObject, _In_opt_ PIRP Tag)
Definition: lock.c:251
ULONG NTAPI ClassAcquireRemoveLockEx(_In_ PDEVICE_OBJECT DeviceObject, _In_ PVOID Tag, _In_ PCSTR File, _In_ ULONG Line)
Definition: lock.c:115
NTSTATUS NTAPI ClassIoCompleteAssociated(IN PDEVICE_OBJECT Fdo, IN PIRP Irp, IN PVOID Context)
Definition: obsolete.c:111
VOID NTAPI ClassSplitRequest(_In_ PDEVICE_OBJECT Fdo, _In_ PIRP Irp, _In_ ULONG MaximumBytes)
Definition: obsolete.c:61
NTSTATUS NTAPI ClassBuildRequest(_In_ PDEVICE_OBJECT Fdo, _In_ PIRP Irp)
Definition: obsolete.c:505
NTSTATUS NTAPI ClassStopUnitPowerHandler(_In_ PDEVICE_OBJECT DeviceObject, _In_ PIRP Irp)
Definition: power.c:2048
#define SRB_FLAGS_FREE_SENSE_BUFFER
Definition: srb.h:406
#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE
Definition: srb.h:413
@ PdoExtension
Definition: precomp.h:49
@ FdoExtension
Definition: precomp.h:48
#define _IRQL_requires_max_(irql)
Definition: driverspecs.h:230
#define __drv_allocatesMem(kind)
Definition: driverspecs.h:257
#define _IRQL_requires_(irql)
Definition: driverspecs.h:229
#define PASSIVE_LEVEL
Definition: env_spec_w32.h:693
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
#define ExFreePool(addr)
Definition: env_spec_w32.h:352
#define DISPATCH_LEVEL
Definition: env_spec_w32.h:696
ULONGLONG REGHANDLE
Definition: evntprov.h:48
IN OUT PVCB IN PDEVICE_OBJECT TargetDeviceObject
Definition: fatprocs.h:1674
Status
Definition: gdiplustypes.h:25
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
#define C_ASSERT(e)
Definition: intsafe.h:73
static DRIVER_DISPATCH ClassDeviceControl
Definition: kbdclass.c:22
struct _CLASS_DRIVER_EXTENSION * PCLASS_DRIVER_EXTENSION
struct _CLASS_DRIVER_EXTENSION CLASS_DRIVER_EXTENSION
#define ASSERT(a)
Definition: mode.c:44
unsigned __int64 ULONG64
Definition: imports.h:198
#define _Out_opt_
Definition: ms_sal.h:346
#define _In_reads_bytes_(size)
Definition: ms_sal.h:321
#define _Pre_equal_to_(expr)
Definition: ms_sal.h:577
#define _Inout_
Definition: ms_sal.h:378
#define _Out_writes_bytes_(size)
Definition: ms_sal.h:350
#define _Out_range_(lb, ub)
Definition: ms_sal.h:572
#define _Field_size_part_(size, count)
Definition: ms_sal.h:595
#define _In_z_
Definition: ms_sal.h:313
#define _Outptr_
Definition: ms_sal.h:427
#define _Deref_out_range_(lb, ub)
Definition: ms_sal.h:575
#define _At_(target, annos)
Definition: ms_sal.h:244
#define _Must_inspect_result_
Definition: ms_sal.h:558
#define __callback
Definition: ms_sal.h:2876
#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 _In_reads_bytes_opt_(size)
Definition: ms_sal.h:322
#define _In_opt_
Definition: ms_sal.h:309
#define _Inout_updates_opt_(size)
Definition: ms_sal.h:388
#define _Post_satisfies_(cond)
Definition: ms_sal.h:588
#define _Outptr_result_nullonfailure_
Definition: ms_sal.h:441
#define _In_reads_(size)
Definition: ms_sal.h:319
static LRESULT Compress(CodecInfo *pi, ICCOMPRESS *lpic, DWORD dwSize)
Definition: msrle32.c:1418
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:159
#define DUMMYUNIONNAME
Definition: ntbasedef.h:32
#define DUMMYSTRUCTNAME
Definition: ntbasedef.h:58
#define _ANONYMOUS_UNION
Definition: ntbasedef.h:30
#define _ANONYMOUS_STRUCT
Definition: ntbasedef.h:56
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
* PSTORAGE_DEVICE_DESCRIPTOR
Definition: ntddstor.h:576
enum _STORAGE_PROPERTY_ID * PSTORAGE_PROPERTY_ID
* PSTORAGE_ADAPTER_DESCRIPTOR
Definition: ntddstor.h:599
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
@ Reserved3
Definition: sacdrv.h:1471
@ Reserved4
Definition: sacdrv.h:1472
#define SCSIPORT_API
Definition: scsi_port.h:177
STORAGE_REQUEST_BLOCK
Definition: srb.h:661
ULONG Flags
Definition: classpnp.h:503
GUID Guid
Definition: classpnp.h:501
ULONG InstanceCount
Definition: classpnp.h:502
Definition: ncftp.h:79
ULONG DeviceCharacteristics
Definition: classpnp.h:521
PCLASS_INIT_DEVICE ClassInitDevice
Definition: classpnp.h:527
PCLASS_QUERY_PNP_CAPABILITIES ClassQueryPnpCapabilities
Definition: classpnp.h:532
UCHAR StackSize
Definition: classpnp.h:520
PCLASS_SHUTDOWN_FLUSH ClassShutdownFlush
Definition: classpnp.h:525
PCLASS_READ_WRITE ClassReadWriteVerification
Definition: classpnp.h:523
DEVICE_TYPE DeviceType
Definition: classpnp.h:519
PCLASS_POWER_DEVICE ClassPowerDevice
Definition: classpnp.h:529
ULONG DeviceExtensionSize
Definition: classpnp.h:518
PCLASS_REMOVE_DEVICE ClassRemoveDevice
Definition: classpnp.h:531
PCLASS_START_DEVICE ClassStartDevice
Definition: classpnp.h:528
PCLASS_DEVICE_CONTROL ClassDeviceControl
Definition: classpnp.h:524
PCLASS_CREATE_CLOSE ClassCreateClose
Definition: classpnp.h:526
PCLASS_STOP_DEVICE ClassStopDevice
Definition: classpnp.h:530
PCLASS_ERROR ClassError
Definition: classpnp.h:522
CLASS_WMI_INFO ClassWmiInfo
Definition: classpnp.h:533
PCLASS_WORKING_SET WorkingSet
Definition: classpnp.h:588
CLASS_INIT_DATA InitData
Definition: classpnp.h:577
PCLASS_QUERY_WMI_REGINFO_EX ClassFdoQueryWmiRegInfoEx
Definition: classpnp.h:580
PCLASS_QUERY_WMI_REGINFO_EX ClassPdoQueryWmiRegInfoEx
Definition: classpnp.h:581
PCLASS_INTERPRET_SENSE_INFO2 InterpretSenseInfo
Definition: classpnp.h:587
volatile ULONG ChangeRequestCount
Definition: classpnp.h:816
CLASS_FUNCTION_SUPPORT SeekPenaltyProperty
Definition: classpnp.h:829
CLASS_VPD_ECOP_BLOCK_DEVICE_ROD_LIMITS BlockDeviceRODLimitsData
Definition: classpnp.h:846
CLASS_FUNCTION_SUPPORT AccessAlignmentProperty
Definition: classpnp.h:830
BOOLEAN RegAccessAlignmentQueryNotSupported
Definition: classpnp.h:834
CLASS_VPD_B0_DATA BlockLimitsData
Definition: classpnp.h:842
CLASS_FUNCTION_SUPPORT HwFirmwareGetInfoSupport
Definition: classpnp.h:859
CLASS_FUNCTION_SUPPORT TrimProcess
Definition: classpnp.h:832
CLASS_VPD_B1_DATA DeviceCharacteristicsData
Definition: classpnp.h:843
CLASS_READ_CAPACITY16_DATA ReadCapacity16Data
Definition: classpnp.h:845
PSTORAGE_HW_FIRMWARE_INFO HwFirmwareInfo
Definition: classpnp.h:860
CLASS_FUNCTION_SUPPORT TrimProperty
Definition: classpnp.h:831
BOOLEAN AsynchronousNotificationSupported
Definition: classpnp.h:835
CLASS_VPD_B2_DATA LBProvisioningData
Definition: classpnp.h:844
ULONG InitializationDataSize
Definition: classpnp.h:537
PDRIVER_STARTIO ClassStartIo
Definition: classpnp.h:543
CLASS_DEV_INFO FdoData
Definition: classpnp.h:538
PCLASS_QUERY_ID ClassQueryId
Definition: classpnp.h:542
CLASS_DEV_INFO PdoData
Definition: classpnp.h:539
PCLASS_UNLOAD ClassUnload
Definition: classpnp.h:544
PCLASS_ENUM_DEVICE ClassEnumerateDevice
Definition: classpnp.h:541
PCLASS_ADD_DEVICE ClassAddDevice
Definition: classpnp.h:540
PCLASS_TICK ClassTick
Definition: classpnp.h:545
_Field_range_(1, 30000) ULONG HistoryCount
_Field_range_(sizeof(CLASS_INTERPRET_SENSE_INFO), sizeof(CLASS_INTERPRET_SENSE_INFO)) ULONG Size
NTSTATUS FinalStatus
Definition: classpnp.h:684
PIO_COMPLETION_ROUTINE CompletionRoutine
Definition: classpnp.h:687
CLASS_POWER_DOWN_STATE2 PowerDown2
Definition: classpnp.h:677
CLASS_POWER_DOWN_STATE3 PowerDown3
Definition: classpnp.h:678
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:688
CLASS_POWER_UP_STATE PowerUp
Definition: classpnp.h:679
SCSI_REQUEST_BLOCK Srb
Definition: classpnp.h:690
CLASS_POWER_DOWN_STATE PowerDown
Definition: classpnp.h:676
CLASS_POWER_OPTIONS Options
Definition: classpnp.h:681
__callback PCLASS_QUERY_WMI_REGINFO_EX ClassPdoQueryWmiRegInfoEx
Definition: classpnp.h:727
__callback PCLASS_QUERY_WMI_REGINFO_EX ClassFdoQueryWmiRegInfoEx
Definition: classpnp.h:726
BOOLEAN UGAVALID
Definition: classpnp.h:754
ULONG UnmapGranularityAlignment
Definition: classpnp.h:753
ULONG MaxUnmapBlockDescrCount
Definition: classpnp.h:751
USHORT OptimalTransferLengthGranularity
Definition: classpnp.h:756
ULONG OptimalTransferLength
Definition: classpnp.h:758
ULONG MaximumTransferLength
Definition: classpnp.h:757
ULONG OptimalUnmapGranularity
Definition: classpnp.h:752
ULONG MaxUnmapLbaCount
Definition: classpnp.h:750
NTSTATUS CommandStatus
Definition: classpnp.h:749
ULONG DepopulationTime
Definition: classpnp.h:744
ULONG MediumProductType
Definition: classpnp.h:743
USHORT MediumRotationRate
Definition: classpnp.h:740
NTSTATUS CommandStatus
Definition: classpnp.h:739
UCHAR NominalFormFactor
Definition: classpnp.h:741
NTSTATUS CommandStatus
Definition: classpnp.h:767
ULONG SoftThresholdEventPending
Definition: classpnp.h:778
UCHAR ThresholdExponent
Definition: classpnp.h:768
UCHAR ProvisioningType
Definition: classpnp.h:776
ULONG GuidCount
Definition: classpnp.h:507
PCLASS_WMI_FUNCTION_CONTROL ClassWmiFunctionControl
Definition: classpnp.h:514
PCLASS_SET_WMI_DATAITEM ClassSetWmiDataItem
Definition: classpnp.h:512
PCLASS_SET_WMI_DATABLOCK ClassSetWmiDataBlock
Definition: classpnp.h:511
PGUIDREGINFO GuidRegInfo
Definition: classpnp.h:508
PCLASS_EXECUTE_WMI_METHOD ClassExecuteWmiMethod
Definition: classpnp.h:513
PCLASS_QUERY_WMI_DATABLOCK ClassQueryWmiDataBlock
Definition: classpnp.h:510
PCLASS_QUERY_WMI_REGINFO ClassQueryWmiRegInfo
Definition: classpnp.h:509
_Field_range_(sizeof(CLASS_WORKING_SET), sizeof(CLASS_WORKING_SET)) ULONG Size
_Field_range_(0, 2048) ULONG XferPacketsWorkingSetMaximum
LARGE_INTEGER StartingOffset
Definition: classpnp.h:619
NPAGED_LOOKASIDE_LIST SrbLookasideList
Definition: classpnp.h:626
KSPIN_LOCK RemoveTrackingSpinlock
Definition: classpnp.h:603
DICTIONARY FileObjectDictionary
Definition: classpnp.h:631
PCLASS_DRIVER_EXTENSION DriverExtension
Definition: classpnp.h:600
PDEVICE_OBJECT LowerDeviceObject
Definition: classpnp.h:598
struct _PHYSICAL_DEVICE_EXTENSION * ChildList
Definition: classpnp.h:616
UNICODE_STRING DeviceName
Definition: classpnp.h:615
struct _FUNCTIONAL_DEVICE_EXTENSION * PartitionZeroExtension
Definition: classpnp.h:599
BOOLEAN IsSrbLookasideListInitialized
Definition: classpnp.h:610
UNICODE_STRING MountedDeviceInterfaceName
Definition: classpnp.h:628
PCLASS_DEV_INFO DevInfo
Definition: classpnp.h:620
LARGE_INTEGER PartitionLength
Definition: classpnp.h:618
PCLASS_PRIVATE_COMMON_DATA PrivateCommonData
Definition: classpnp.h:633
PGUIDREGINFO GuidRegInfo
Definition: classpnp.h:630
PDRIVER_DISPATCH * DispatchTable
Definition: classpnp.h:638
STORAGE_REQUEST_BLOCK SrbEx
Definition: classpnp.h:706
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:701
ULONGLONG Signature
Definition: classpnp.h:294
KSPIN_LOCK SpinLock
Definition: classpnp.h:296
struct _DICTIONARY_HEADER * List
Definition: classpnp.h:295
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:550
PFILE_OBJECT FileObject
Definition: classpnp.h:549
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:871
KSPIN_LOCK ReleaseQueueSpinLock
Definition: classpnp.h:911
DISK_GEOMETRY DiskGeometry
Definition: classpnp.h:888
PDEVICE_OBJECT LowerPdo
Definition: classpnp.h:875
struct _FAILURE_PREDICTION_INFO * FailurePredictionInfo
Definition: classpnp.h:919
CLASS_POWER_CONTEXT PowerContext
Definition: classpnp.h:928
COMMON_DEVICE_EXTENSION CommonExtension
Definition: classpnp.h:873
SCSI_REQUEST_BLOCK ReleaseQueueSrb
Definition: classpnp.h:913
FILE_OBJECT_EXTENSION KernelModeMcnContext
Definition: classpnp.h:908
PSTORAGE_ADAPTER_DESCRIPTOR AdapterDescriptor
Definition: classpnp.h:877
DEVICE_POWER_STATE DevicePowerState
Definition: classpnp.h:878
PMEDIA_CHANGE_DETECTION_INFO MediaChangeDetectionInfo
Definition: classpnp.h:905
PSTORAGE_DEVICE_DESCRIPTOR DeviceDescriptor
Definition: classpnp.h:876
Definition: ketypes.h:699
COMMON_DEVICE_EXTENSION CommonExtension
Definition: classpnp.h:652
PDEVICE_OBJECT DeviceObject
Definition: classpnp.h:650
PCLASS_PRIVATE_PDO_DATA PrivatePdoData
Definition: classpnp.h:657
UCHAR SenseInfoBufferLength
Definition: srb.h:259
PVOID SenseInfoBuffer
Definition: srb.h:264
ULONG SrbFlags
Definition: srb.h:260
LARGE_INTEGER TickCountSent
Definition: cdromp.h:97
LARGE_INTEGER TickCountCompleted
Definition: cdromp.h:98
UCHAR ClassDriverUse
Definition: cdromp.h:102
ULONG MillisecondsDelayOnRetry
Definition: cdromp.h:99
UCHAR SrbStatus
Definition: cdromp.h:101
SENSE_DATA NormalizedSenseData
Definition: cdromp.h:100
ULONG_PTR ClassDriverUse[4]
Definition: cdromp.h:106
_Field_range_(1, 30000) ULONG TotalHistoryCount
Definition: iotypes.h:189
#define max(a, b)
Definition: svc.c:63
uint16_t * PWSTR
Definition: typedefs.h:56
#define MAXULONG
Definition: typedefs.h:251
uint32_t * PULONG
Definition: typedefs.h:59
int64_t LONGLONG
Definition: typedefs.h:68
#define NTAPI
Definition: typedefs.h:36
const char * PCSTR
Definition: typedefs.h:52
uint32_t ULONG_PTR
Definition: typedefs.h:65
unsigned char * PUCHAR
Definition: typedefs.h:53
uint32_t ULONG
Definition: typedefs.h:59
uint64_t ULONGLONG
Definition: typedefs.h:67
char CCHAR
Definition: typedefs.h:51
char * PCHAR
Definition: typedefs.h:51
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2055
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
Definition: wdfdevice.h:4065
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
Definition: wdfdevice.h:4533
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG BufferLength
Definition: wdfdevice.h:3771
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_opt_ PCUNICODE_STRING DeviceName
Definition: wdfdevice.h:3275
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
_Must_inspect_result_ _In_ PDRIVER_OBJECT _In_ PCUNICODE_STRING RegistryPath
Definition: wdfdriver.h:215
_Must_inspect_result_ _In_ PDRIVER_OBJECT DriverObject
Definition: wdfdriver.h:213
_Must_inspect_result_ _In_ WDFDEVICE Fdo
Definition: wdffdo.h:461
_In_ WDFREQUEST _In_ size_t _In_ size_t _In_ ULONG IoControlCode
Definition: wdfio.h:325
_In_ WDFREQUEST _In_ size_t OutputBufferLength
Definition: wdfio.h:320
_In_ WDFREQUEST _In_ size_t _In_ size_t InputBufferLength
Definition: wdfio.h:322
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
Definition: wdfmemory.h:254
_Must_inspect_result_ _In_ WDFOBJECT _In_ CONST GUID * Guid
Definition: wdfobject.h:762
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
Definition: wdfrequest.h:1016
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
Definition: wdfresource.h:342
#define FORCEINLINE
Definition: wdftypes.h:67
_In_ ULONG OutBufferSize
Definition: wdfwmi.h:87
_In_ ULONG _Out_ PULONG BufferUsed
Definition: wdfwmi.h:92
_In_ ULONG InBufferSize
Definition: wdfwmi.h:106
_Must_inspect_result_ _In_ WDFWMIINSTANCE _In_opt_ ULONG EventDataSize
Definition: wdfwmi.h:617
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
_IRQL_requires_same_ _In_opt_ PVOID Argument1
Definition: cmtypes.h:696
struct LOOKASIDE_ALIGN _NPAGED_LOOKASIDE_LIST NPAGED_LOOKASIDE_LIST
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
_Must_inspect_result_ __drv_aliasesMem _In_ PDEVICE_OBJECT _In_opt_ PVOID _In_ ULONG _Out_opt_ PVOID _In_ ULONG _In_ BOOLEAN InternalDeviceIoControl
Definition: iofuncs.h:720
DRIVER_STARTIO * PDRIVER_STARTIO
Definition: iotypes.h:2245
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
IO_COMPLETION_ROUTINE * PIO_COMPLETION_ROUTINE
Definition: iotypes.h:2835
DRIVER_DISPATCH * PDRIVER_DISPATCH
Definition: iotypes.h:2262
* PFILE_OBJECT
Definition: iotypes.h:1998
* PDEVICE_CAPABILITIES
Definition: iotypes.h:965
#define IRP_MJ_MAXIMUM_FUNCTION
unsigned char UCHAR
Definition: xmlstorage.h:181