3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: ntoskrnl/fs/notify.c
6 * PURPOSE: No purpose listed.
8 * PROGRAMMERS: No programmer listed.
13 #include <internal/debug.h>
15 /**********************************************************************
17 * FsRtlNotifyChangeDirectory@28
29 FsRtlNotifyChangeDirectory (
30 IN PNOTIFY_SYNC NotifySync
,
32 IN PSTRING FullDirectoryName
,
33 IN PLIST_ENTRY NotifyList
,
35 IN ULONG CompletionFilter
,
39 FsRtlNotifyFullChangeDirectory (
45 TRUE
, /* IgnoreBuffer */
55 /**********************************************************************
57 * FsRtlNotifyCleanup@12
70 IN PNOTIFY_SYNC NotifySync
,
71 IN PLIST_ENTRY NotifyList
,
83 FsRtlNotifyFilterChangeDirectory (
84 IN PNOTIFY_SYNC NotifySync
,
85 IN PLIST_ENTRY NotifyList
,
87 IN PSTRING FullDirectoryName
,
89 IN BOOLEAN IgnoreBuffer
,
90 IN ULONG CompletionFilter
,
92 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
93 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
,
94 IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL
105 FsRtlNotifyFilterReportChange (
106 IN PNOTIFY_SYNC NotifySync
,
107 IN PLIST_ENTRY NotifyList
,
108 IN PSTRING FullTargetName
,
109 IN USHORT TargetNameOffset
,
110 IN PSTRING StreamName OPTIONAL
,
111 IN PSTRING NormalizedParentName OPTIONAL
,
112 IN ULONG FilterMatch
,
114 IN PVOID TargetContext
,
115 IN PVOID FilterContext
122 /**********************************************************************
124 * FsRtlNotifyFullChangeDirectory@40
136 FsRtlNotifyFullChangeDirectory (
137 IN PNOTIFY_SYNC NotifySync
,
138 IN PLIST_ENTRY NotifyList
,
140 IN PSTRING FullDirectoryName
,
141 IN BOOLEAN WatchTree
,
142 IN BOOLEAN IgnoreBuffer
,
143 IN ULONG CompletionFilter
,
145 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
146 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
149 #if defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1300)
150 DbgPrint("%s()\n", __FUNCTION__
);
152 DbgPrint("FsRtlNotifyFullChangeDirectory()\n");
157 /**********************************************************************
159 * FsRtlNotifyFullReportChange@36
171 FsRtlNotifyFullReportChange (
172 IN PNOTIFY_SYNC NotifySync
,
173 IN PLIST_ENTRY NotifyList
,
174 IN PSTRING FullTargetName
,
175 IN USHORT TargetNameOffset
,
176 IN PSTRING StreamName OPTIONAL
,
177 IN PSTRING NormalizedParentName OPTIONAL
,
178 IN ULONG FilterMatch
,
180 IN PVOID TargetContext
186 /**********************************************************************
188 * FsRtlNotifyInitializeSync@4
200 FsRtlNotifyInitializeSync (
201 IN PNOTIFY_SYNC NotifySync
206 *NotifySync
= ExAllocatePoolWithTag (
208 sizeof (NOTIFY_SYNC
), // NumberOfBytes = 0x28
212 *NotifySync
->Unknown0
= 1;
213 *NotifySync
->Unknown2
= 0;
214 *NotifySync
->Unknown3
= 1;
215 *NotifySync
->Unknown4
= 4;
216 *NotifySync
->Unknown5
= 0;
217 *NotifySync
->Unknown9
= 0;
218 *NotifySync
->Unknown10
= 0;
223 /**********************************************************************
225 * FsRtlNotifyReportChange@20
237 FsRtlNotifyReportChange (
238 IN PNOTIFY_SYNC NotifySync
,
239 IN PLIST_ENTRY NotifyList
,
240 IN PSTRING FullTargetName
,
241 IN PUSHORT FileNamePartLength
,
245 FsRtlNotifyFullReportChange (
249 (FullTargetName
->Length
- *FileNamePartLength
), /*?*/
259 /**********************************************************************
261 * FsRtlNotifyUninitializeSync@4
264 * Uninitialize a NOTIFY_SYNC object.
267 * NotifySync is the address of a pointer
268 * to a PNOTIFY_SYNC object previously initialized by
269 * FsRtlNotifyInitializeSync().
278 FsRtlNotifyUninitializeSync (
279 IN OUT PNOTIFY_SYNC NotifySync
283 if (NULL
!= *NotifySync
)
285 ExFreePool (*NotifySync
);
291 /**********************************************************************
293 * FsRtlNotifyVolumeEvent@8
296 * NOTE: Only present in NT 5+.
306 FsRtlNotifyVolumeEvent (
307 IN PFILE_OBJECT FileObject
,
311 return STATUS_NOT_IMPLEMENTED
;
320 FsRtlRegisterFileSystemFilterCallbacks(IN PDRIVER_OBJECT FilterDriverObject
,
321 IN PFS_FILTER_CALLBACKS Callbacks
)
324 return STATUS_NOT_IMPLEMENTED
;