1 //
2 //    Copyright (C) Microsoft.  All rights reserved.
3 //
4 #ifndef _FXFORWARD_HPP_
5 #define _FXFORWARD_HPP_
6 
7 typedef struct _FX_DRIVER_GLOBALS *PFX_DRIVER_GLOBALS;
8 
9 struct FxAutoIrp;
10 class  FxCallback;
11 class  FxCallbackLock;
12 class  FxCallbackMutexLock;
13 class  FxCallbackSpinLock;
14 class  FxChildList;
15 class  FxCmResList;
16 class  FxCollection;
17 struct FxCollectionInternal;
18 class  FxCommonBuffer;
19 struct FxContextHeader;
20 class  FxDevice;
21 class  FxDeviceBase;
22 struct FxDeviceDescriptionEntry;
23 class  FxDeviceInterface;
24 struct FxDeviceText;
25 struct FxCxDeviceInfo;
26 class  FxDefaultIrpHandler;
27 class  FxDisposeList;
28 class  FxDmaEnabler;
29 class  FxDmaTransactionBase;
30 class  FxDmaPacketTransaction;
31 class  FxDmaScatterGatherTransaction;
32 class  FxDriver;
33 class  FxFileObject;
34 struct FxFileObjectInfo;
35 struct FxGlobalsStump;
36 class  FxInterrupt;
37 struct FxIoQueueNode;
38 class  FxIoQueue;
39 class  FxIoResList;
40 class  FxIoResReqList;
41 class  FxIoTarget;
42 class  FxIoTargetSelf;
43 class  FxIrp;
44 struct FxIrpPreprocessInfo;
45 struct FxIrpDynamicDispatchInfo;
46 class  FxIrpQueue;
47 class  FxLock;
48 class  FxLookasideList;
49 class  FxLookasideListFromPool;
50 class  FxMemoryBuffer;
51 class  FxMemoryBufferFromLookaside;
52 class  FxMemoryBufferFromPool;
53 class  FxMemoryBufferFromPoolLookaside;
54 class  FxMemoryBufferPreallocated;
55 class  FxMemoryObject;
56 class  FxNonPagedObject;
57 class  FxNPagedLookasideList;
58 class  FxNPagedLookasideListFromPool;
59 class  FxObject;
60 class  FxPackage;
61 class  FxPagedLookasideListFromPool;
62 class  FxPagedObject;
63 class  FxPkgFdo;
64 class  FxPkgGeneral;
65 class  FxPkgIo;
66 class  FxPkgPdo;
67 class  FxPkgPnp;
68 struct FxPnpMachine;
69 struct FxPnpStateCallback;
70 struct FxPowerMachine;
71 struct FxPostProcessInfo;
72 class  FxPowerIdleMachine;
73 struct FxPowerPolicyMachine;
74 struct FxPowerPolicyStateCallback;
75 struct FxPowerStateCallback;
76 struct FxQueryInterface;
77 class  FxRequest;
78 class  FxRequestBase;
79 struct FxRequestBuffer;
80 struct FxRequestContext;
81 class  FxRequestFromLookaside;
82 class  FxRequestMemory;
83 struct FxRequestOutputBuffer;
84 struct FxRequestSystemBuffer;
85 class  FxRelatedDevice;
86 class  FxRelatedDeviceList;
87 class  FxResourceCm;
88 class  FxResourceIo;
89 class  FxSelfManagedIoMachine;
90 class  FxSpinLock;
91 class  FxString;
92 struct FxStump;
93 class  FxSyncRequest;
94 class  FxSystemWorkItem;
95 class  FxSystemThread;
96 class  FxTagTracker;
97 class  FxTimer;
98 struct FxTraceInfo;
99 class  FxTransactionedList;
100 struct FxTransactionedEntry;
101 class  FxUsbDevice;
102 struct FxUsbIdleInfo;
103 class  FxUsbInterface;
104 class  FxUsbPipe;
105 struct FxUsbPipeContinuousReader;
106 class  FxVerifierLock;
107 struct FxWatchdog;
108 class  FxWaitLock;
109 class  FxWmiProvider;
110 class  FxWmiInstance;
111 class  FxWmiInstanceExternal;
112 class  FxWmiInstanceInternal;
113 struct FxWmiInstanceInternalCallbacks;
114 class  FxWmiIrpHandler;
115 class  FxWorkItem;
116 
117 class  IFxHasCallbacks;
118 class  IFxMemory;
119 
120 enum FxObjectType : UINT32;
121 enum FxWmiInstanceAction : UINT32;
122 enum FxDriverObjectUmFlags : USHORT;
123 enum FxWakeInterruptEvents : UINT32;
124 
125 
126 PVOID
127 FxObjectHandleAlloc(
128     __in        PFX_DRIVER_GLOBALS FxDriverGlobals,
129     __in        POOL_TYPE PoolType,
130     __in        size_t Size,
131     __in        ULONG Tag,
132     __in_opt    PWDF_OBJECT_ATTRIBUTES Attributes,
133     __in        USHORT ExtraSize,
134     __in        FxObjectType ObjectType
135     );
136 
137 #if (FX_CORE_MODE==FX_CORE_USER_MODE)
138 #include "fxforwardum.hpp"
139 #endif
140 
141 #endif //  _FXFORWARD_HPP_
142