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