1 //
2 //    Copyright (C) Microsoft.  All rights reserved.
3 //
4 #ifndef _FXIRPPREPROCESSINFO_H_
5 #define _FXIRPPREPROCESSINFO_H_
6 
7 struct FxIrpPreprocessInfo : public FxStump {
FxIrpPreprocessInfoFxIrpPreprocessInfo8     FxIrpPreprocessInfo() :
9         ClassExtension(FALSE)
10     {
11         InitializeListHead(&ListEntry);
12     }
13 
~FxIrpPreprocessInfoFxIrpPreprocessInfo14     ~FxIrpPreprocessInfo()
15     {
16         ASSERT(IsListEmpty(&ListEntry));
17     }
18 
19     struct Info {
InfoFxIrpPreprocessInfo::Info20         Info() :
21             EvtDevicePreprocess(NULL),
22             NumMinorFunctions(0),
23             MinorFunctions(NULL)
24         {
25         }
26 
~InfoFxIrpPreprocessInfo::Info27         ~Info()
28         {
29             if (MinorFunctions != NULL) {
30                 FxPoolFree(MinorFunctions);
31             }
32         }
33 
34         union {
35             PFN_WDFDEVICE_WDM_IRP_PREPROCESS        EvtDevicePreprocess;
36             PFN_WDFCXDEVICE_WDM_IRP_PREPROCESS      EvtCxDevicePreprocess;
37         };
38 
39         ULONG       NumMinorFunctions;
40         PUCHAR      MinorFunctions;
41     };
42 
43     LIST_ENTRY  ListEntry;
44     Info        Dispatch[IRP_MJ_MAXIMUM_FUNCTION+1];
45     BOOLEAN     ClassExtension;
46 };
47 
48 
49 #endif // _FXIRPPREPROCESSINFO_H_
50