mirror of
https://github.com/reactos/reactos.git
synced 2024-11-04 13:52:30 +00:00
9ea495ba33
svn path=/branches/header-work/; revision=45691
409 lines
8.6 KiB
C
409 lines
8.6 KiB
C
/*
|
|
* PROJECT: ReactOS Kernel
|
|
* LICENSE: GPL - See COPYING in the top level directory
|
|
* FILE: ntoskrnl/fsrtl/notify.c
|
|
* PURPOSE: Change Notifications and Sync for File System Drivers
|
|
* PROGRAMMERS: Pierre Schweitzer
|
|
*/
|
|
|
|
/* INCLUDES ******************************************************************/
|
|
|
|
#include <ntoskrnl.h>
|
|
#define NDEBUG
|
|
#include <debug.h>
|
|
|
|
/* PUBLIC FUNCTIONS **********************************************************/
|
|
|
|
/*++
|
|
* @name FsRtlNotifyChangeDirectory
|
|
* @implemented
|
|
*
|
|
* Lets FSD know if changes occures in the specified directory.
|
|
* Directory will be reenumerated.
|
|
*
|
|
* @param NotifySync
|
|
* Synchronization object pointer
|
|
*
|
|
* @param FsContext
|
|
* Used to identify the notify structure
|
|
*
|
|
* @param FullDirectoryName
|
|
* String (A or W) containing the full directory name
|
|
*
|
|
* @param NotifyList
|
|
* Notify list pointer (to head)
|
|
*
|
|
* @param WatchTree
|
|
* True to notify changes in subdirectories too
|
|
*
|
|
* @param CompletionFilter
|
|
* Used to define types of changes to notify
|
|
*
|
|
* @param NotifyIrp
|
|
* IRP pointer to complete notify operation. It can be null
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks This function only redirects to FsRtlNotifyFullChangeDirectory.
|
|
* So, it's better to call the entire function.
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyChangeDirectory(IN PNOTIFY_SYNC NotifySync,
|
|
IN PVOID FsContext,
|
|
IN PSTRING FullDirectoryName,
|
|
IN PLIST_ENTRY NotifyList,
|
|
IN BOOLEAN WatchTree,
|
|
IN ULONG CompletionFilter,
|
|
IN PIRP NotifyIrp)
|
|
{
|
|
FsRtlNotifyFullChangeDirectory(NotifySync,
|
|
NotifyList,
|
|
FsContext,
|
|
FullDirectoryName,
|
|
WatchTree,
|
|
TRUE,
|
|
CompletionFilter,
|
|
NotifyIrp,
|
|
NULL,
|
|
NULL);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlNotifyCleanup
|
|
* @unimplemented
|
|
*
|
|
* Called by FSD when all handles to FileObject (identified by FsContext) are closed
|
|
*
|
|
* @param NotifySync
|
|
* FILLME
|
|
*
|
|
* @param NotifyList
|
|
* FILLME
|
|
*
|
|
* @param FsContext
|
|
* FILLME
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyCleanup(IN PNOTIFY_SYNC NotifySync,
|
|
IN PLIST_ENTRY NotifyList,
|
|
IN PVOID FsContext)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlNotifyFilterChangeDirectory
|
|
* @unimplemented
|
|
*
|
|
* FILLME
|
|
*
|
|
* @param NotifySync
|
|
* FILLME
|
|
*
|
|
* @param NotifyList
|
|
* FILLME
|
|
*
|
|
* @param FsContext
|
|
* FILLME
|
|
*
|
|
* @param FullDirectoryName
|
|
* FILLME
|
|
*
|
|
* @param WatchTree
|
|
* FILLME
|
|
*
|
|
* @param IgnoreBuffer
|
|
* FILLME
|
|
*
|
|
* @param CompletionFilter
|
|
* FILLME
|
|
*
|
|
* @param NotifyIrp
|
|
* FILLME
|
|
*
|
|
* @param TraverseCallback
|
|
* FILLME
|
|
*
|
|
* @param SubjectContext
|
|
* FILLME
|
|
*
|
|
* @param FilterCallback
|
|
* FILLME
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyFilterChangeDirectory(IN PNOTIFY_SYNC NotifySync,
|
|
IN PLIST_ENTRY NotifyList,
|
|
IN PVOID FsContext,
|
|
IN PSTRING FullDirectoryName,
|
|
IN BOOLEAN WatchTree,
|
|
IN BOOLEAN IgnoreBuffer,
|
|
IN ULONG CompletionFilter,
|
|
IN PIRP NotifyIrp,
|
|
IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
|
|
IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL,
|
|
IN PFILTER_REPORT_CHANGE FilterCallback OPTIONAL)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlNotifyFilterReportChange
|
|
* @unimplemented
|
|
*
|
|
* FILLME
|
|
*
|
|
* @param NotifySync
|
|
* FILLME
|
|
*
|
|
* @param NotifyList
|
|
* FILLME
|
|
*
|
|
* @param FullTargetName
|
|
* FILLME
|
|
*
|
|
* @param TargetNameOffset
|
|
* FILLME
|
|
*
|
|
* @param StreamName
|
|
* FILLME
|
|
*
|
|
* @param NormalizedParentName
|
|
* FILLME
|
|
*
|
|
* @param FilterMatch
|
|
* FILLME
|
|
*
|
|
* @param Action
|
|
* FILLME
|
|
*
|
|
* @param TargetContext
|
|
* FILLME
|
|
*
|
|
* @param FilterContext
|
|
* FILLME
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyFilterReportChange(IN PNOTIFY_SYNC NotifySync,
|
|
IN PLIST_ENTRY NotifyList,
|
|
IN PSTRING FullTargetName,
|
|
IN USHORT TargetNameOffset,
|
|
IN PSTRING StreamName OPTIONAL,
|
|
IN PSTRING NormalizedParentName OPTIONAL,
|
|
IN ULONG FilterMatch,
|
|
IN ULONG Action,
|
|
IN PVOID TargetContext,
|
|
IN PVOID FilterContext)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlNotifyFullChangeDirectory
|
|
* @unimplemented
|
|
*
|
|
* FILLME
|
|
*
|
|
* @param NotifySync
|
|
* FILLME
|
|
*
|
|
* @param NotifyList
|
|
* FILLME
|
|
*
|
|
* @param FsContext
|
|
* FILLME
|
|
*
|
|
* @param FullDirectoryName
|
|
* FILLME
|
|
*
|
|
* @param WatchTree
|
|
* FILLME
|
|
*
|
|
* @param IgnoreBuffer
|
|
* FILLME
|
|
*
|
|
* @param CompletionFilter
|
|
* FILLME
|
|
*
|
|
* @param Irp
|
|
* FILLME
|
|
*
|
|
* @param TraverseCallback
|
|
* FILLME
|
|
*
|
|
* @param SubjectContext
|
|
* FILLME
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyFullChangeDirectory(IN PNOTIFY_SYNC NotifySync,
|
|
IN PLIST_ENTRY NotifyList,
|
|
IN PVOID FsContext,
|
|
IN PSTRING FullDirectoryName,
|
|
IN BOOLEAN WatchTree,
|
|
IN BOOLEAN IgnoreBuffer,
|
|
IN ULONG CompletionFilter,
|
|
IN PIRP Irp,
|
|
IN PCHECK_FOR_TRAVERSE_ACCESS TraverseCallback OPTIONAL,
|
|
IN PSECURITY_SUBJECT_CONTEXT SubjectContext OPTIONAL)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlNotifyFullReportChange
|
|
* @unimplemented
|
|
*
|
|
* FILLME
|
|
*
|
|
* @param NotifySync
|
|
* FILLME
|
|
*
|
|
* @param NotifyList
|
|
* FILLME
|
|
*
|
|
* @param FullTargetName
|
|
* FILLME
|
|
*
|
|
* @param TargetNameOffset
|
|
* FILLME
|
|
*
|
|
* @param StreamName
|
|
* FILLME
|
|
*
|
|
* @param NormalizedParentName
|
|
* FILLME
|
|
*
|
|
* @param FilterMatch
|
|
* FILLME
|
|
*
|
|
* @param Action
|
|
* FILLME
|
|
*
|
|
* @param TargetContext
|
|
* FILLME
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyFullReportChange(IN PNOTIFY_SYNC NotifySync,
|
|
IN PLIST_ENTRY NotifyList,
|
|
IN PSTRING FullTargetName,
|
|
IN USHORT TargetNameOffset,
|
|
IN PSTRING StreamName OPTIONAL,
|
|
IN PSTRING NormalizedParentName OPTIONAL,
|
|
IN ULONG FilterMatch,
|
|
IN ULONG Action,
|
|
IN PVOID TargetContext)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlNotifyInitializeSync
|
|
* @unimplemented
|
|
*
|
|
* FILLME
|
|
*
|
|
* @param NotifySync
|
|
* FILLME
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyInitializeSync(IN PNOTIFY_SYNC *NotifySync)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlNotifyReportChange
|
|
* @unimplemented
|
|
*
|
|
* FILLME
|
|
*
|
|
* @param NotifySync
|
|
* FILLME
|
|
*
|
|
* @param NotifyList
|
|
* FILLME
|
|
*
|
|
* @param FullTargetName
|
|
* FILLME
|
|
*
|
|
* @param FileNamePartLength
|
|
* FILLME
|
|
*
|
|
* @param FilterMatch
|
|
* FILLME
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyReportChange(IN PNOTIFY_SYNC NotifySync,
|
|
IN PLIST_ENTRY NotifyList,
|
|
IN PSTRING FullTargetName,
|
|
IN PUSHORT FileNamePartLength,
|
|
IN ULONG FilterMatch)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|
|
/*++
|
|
* @name FsRtlCurrentBatchOplock
|
|
* @implemented
|
|
*
|
|
* Uninitialize a NOTIFY_SYNC object
|
|
*
|
|
* @param NotifySync
|
|
* Address of a pointer to a PNOTIFY_SYNC object previously
|
|
* initialized by FsRtlNotifyInitializeSync()
|
|
*
|
|
* @return None
|
|
*
|
|
* @remarks None
|
|
*
|
|
*--*/
|
|
VOID
|
|
NTAPI
|
|
FsRtlNotifyUninitializeSync(IN PNOTIFY_SYNC *NotifySync)
|
|
{
|
|
KeBugCheck(FILE_SYSTEM);
|
|
}
|
|
|