1 /* $Id: notify.c,v 1.11 2004/06/27 13:58:05 navaraf Exp $
3 * reactos/ntoskrnl/fs/notify.c
10 #include <internal/debug.h>
12 /**********************************************************************
14 * FsRtlNotifyChangeDirectory@28
26 FsRtlNotifyChangeDirectory (
27 IN PNOTIFY_SYNC NotifySync
,
29 IN PSTRING FullDirectoryName
,
30 IN PLIST_ENTRY NotifyList
,
32 IN ULONG CompletionFilter
,
36 FsRtlNotifyFullChangeDirectory (
42 TRUE
, /* IgnoreBuffer */
52 /**********************************************************************
54 * FsRtlNotifyCleanup@12
67 IN PNOTIFY_SYNC NotifySync
,
68 IN PLIST_ENTRY NotifyList
,
80 FsRtlNotifyFilterChangeDirectory (
81 IN PNOTIFY_SYNC NotifySync
,
82 IN PLIST_ENTRY NotifyList
,
84 IN PSTRING FullDirectoryName
,
86 IN BOOLEAN IgnoreBuffer
,
87 IN ULONG CompletionFilter
,
89 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
90 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
,
91 IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL
102 FsRtlNotifyFilterReportChange (
103 IN PNOTIFY_SYNC NotifySync
,
104 IN PLIST_ENTRY NotifyList
,
105 IN PSTRING FullTargetName
,
106 IN USHORT TargetNameOffset
,
107 IN PSTRING StreamName OPTIONAL
,
108 IN PSTRING NormalizedParentName OPTIONAL
,
109 IN ULONG FilterMatch
,
111 IN PVOID TargetContext
,
112 IN PVOID FilterContext
119 /**********************************************************************
121 * FsRtlNotifyFullChangeDirectory@40
133 FsRtlNotifyFullChangeDirectory (
134 IN PNOTIFY_SYNC NotifySync
,
135 IN PLIST_ENTRY NotifyList
,
137 IN PSTRING FullDirectoryName
,
138 IN BOOLEAN WatchTree
,
139 IN BOOLEAN IgnoreBuffer
,
140 IN ULONG CompletionFilter
,
142 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
143 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
146 #if defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1300)
147 DbgPrint("%s()\n", __FUNCTION__
);
149 DbgPrint("FsRtlNotifyFullChangeDirectory()\n");
154 /**********************************************************************
156 * FsRtlNotifyFullReportChange@36
168 FsRtlNotifyFullReportChange (
169 IN PNOTIFY_SYNC NotifySync
,
170 IN PLIST_ENTRY NotifyList
,
171 IN PSTRING FullTargetName
,
172 IN USHORT TargetNameOffset
,
173 IN PSTRING StreamName OPTIONAL
,
174 IN PSTRING NormalizedParentName OPTIONAL
,
175 IN ULONG FilterMatch
,
177 IN PVOID TargetContext
183 /**********************************************************************
185 * FsRtlNotifyInitializeSync@4
197 FsRtlNotifyInitializeSync (
198 IN PNOTIFY_SYNC NotifySync
203 *NotifySync
= ExAllocatePoolWithTag (
205 sizeof (NOTIFY_SYNC
), // NumberOfBytes = 0x28
209 *NotifySync
->Unknown0
= 1;
210 *NotifySync
->Unknown2
= 0;
211 *NotifySync
->Unknown3
= 1;
212 *NotifySync
->Unknown4
= 4;
213 *NotifySync
->Unknown5
= 0;
214 *NotifySync
->Unknown9
= 0;
215 *NotifySync
->Unknown10
= 0;
220 /**********************************************************************
222 * FsRtlNotifyReportChange@20
234 FsRtlNotifyReportChange (
235 IN PNOTIFY_SYNC NotifySync
,
236 IN PLIST_ENTRY NotifyList
,
237 IN PSTRING FullTargetName
,
238 IN PUSHORT FileNamePartLength
,
242 FsRtlNotifyFullReportChange (
246 (FullTargetName
->Length
- *FileNamePartLength
), /*?*/
256 /**********************************************************************
258 * FsRtlNotifyUninitializeSync@4
261 * Uninitialize a NOTIFY_SYNC object.
264 * NotifySync is the address of a pointer
265 * to a PNOTIFY_SYNC object previously initialized by
266 * FsRtlNotifyInitializeSync().
275 FsRtlNotifyUninitializeSync (
276 IN OUT PNOTIFY_SYNC NotifySync
280 if (NULL
!= *NotifySync
)
282 ExFreePool (*NotifySync
);
288 /**********************************************************************
290 * FsRtlNotifyVolumeEvent@8
293 * NOTE: Only present in NT 5+.
303 FsRtlNotifyVolumeEvent (
304 IN PFILE_OBJECT FileObject
,
308 return STATUS_NOT_IMPLEMENTED
;
317 FsRtlRegisterFileSystemFilterCallbacks (
323 return STATUS_NOT_IMPLEMENTED
;