1 /* $Id: notify.c,v 1.13 2004/08/21 20:38:53 tamlin Exp $
3 * reactos/ntoskrnl/fs/notify.c
9 #include <internal/debug.h>
11 /**********************************************************************
13 * FsRtlNotifyChangeDirectory@28
25 FsRtlNotifyChangeDirectory (
26 IN PNOTIFY_SYNC NotifySync
,
28 IN PSTRING FullDirectoryName
,
29 IN PLIST_ENTRY NotifyList
,
31 IN ULONG CompletionFilter
,
35 FsRtlNotifyFullChangeDirectory (
41 TRUE
, /* IgnoreBuffer */
51 /**********************************************************************
53 * FsRtlNotifyCleanup@12
66 IN PNOTIFY_SYNC NotifySync
,
67 IN PLIST_ENTRY NotifyList
,
79 FsRtlNotifyFilterChangeDirectory (
80 IN PNOTIFY_SYNC NotifySync
,
81 IN PLIST_ENTRY NotifyList
,
83 IN PSTRING FullDirectoryName
,
85 IN BOOLEAN IgnoreBuffer
,
86 IN ULONG CompletionFilter
,
88 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
89 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
,
90 IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL
101 FsRtlNotifyFilterReportChange (
102 IN PNOTIFY_SYNC NotifySync
,
103 IN PLIST_ENTRY NotifyList
,
104 IN PSTRING FullTargetName
,
105 IN USHORT TargetNameOffset
,
106 IN PSTRING StreamName OPTIONAL
,
107 IN PSTRING NormalizedParentName OPTIONAL
,
108 IN ULONG FilterMatch
,
110 IN PVOID TargetContext
,
111 IN PVOID FilterContext
118 /**********************************************************************
120 * FsRtlNotifyFullChangeDirectory@40
132 FsRtlNotifyFullChangeDirectory (
133 IN PNOTIFY_SYNC NotifySync
,
134 IN PLIST_ENTRY NotifyList
,
136 IN PSTRING FullDirectoryName
,
137 IN BOOLEAN WatchTree
,
138 IN BOOLEAN IgnoreBuffer
,
139 IN ULONG CompletionFilter
,
141 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL
,
142 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL
145 #if defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1300)
146 DbgPrint("%s()\n", __FUNCTION__
);
148 DbgPrint("FsRtlNotifyFullChangeDirectory()\n");
153 /**********************************************************************
155 * FsRtlNotifyFullReportChange@36
167 FsRtlNotifyFullReportChange (
168 IN PNOTIFY_SYNC NotifySync
,
169 IN PLIST_ENTRY NotifyList
,
170 IN PSTRING FullTargetName
,
171 IN USHORT TargetNameOffset
,
172 IN PSTRING StreamName OPTIONAL
,
173 IN PSTRING NormalizedParentName OPTIONAL
,
174 IN ULONG FilterMatch
,
176 IN PVOID TargetContext
182 /**********************************************************************
184 * FsRtlNotifyInitializeSync@4
196 FsRtlNotifyInitializeSync (
197 IN PNOTIFY_SYNC NotifySync
202 *NotifySync
= ExAllocatePoolWithTag (
204 sizeof (NOTIFY_SYNC
), // NumberOfBytes = 0x28
208 *NotifySync
->Unknown0
= 1;
209 *NotifySync
->Unknown2
= 0;
210 *NotifySync
->Unknown3
= 1;
211 *NotifySync
->Unknown4
= 4;
212 *NotifySync
->Unknown5
= 0;
213 *NotifySync
->Unknown9
= 0;
214 *NotifySync
->Unknown10
= 0;
219 /**********************************************************************
221 * FsRtlNotifyReportChange@20
233 FsRtlNotifyReportChange (
234 IN PNOTIFY_SYNC NotifySync
,
235 IN PLIST_ENTRY NotifyList
,
236 IN PSTRING FullTargetName
,
237 IN PUSHORT FileNamePartLength
,
241 FsRtlNotifyFullReportChange (
245 (FullTargetName
->Length
- *FileNamePartLength
), /*?*/
255 /**********************************************************************
257 * FsRtlNotifyUninitializeSync@4
260 * Uninitialize a NOTIFY_SYNC object.
263 * NotifySync is the address of a pointer
264 * to a PNOTIFY_SYNC object previously initialized by
265 * FsRtlNotifyInitializeSync().
274 FsRtlNotifyUninitializeSync (
275 IN OUT PNOTIFY_SYNC NotifySync
279 if (NULL
!= *NotifySync
)
281 ExFreePool (*NotifySync
);
287 /**********************************************************************
289 * FsRtlNotifyVolumeEvent@8
292 * NOTE: Only present in NT 5+.
302 FsRtlNotifyVolumeEvent (
303 IN PFILE_OBJECT FileObject
,
307 return STATUS_NOT_IMPLEMENTED
;
316 FsRtlRegisterFileSystemFilterCallbacks (
322 return STATUS_NOT_IMPLEMENTED
;