[ROSTESTS]
[reactos.git] / reactos / ntoskrnl / fsrtl / notify.c
1 /*
2 * PROJECT: ReactOS Kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: ntoskrnl/fsrtl/notify.c
5 * PURPOSE: Change Notifications and Sync for File System Drivers
6 * PROGRAMMERS: Pierre Schweitzer
7 */
8
9 /* INCLUDES ******************************************************************/
10
11 #include <ntoskrnl.h>
12 #define NDEBUG
13 #include <debug.h>
14
15 /* PUBLIC FUNCTIONS **********************************************************/
16
17 /*++
18 * @name FsRtlNotifyChangeDirectory
19 * @implemented
20 *
21 * Lets FSD know if changes occures in the specified directory.
22 * Directory will be reenumerated.
23 *
24 * @param NotifySync
25 * Synchronization object pointer
26 *
27 * @param FsContext
28 * Used to identify the notify structure
29 *
30 * @param FullDirectoryName
31 * String (A or W) containing the full directory name
32 *
33 * @param NotifyList
34 * Notify list pointer (to head)
35 *
36 * @param WatchTree
37 * True to notify changes in subdirectories too
38 *
39 * @param CompletionFilter
40 * Used to define types of changes to notify
41 *
42 * @param NotifyIrp
43 * IRP pointer to complete notify operation. It can be null
44 *
45 * @return None
46 *
47 * @remarks This function only redirects to FsRtlNotifyFullChangeDirectory.
48 * So, it's better to call the entire function.
49 *
50 *--*/
51 VOID
52 NTAPI
53 FsRtlNotifyChangeDirectory(IN PNOTIFY_SYNC NotifySync,
54 IN PVOID FsContext,
55 IN PSTRING FullDirectoryName,
56 IN PLIST_ENTRY NotifyList,
57 IN BOOLEAN WatchTree,
58 IN ULONG CompletionFilter,
59 IN PIRP NotifyIrp)
60 {
61 FsRtlNotifyFullChangeDirectory(NotifySync,
62 NotifyList,
63 FsContext,
64 FullDirectoryName,
65 WatchTree,
66 TRUE,
67 CompletionFilter,
68 NotifyIrp,
69 NULL,
70 NULL);
71 }
72
73 /*++
74 * @name FsRtlNotifyCleanup
75 * @unimplemented
76 *
77 * Called by FSD when all handles to FileObject (identified by FsContext) are closed
78 *
79 * @param NotifySync
80 * FILLME
81 *
82 * @param NotifyList
83 * FILLME
84 *
85 * @param FsContext
86 * FILLME
87 *
88 * @return None
89 *
90 * @remarks None
91 *
92 *--*/
93 VOID
94 NTAPI
95 FsRtlNotifyCleanup(IN PNOTIFY_SYNC NotifySync,
96 IN PLIST_ENTRY NotifyList,
97 IN PVOID FsContext)
98 {
99 KeBugCheck(FILE_SYSTEM);
100 }
101
102 /*++
103 * @name FsRtlNotifyFilterChangeDirectory
104 * @unimplemented
105 *
106 * FILLME
107 *
108 * @param NotifySync
109 * FILLME
110 *
111 * @param NotifyList
112 * FILLME
113 *
114 * @param FsContext
115 * FILLME
116 *
117 * @param FullDirectoryName
118 * FILLME
119 *
120 * @param WatchTree
121 * FILLME
122 *
123 * @param IgnoreBuffer
124 * FILLME
125 *
126 * @param CompletionFilter
127 * FILLME
128 *
129 * @param NotifyIrp
130 * FILLME
131 *
132 * @param TraverseCallback
133 * FILLME
134 *
135 * @param SubjectContext
136 * FILLME
137 *
138 * @param FilterCallback
139 * FILLME
140 *
141 * @return None
142 *
143 * @remarks None
144 *
145 *--*/
146 VOID
147 NTAPI
148 FsRtlNotifyFilterChangeDirectory(IN PNOTIFY_SYNC NotifySync,
149 IN PLIST_ENTRY NotifyList,
150 IN PVOID FsContext,
151 IN PSTRING FullDirectoryName,
152 IN BOOLEAN WatchTree,
153 IN BOOLEAN IgnoreBuffer,
154 IN ULONG CompletionFilter,
155 IN PIRP NotifyIrp,
156 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
157 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
158 IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL)
159 {
160 KeBugCheck(FILE_SYSTEM);
161 }
162
163 /*++
164 * @name FsRtlNotifyFilterReportChange
165 * @unimplemented
166 *
167 * FILLME
168 *
169 * @param NotifySync
170 * FILLME
171 *
172 * @param NotifyList
173 * FILLME
174 *
175 * @param FullTargetName
176 * FILLME
177 *
178 * @param TargetNameOffset
179 * FILLME
180 *
181 * @param StreamName
182 * FILLME
183 *
184 * @param NormalizedParentName
185 * FILLME
186 *
187 * @param FilterMatch
188 * FILLME
189 *
190 * @param Action
191 * FILLME
192 *
193 * @param TargetContext
194 * FILLME
195 *
196 * @param FilterContext
197 * FILLME
198 *
199 * @return None
200 *
201 * @remarks None
202 *
203 *--*/
204 VOID
205 NTAPI
206 FsRtlNotifyFilterReportChange(IN PNOTIFY_SYNC NotifySync,
207 IN PLIST_ENTRY NotifyList,
208 IN PSTRING FullTargetName,
209 IN USHORT TargetNameOffset,
210 IN PSTRING StreamName OPTIONAL,
211 IN PSTRING NormalizedParentName OPTIONAL,
212 IN ULONG FilterMatch,
213 IN ULONG Action,
214 IN PVOID TargetContext,
215 IN PVOID FilterContext)
216 {
217 KeBugCheck(FILE_SYSTEM);
218 }
219
220 /*++
221 * @name FsRtlNotifyFullChangeDirectory
222 * @unimplemented
223 *
224 * FILLME
225 *
226 * @param NotifySync
227 * FILLME
228 *
229 * @param NotifyList
230 * FILLME
231 *
232 * @param FsContext
233 * FILLME
234 *
235 * @param FullDirectoryName
236 * FILLME
237 *
238 * @param WatchTree
239 * FILLME
240 *
241 * @param IgnoreBuffer
242 * FILLME
243 *
244 * @param CompletionFilter
245 * FILLME
246 *
247 * @param Irp
248 * FILLME
249 *
250 * @param TraverseCallback
251 * FILLME
252 *
253 * @param SubjectContext
254 * FILLME
255 *
256 * @return None
257 *
258 * @remarks None
259 *
260 *--*/
261 VOID
262 NTAPI
263 FsRtlNotifyFullChangeDirectory(IN PNOTIFY_SYNC NotifySync,
264 IN PLIST_ENTRY NotifyList,
265 IN PVOID FsContext,
266 IN PSTRING FullDirectoryName,
267 IN BOOLEAN WatchTree,
268 IN BOOLEAN IgnoreBuffer,
269 IN ULONG CompletionFilter,
270 IN PIRP Irp,
271 IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
272 IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL)
273 {
274 KeBugCheck(FILE_SYSTEM);
275 }
276
277 /*++
278 * @name FsRtlNotifyFullReportChange
279 * @unimplemented
280 *
281 * FILLME
282 *
283 * @param NotifySync
284 * FILLME
285 *
286 * @param NotifyList
287 * FILLME
288 *
289 * @param FullTargetName
290 * FILLME
291 *
292 * @param TargetNameOffset
293 * FILLME
294 *
295 * @param StreamName
296 * FILLME
297 *
298 * @param NormalizedParentName
299 * FILLME
300 *
301 * @param FilterMatch
302 * FILLME
303 *
304 * @param Action
305 * FILLME
306 *
307 * @param TargetContext
308 * FILLME
309 *
310 * @return None
311 *
312 * @remarks None
313 *
314 *--*/
315 VOID
316 NTAPI
317 FsRtlNotifyFullReportChange(IN PNOTIFY_SYNC NotifySync,
318 IN PLIST_ENTRY NotifyList,
319 IN PSTRING FullTargetName,
320 IN USHORT TargetNameOffset,
321 IN PSTRING StreamName OPTIONAL,
322 IN PSTRING NormalizedParentName OPTIONAL,
323 IN ULONG FilterMatch,
324 IN ULONG Action,
325 IN PVOID TargetContext)
326 {
327 KeBugCheck(FILE_SYSTEM);
328 }
329
330 /*++
331 * @name FsRtlNotifyInitializeSync
332 * @unimplemented
333 *
334 * FILLME
335 *
336 * @param NotifySync
337 * FILLME
338 *
339 * @return None
340 *
341 * @remarks None
342 *
343 *--*/
344 VOID
345 NTAPI
346 FsRtlNotifyInitializeSync(IN PNOTIFY_SYNC *NotifySync)
347 {
348 KeBugCheck(FILE_SYSTEM);
349 }
350
351 /*++
352 * @name FsRtlNotifyReportChange
353 * @unimplemented
354 *
355 * FILLME
356 *
357 * @param NotifySync
358 * FILLME
359 *
360 * @param NotifyList
361 * FILLME
362 *
363 * @param FullTargetName
364 * FILLME
365 *
366 * @param FileNamePartLength
367 * FILLME
368 *
369 * @param FilterMatch
370 * FILLME
371 *
372 * @return None
373 *
374 * @remarks None
375 *
376 *--*/
377 VOID
378 NTAPI
379 FsRtlNotifyReportChange(IN PNOTIFY_SYNC NotifySync,
380 IN PLIST_ENTRY NotifyList,
381 IN PSTRING FullTargetName,
382 IN PUSHORT FileNamePartLength,
383 IN ULONG FilterMatch)
384 {
385 KeBugCheck(FILE_SYSTEM);
386 }
387
388 /*++
389 * @name FsRtlCurrentBatchOplock
390 * @implemented
391 *
392 * Uninitialize a NOTIFY_SYNC object
393 *
394 * @param NotifySync
395 * Address of a pointer to a PNOTIFY_SYNC object previously
396 * initialized by FsRtlNotifyInitializeSync()
397 *
398 * @return None
399 *
400 * @remarks None
401 *
402 *--*/
403 VOID
404 NTAPI
405 FsRtlNotifyUninitializeSync(IN PNOTIFY_SYNC *NotifySync)
406 {
407 KeBugCheck(FILE_SYSTEM);
408 }
409