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