ReactOS  0.4.14-dev-583-g2a1ba2c
fltmgr.h
Go to the documentation of this file.
1 #ifndef _FLTMGR_H
2 #define _FLTMGR_H
3 
4 #include <ntifs.h>
5 #include <ndk/obfuncs.h>
6 #include <ndk/exfuncs.h>
7 #include <fltkernel.h>
8 #include <pseh/pseh2.h>
9 
10 #define DRIVER_NAME L"FltMgr"
11 
12 #define FLT_MAJOR_VERSION 0x0200
13 #define FLT_MINOR_VERSION 0x0000 //win2k3
14 
15 #define FM_TAG_DISPATCH_TABLE 'ifMF'
16 #define FM_TAG_REGISTRY_DATA 'rtMF'
17 #define FM_TAG_DEV_OBJ_PTRS 'ldMF'
18 #define FM_TAG_UNICODE_STRING 'suMF'
19 #define FM_TAG_FILTER 'lfMF'
20 #define FM_TAG_CONTEXT_REGISTA 'rcMF'
21 #define FM_TAG_CCB 'bcMF'
22 #define FM_TAG_TEMP_REGISTRY 'rtMF'
23 
24 #define MAX_DEVNAME_LENGTH 64
25 
26 
27 typedef struct _DRIVER_DATA
28 {
32 
34 
36 
38 
40 
42 {
43  /* The file system we're attached to */
45 
46  /* The storage stack(disk) associated with the file system device object we're attached to */
48 
49  /* Either physical drive for volume device objects otherwise
50  * it's the name of the control device we're attached to */
53 
55 
56 
61 );
62 
63 VOID
65  _Out_ PEX_RUNDOWN_REF RundownRef
66 );
67 
68 BOOLEAN
70  _Inout_ PEX_RUNDOWN_REF RundownRef
71 );
72 
73 BOOLEAN
75  _Inout_ PEX_RUNDOWN_REF RundownRef
76 );
77 
79 NTAPI
81  _Inout_ PEX_RUNDOWN_REF RundownRef
82 );
83 
84 BOOLEAN
86  _Inout_ PEX_RUNDOWN_REF RundownRef
87 );
88 
93 
97 
101  _In_ BOOLEAN CopyExisting);
102 
103 VOID
105 
106 
107 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
121 //FM ? ? -fltmgr.sys - Unrecognized FltMgr tag(update pooltag.w)
122 //FMac - fltmgr.sys - ASCII String buffers
123 //FMas - fltmgr.sys - ASYNC_IO_COMPLETION_CONTEXT structure
124 //FMcb - fltmgr.sys - FLT_CCB structure
125 //FMcr - fltmgr.sys - Context registration structures
126 //FMct - fltmgr.sys - TRACK_COMPLETION_NODES structure
127 //FMdl - fltmgr.sys - Array of DEVICE_OBJECT pointers
128 //FMea - fltmgr.sys - EA buffer for create
129 //FMfc - fltmgr.sys - FLTMGR_FILE_OBJECT_CONTEXT structure
130 //FMfi - fltmgr.sys - Fast IO dispatch table
131 //FMfk - fltmgr.sys - Byte Range Lock structure
132 //FMfl - fltmgr.sys - FLT_FILTER structure
133 //FMfn - fltmgr.sys - NAME_CACHE_NODE structure
134 //FMfr - fltmgr.sys - FLT_FRAME structure
135 //FMfz - fltmgr.sys - FILE_LIST_CTRL structure
136 //FMib - fltmgr.sys - Irp SYSTEM buffers
137 //FMic - fltmgr.sys - IRP_CTRL structure
138 //FMin - fltmgr.sys - FLT_INSTANCE name
139 //FMil - fltmgr.sys - IRP_CTRL completion node stack
140 //FMis - fltmgr.sys - FLT_INSTANCE structure
141 //FMla - fltmgr.sys - Per - processor IRPCTRL lookaside lists
142 //FMnc - fltmgr.sys - NAME_CACHE_CREATE_CTRL structure
143 //FMng - fltmgr.sys - NAME_GENERATION_CONTEXT structure
144 //FMol - fltmgr.sys - OPLOCK_CONTEXT structure
145 //FMos - fltmgr.sys - Operation status ctrl structure
146 //FMpl - fltmgr.sys - Cache aware pushLock
147 //FMpr - fltmgr.sys - FLT_PRCB structure
148 //FMrl - fltmgr.sys - FLT_OBJECT rundown logs
149 //FMrp - fltmgr.sys - Reparse point data buffer
150 //FMrr - fltmgr.sys - Per - processor Cache - aware rundown ref structure
151 //FMsd - fltmgr.sys - Security descriptors
152 //FMsl - fltmgr.sys - STREAM_LIST_CTRL structure
153 //FMtn - fltmgr.sys - Temporary file names
154 //FMtr - fltmgr.sys - Temporary Registry information
155 //FMts - fltmgr.sys - Tree Stack
156 //FMus - fltmgr.sys - Unicode string
157 //FMvf - fltmgr.sys - FLT_VERIFIER_EXTENSION structure
158 //FMvj - fltmgr.sys - FLT_VERIFIER_OBJECT structure
159 //FMvo - fltmgr.sys - FLT_VOLUME structure
160 //FMwi - fltmgr.sys - Work item structures
161 //FMcn - fltmgr.sys - Non paged context extension structures.
162 //FMtp - fltmgr.sys - Non Paged tx vol context structures.
163 //FMlp - fltmgr.sys - Paged stream list control entry structures.
164 
165 
166 
167 
168 /*
169 FltAcquirePushLockExclusive
170 FltAcquirePushLockShared
171 FltAcquireResourceExclusive
172 FltAcquireResourceShared
173 FltAllocateCallbackData
174 FltAllocateContext
175 FltAllocateDeferredIoWorkItem
176 FltAllocateFileLock
177 FltAllocateGenericWorkItem
178 FltAllocatePoolAlignedWithTag
179 FltAttachVolume
180 FltAttachVolumeAtAltitude
181 FltBuildDefaultSecurityDescriptor
182 FltCancelFileOpen
183 FltCancelIo
184 FltCbdqDisable
185 FltCbdqEnable
186 FltCbdqInitialize
187 FltCbdqInsertIo
188 FltCbdqRemoveIo
189 FltCbdqRemoveNextIo
190 FltCheckAndGrowNameControl
191 FltCheckLockForReadAccess
192 FltCheckLockForWriteAccess
193 FltCheckOplock
194 FltClearCallbackDataDirty
195 FltClearCancelCompletion
196 FltClose
197 FltCloseClientPort
198 FltCloseCommunicationPort
199 FltCompareInstanceAltitudes
200 FltCompletePendedPostOperation
201 FltCompletePendedPreOperation
202 FltCreateCommunicationPort
203 FltCreateFile
204 FltCreateFileEx
205 FltCreateSystemVolumeInformationFolder
206 FltCurrentBatchOplock
207 FltDecodeParameters
208 FltDeleteContext
209 FltDeleteFileContext
210 FltDeleteInstanceContext
211 FltDeletePushLock
212 FltDeleteStreamContext
213 FltDeleteStreamHandleContext
214 FltDeleteVolumeContext
215 FltDetachVolume
216 FltDeviceIoControlFile
217 FltDoCompletionProcessingWhenSafe
218 FltEnumerateFilterInformation
219 FltEnumerateFilters
220 FltEnumerateInstanceInformationByFilter
221 FltEnumerateInstanceInformationByVolume
222 FltEnumerateInstances
223 FltEnumerateVolumeInformation
224 FltEnumerateVolumes
225 FltFlushBuffers
226 FltFreeCallbackData
227 FltFreeDeferredIoWorkItem
228 FltFreeFileLock
229 FltFreeGenericWorkItem
230 FltFreePoolAlignedWithTag
231 FltFreeSecurityDescriptor
232 FltFsControlFile
233 FltGetBottomInstance
234 FltGetContexts
235 FltGetDestinationFileNameInformation
236 FltGetDeviceObject
237 FltGetDiskDeviceObject
238 FltGetFileContext
239 FltGetFileNameInformation
240 FltGetFileNameInformationUnsafe
241 FltGetFilterFromInstance
242 FltGetFilterFromName
243 FltGetFilterInformation
244 FltGetInstanceContext
245 FltGetInstanceInformation
246 FltGetIrpName
247 FltGetLowerInstance
248 FltGetRequestorProcess
249 FltGetRequestorProcessId
250 FltGetRoutineAddress
251 FltGetStreamContext
252 FltGetStreamHandleContext
253 FltGetSwappedBufferMdlAddress
254 FltGetTopInstance
255 FltGetTunneledName
256 FltGetUpperInstance
257 FltGetVolumeContext
258 FltGetVolumeFromDeviceObject
259 FltGetVolumeFromFileObject
260 FltLoadFilter
261 FltGetVolumeFromName
262 FltGetVolumeGuidName
263 FltGetVolumeInstanceFromName
264 FltGetVolumeName
265 FltGetVolumeProperties
266 FltInitializeFileLock
267 FltInitializeOplock
268 FltInitializePushLock
269 FltIs32bitProcess
270 FltIsCallbackDataDirty
271 FltIsDirectory
272 FltIsIoCanceled
273 FltIsOperationSynchronous
274 FltIsVolumeWritable
275 FltLoadFilter
276 FltLockUserBuffer
277 FltNotifyFilterChangeDirectory
278 FltObjectDereference
279 FltObjectReference
280 FltOpenVolume
281 FltOplockFsctrl
282 FltOplockIsFastIoPossible
283 FltParseFileName
284 FltParseFileNameInformation
285 FltPerformAsynchronousIo
286 FltPerformSynchronousIo
287 FltProcessFileLock
288 FltPurgeFileNameInformationCache
289 FltQueryEaFile
290 FltQueryInformationFile
291 FltQuerySecurityObject
292 FltQueryVolumeInformation
293 FltQueryVolumeInformationFile
294 FltQueueDeferredIoWorkItem
295 FltQueueGenericWorkItem
296 FltReadFile
297 FltReferenceContext
298 FltReferenceFileNameInformation
299 FltRegisterFilter
300 FltReissueSynchronousIo
301 FltReleaseContext
302 FltReleaseContexts
303 FltReleaseFileNameInformation
304 FltReleasePushLock
305 FltReleaseResource
306 FltRequestOperationStatusCallback
307 FltRetainSwappedBufferMdlAddress
308 FltReuseCallbackData
309 FltSendMessage
310 FltSetCallbackDataDirty
311 FltSetCancelCompletion
312 FltSetEaFile
313 FltSetFileContext
314 FltSetInformationFile
315 FltSetInstanceContext
316 FltSetSecurityObject
317 FltSetStreamContext
318 FltSetStreamHandleContext
319 FltSetVolumeContext
320 FltSetVolumeInformation
321 FltStartFiltering
322 FltSupportsFileContexts
323 FltSupportsStreamContexts
324 FltSupportsStreamHandleContexts
325 FltTagFile
326 FltUninitializeFileLock
327 FltUninitializeOplock
328 FltUnloadFilter
329 FltUnregisterFilter
330 FltUntagFile
331 FltWriteFile
332 */
333 
334 
335 
336 
337 #endif /* _FLTMGR_H */
NTSTATUS FltpRegisterContexts(_In_ PFLT_FILTER Filter, _In_ const FLT_CONTEXT_REGISTRATION *Context)
Definition: Context.c:43
PDRIVER_OBJECT DriverObject
Definition: fltmgr.h:29
VOID FltpFreeUnicodeString(_In_ PUNICODE_STRING String)
Definition: Lib.c:24
FAST_MUTEX FilterAttachLock
Definition: fltmgr.h:37
LONG NTSTATUS
Definition: precomp.h:26
static WCHAR String[]
Definition: stringtable.c:55
PDEVICE_OBJECT StorageStackDeviceObject
Definition: fltmgr.h:47
_In_ PVOID _Out_opt_ PULONG_PTR _Outptr_opt_ PCUNICODE_STRING * ObjectName
Definition: cmfuncs.h:62
UNICODE_STRING DeviceName
Definition: fltmgr.h:51
PDEVICE_OBJECT CommsDeviceObject
Definition: fltmgr.h:33
static USHORT USHORT * NewLength
struct _DRIVER_DATA * PDRIVER_DATA
BOOLEAN FltpExAcquireRundownProtection(_Inout_ PEX_RUNDOWN_REF RundownRef)
Definition: Object.c:218
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
_Must_inspect_result_ _In_opt_ PFLT_FILTER Filter
Definition: fltkernel.h:1802
NTSTATUS FltpGetBaseDeviceObjectName(_In_ PDEVICE_OBJECT DeviceObject, _Inout_ PUNICODE_STRING ObjectName)
Definition: Object.c:245
unsigned char BOOLEAN
#define _Out_
Definition: no_sal2.h:323
FAST_MUTEX
Definition: extypes.h:17
NTSTATUS FltpReallocateUnicodeString(_In_ PUNICODE_STRING String, _In_ SIZE_T NewLength, _In_ BOOLEAN CopyExisting)
Definition: Lib.c:39
struct _DRIVER_DATA DRIVER_DATA
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define _Inout_
Definition: no_sal2.h:244
static IUnknown Object
Definition: main.c:512
#define MAX_DEVNAME_LENGTH
Definition: fltmgr.h:24
VOID FltpExInitializeRundownProtection(_Out_ PEX_RUNDOWN_REF RundownRef)
Definition: Object.c:212
PDEVICE_OBJECT DeviceObject
Definition: fltmgr.h:30
struct _FLTMGR_DEVICE_EXTENSION FLTMGR_DEVICE_EXTENSION
#define _In_
Definition: no_sal2.h:204
IN PDEVICE_OBJECT DeviceObject
Definition: fatprocs.h:1560
ULONG_PTR SIZE_T
Definition: typedefs.h:78
BOOLEAN FltpExRundownCompleted(_Inout_ PEX_RUNDOWN_REF RundownRef)
Definition: Object.c:231
BOOLEAN FltpExReleaseRundownProtection(_Inout_ PEX_RUNDOWN_REF RundownRef)
Definition: Object.c:224
NTSTATUS NTAPI FltpObjectRundownWait(_Inout_ PEX_RUNDOWN_REF RundownRef)
Definition: Object.c:238
PDEVICE_OBJECT AttachedToDeviceObject
Definition: fltmgr.h:44
struct _FLTMGR_DEVICE_EXTENSION * PFLTMGR_DEVICE_EXTENSION
UNICODE_STRING ServiceKey
Definition: fltmgr.h:31
NTSTATUS FltpGetObjectName(_In_ PVOID Object, _Inout_ PUNICODE_STRING ObjectName)
Definition: Object.c:263
WCHAR DeviceNameBuffer[MAX_DEVNAME_LENGTH]
Definition: fltmgr.h:52
PFAST_IO_DISPATCH FastIoDispatch
Definition: fltmgr.h:35