Minor changes and some interfaces updated in FsRtl.
authorEmanuele Aliberti <ea@iol.it>
Sun, 13 Jan 2002 22:02:31 +0000 (22:02 +0000)
committerEmanuele Aliberti <ea@iol.it>
Sun, 13 Jan 2002 22:02:31 +0000 (22:02 +0000)
svn path=/trunk/; revision=2503

reactos/include/ddk/fsfuncs.h
reactos/include/ddk/fstypes.h
reactos/lib/ntdll/rtl/exception.c
reactos/ntoskrnl/fs/filelock.c
reactos/ntoskrnl/fs/notify.c
reactos/ntoskrnl/fs/tunnel.c
reactos/ntoskrnl/fs/util.c
reactos/ntoskrnl/ntoskrnl.def
reactos/ntoskrnl/ntoskrnl.edf

index 2c98173..28f4a6f 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef __INCLUDE_DDK_FSFUNCS_H
 #define __INCLUDE_DDK_FSFUNCS_H
-/* $Id: fsfuncs.h,v 1.11 2001/04/24 18:36:38 ea Exp $ */
+/* $Id: fsfuncs.h,v 1.12 2002/01/13 22:02:30 ea Exp $ */
 #define FlagOn(x,f) ((x) & (f))
 VOID
 STDCALL
@@ -24,15 +24,14 @@ FsRtlAddMcbEntry (
 VOID
 STDCALL
 FsRtlAddToTunnelCache (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4,
-       DWORD   Unknown5,
-       DWORD   Unknown6,
-       DWORD   Unknown7
-       );
+    IN PTUNNEL          Cache,
+    IN ULONGLONG        DirectoryKey,
+    IN PUNICODE_STRING  ShortName,
+    IN PUNICODE_STRING  LongName,
+    IN BOOLEAN          KeyByShortName,
+    IN ULONG            DataLength,
+    IN PVOID            Data
+    );
 PVOID
 STDCALL
 FsRtlAllocatePool (
@@ -80,14 +79,14 @@ FsRtlBalanceReads (
 BOOLEAN
 STDCALL
 FsRtlCheckLockForReadAccess (
-       DWORD   Unknown0,
-       DWORD   Unknown1
+       IN PFILE_LOCK   FileLock,
+       IN PIRP         Irp
        );
 BOOLEAN
 STDCALL
 FsRtlCheckLockForWriteAccess (
-       DWORD   Unknown0,
-       DWORD   Unknown1
+       IN PFILE_LOCK   FileLock,
+       IN PIRP         Irp
        );
 DWORD
 STDCALL
@@ -130,15 +129,14 @@ FsRtlCurrentBatchOplock (
 VOID
 STDCALL
 FsRtlDeleteKeyFromTunnelCache (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
-       );
+    IN PTUNNEL      Cache,
+    IN ULONGLONG    DirectoryKey
+    );
 VOID
 STDCALL
 FsRtlDeleteTunnelCache (
-       IN OUT  PVOID   lpTunnel
-       );
+    IN PTUNNEL Cache
+    );
 VOID
 STDCALL
 FsRtlDeregisterUncProvider (
@@ -173,75 +171,74 @@ FsRtlDoesNameContainWildCards (
 BOOLEAN
 STDCALL
 FsRtlFastCheckLockForRead (
-       IN      PFILE_LOCK_ANCHOR       FileLockAnchor,
+       IN      PFILE_LOCK              FileLock,
        IN      PLARGE_INTEGER          FileOffset,
        IN      PLARGE_INTEGER          Length,
        IN      ULONG                   Key,
        IN      PFILE_OBJECT            FileObject,
-       IN      PEPROCESS               ProcessId
+       IN      PEPROCESS               Process
        );
 BOOLEAN
 STDCALL
 FsRtlFastCheckLockForWrite (
-       IN      PFILE_LOCK_ANCHOR       FileLockAnchor,
+       IN      PFILE_LOCK              FileLock,
        IN      PLARGE_INTEGER          FileOffset,
        IN      PLARGE_INTEGER          Length,
        IN      ULONG                   Key,
        IN      PFILE_OBJECT            FileObject,
-       IN      PEPROCESS               ProcessId
+       IN      PEPROCESS               Process
        );
 NTSTATUS
 STDCALL
 FsRtlFastUnlockAll (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3
+       IN      PFILE_LOCK           FileLock,
+       IN      PFILE_OBJECT         FileObject,
+       IN      PEPROCESS            Process,
+       IN      PVOID                Context OPTIONAL
        );
 NTSTATUS
 STDCALL
 FsRtlFastUnlockAllByKey (
-       IN      DWORD   Unknown0,
-       IN      DWORD   Unknown1,
-       IN      DWORD   Unknown2,
-       IN      DWORD   Unknown3,
-       IN      DWORD   Key
+       IN      PFILE_LOCK      FileLock,
+       IN      PFILE_OBJECT    FileObject,
+       IN      PEPROCESS       Process,
+       IN      DWORD           Key,
+       IN      PVOID           Context OPTIONAL
        );
 NTSTATUS
 STDCALL
 FsRtlFastUnlockSingle (
-       IN      DWORD   Unknown0,
-       IN      DWORD   Unknown1,
-       IN      DWORD   Unknown2,
-       IN      DWORD   Unknown3,
-       IN      DWORD   Unknown4,
-       IN      DWORD   Unknown5,
-       IN      DWORD   Unknown6,
-       IN      DWORD   Unknown7
-       );
+    IN PFILE_LOCK           FileLock,
+    IN PFILE_OBJECT         FileObject,
+    IN PLARGE_INTEGER       FileOffset,
+    IN PLARGE_INTEGER       Length,
+    IN PEPROCESS            Process,
+    IN ULONG                Key,
+    IN PVOID                Context OPTIONAL,
+    IN BOOLEAN              AlreadySynchronized
+    );
 VOID
 STDCALL
 FsRtlFindInTunnelCache (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4,
-       DWORD   Unknown5,
-       DWORD   Unknown6,
-       DWORD   Unknown7
-       );
-DWORD
+    IN PTUNNEL          Cache,
+    IN ULONGLONG        DirectoryKey,
+    IN PUNICODE_STRING  Name,
+    OUT PUNICODE_STRING ShortName,
+    OUT PUNICODE_STRING LongName,
+    IN OUT PULONG       DataLength,
+    OUT PVOID           Data
+    );
+NTSTATUS
 STDCALL
 FsRtlGetFileSize (
-       DWORD   Unknown0,
-       DWORD   Unknown1
+       IN      PFILE_OBJECT    FileObject,
+       IN OUT  PLARGE_INTEGER  FileSize
        );
-NTSTATUS
+PFILE_LOCK_INFO
 STDCALL
 FsRtlGetNextFileLock (
-       IN      DWORD   Unknown0,
-       IN OUT  PVOID   Unknown1
+       IN      PFILE_LOCK      FileLock,
+       IN      BOOLEAN         Restart
        );
 VOID
 STDCALL
@@ -266,9 +263,9 @@ FsRtlGetNextMcbEntry (
 VOID
 STDCALL
 FsRtlInitializeFileLock (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
+       IN PFILE_LOCK                   FileLock,
+       IN PCOMPLETE_LOCK_IRP_ROUTINE   CompleteLockIrpRoutine OPTIONAL,
+       IN PUNLOCK_ROUTINE              UnlockRoutine OPTIONAL
        );
 VOID
 STDCALL
@@ -290,8 +287,8 @@ FsRtlInitializeOplock (
 VOID
 STDCALL
 FsRtlInitializeTunnelCache (
-       IN OUT  PVOID   lpTunnel
-       );
+    IN PTUNNEL Cache
+    );
 BOOLEAN
 STDCALL
 FsRtlIsDbcsInExpression (
@@ -426,13 +423,13 @@ FsRtlMdlWriteCompleteDev (
 VOID
 STDCALL
 FsRtlNotifyChangeDirectory (
-       IN      PNOTIFY_SYNC                    NotifySync,
-       IN      PLIST_ENTRY                     NotifyList,
-       IN      PVOID                           FsContext,
-       IN      PSTRING                         FullDirectoryName,
-       IN      BOOLEAN                         WatchTree,
-       IN      ULONG                           CompletionFilter,
-       IN      PIRP                            NotifyIrp
+       IN      PNOTIFY_SYNC    NotifySync,
+       IN      PVOID           FsContext,
+       IN      PSTRING         FullDirectoryName,
+       IN      PLIST_ENTRY     NotifyList,
+       IN      BOOLEAN         WatchTree,
+       IN      ULONG           CompletionFilter,
+       IN      PIRP            NotifyIrp
        );
 VOID
 STDCALL
@@ -477,7 +474,7 @@ FsRtlNotifyFullReportChange (
 VOID
 STDCALL
 FsRtlNotifyUninitializeSync (
-       IN OUT  PVOID   * Unknown0
+       IN OUT  PNOTIFY_SYNC    * NotifySync
        );
 VOID
 STDCALL
@@ -485,13 +482,19 @@ FsRtlNotifyReportChange (
        IN      PNOTIFY_SYNC    NotifySync,
        IN      PLIST_ENTRY     NotifyList,
        IN      PSTRING         FullTargetName,
-       IN      USHORT          TargetNameOffset,
+       IN      PUSHORT         FileNamePartLength,
        IN      ULONG           FilterMatch
        );
 VOID
 STDCALL
 FsRtlNotifyInitializeSync (
-       IN OUT  PVOID   * Unknown0
+       IN OUT  PNOTIFY_SYNC    * NotifySync
+       );
+NTSTATUS
+STDCALL
+FsRtlNotifyVolumeEvent (
+       IN      PFILE_OBJECT    FileObject,
+       IN      ULONG   EventCode
        );
 NTSTATUS
 STDCALL
@@ -559,26 +562,26 @@ FsRtlPostStackOverflow (
 BOOLEAN
 STDCALL
 FsRtlPrivateLock (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4,
-       DWORD   Unknown5,
-       DWORD   Unknown6,
-       DWORD   Unknown7,
-       DWORD   Unknown8,
-       DWORD   Unknown9,
-       DWORD   Unknown10,
-       DWORD   Unknown11
-       );
+    IN PFILE_LOCK           FileLock,
+    IN PFILE_OBJECT         FileObject,
+    IN PLARGE_INTEGER       FileOffset,
+    IN PLARGE_INTEGER       Length,
+    IN PEPROCESS            Process,
+    IN ULONG                Key,
+    IN BOOLEAN              FailImmediately, 
+    IN BOOLEAN              ExclusiveLock,
+    OUT PIO_STATUS_BLOCK    IoStatus, 
+    IN PIRP                 Irp OPTIONAL,
+    IN PVOID                Context,
+    IN BOOLEAN              AlreadySynchronized
+    );
 NTSTATUS
 STDCALL
 FsRtlProcessFileLock (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
-       );
+    IN PFILE_LOCK   FileLock,
+    IN PIRP         Irp,
+    IN PVOID        Context OPTIONAL
+    );
 DWORD
 STDCALL
 FsRtlRegisterUncProvider (
@@ -634,8 +637,8 @@ FsRtlTruncateMcb (
 VOID
 STDCALL
 FsRtlUninitializeFileLock (
-       IN OUT  PVOID   lpUnknown0
-       );
+    IN PFILE_LOCK FileLock
+    );
 VOID
 STDCALL
 FsRtlUninitializeLargeMcb (
index fcf5bfa..cfe5b79 100644 (file)
@@ -1,17 +1,82 @@
 #ifndef __INCLUDE_DDK_FSTYPES_H
 #define __INCLUDE_DDK_FSTYPES_H
-/* $Id: fstypes.h,v 1.3 2001/09/07 21:37:47 ea Exp $ */
+/* $Id: fstypes.h,v 1.4 2002/01/13 22:02:30 ea Exp $ */
 
+#define FSRTL_TAG      TAG('F','S','r','t')
 
-typedef
-struct _FILE_LOCK_ANCHOR
-{
-    LIST_ENTRY GrantedFileLockList;
-    LIST_ENTRY PendingFileLockList;
+typedef struct _FILE_LOCK_INFO {
+    LARGE_INTEGER   StartingByte;
+    LARGE_INTEGER   Length;
+    BOOLEAN         ExclusiveLock;
+    ULONG           Key;
+    PFILE_OBJECT    FileObject;
+    PEPROCESS       Process;
+    LARGE_INTEGER   EndingByte;
+} FILE_LOCK_INFO, *PFILE_LOCK_INFO;
+
+// raw internal file lock struct returned from FsRtlGetNextFileLock
+typedef struct _FILE_SHARED_LOCK_ENTRY {
+    PVOID           Unknown1;
+    PVOID           Unknown2;
+    FILE_LOCK_INFO  FileLock;
+} FILE_SHARED_LOCK_ENTRY, *PFILE_SHARED_LOCK_ENTRY;
+
+// raw internal file lock struct returned from FsRtlGetNextFileLock
+typedef struct _FILE_EXCLUSIVE_LOCK_ENTRY {
+    LIST_ENTRY      ListEntry;
+    PVOID           Unknown1;
+    PVOID           Unknown2;
+    FILE_LOCK_INFO  FileLock;
+} FILE_EXCLUSIVE_LOCK_ENTRY, *PFILE_EXCLUSIVE_LOCK_ENTRY;
+
+typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
+    IN PVOID    Context,
+    IN PIRP     Irp
+);
 
-} FILE_LOCK_ANCHOR, *PFILE_LOCK_ANCHOR;
+typedef VOID (*PUNLOCK_ROUTINE) (
+    IN PVOID            Context,
+    IN PFILE_LOCK_INFO  FileLockInfo
+);
 
-typedef PVOID PNOTIFY_SYNC;
+typedef struct _FILE_LOCK {
+    PCOMPLETE_LOCK_IRP_ROUTINE  CompleteLockIrpRoutine;
+    PUNLOCK_ROUTINE             UnlockRoutine;
+    BOOLEAN                     FastIoIsQuestionable;
+    BOOLEAN                     Pad[3];
+    PVOID                       LockInformation;
+    FILE_LOCK_INFO              LastReturnedLockInfo;
+    PVOID                       LastReturnedLock;
+} FILE_LOCK, *PFILE_LOCK;
+
+typedef struct _RTL_SPLAY_LINKS {
+    struct _RTL_SPLAY_LINKS *Parent;
+    struct _RTL_SPLAY_LINKS *LeftChild;
+    struct _RTL_SPLAY_LINKS *RightChild;
+} RTL_SPLAY_LINKS, *PRTL_SPLAY_LINKS;
+
+typedef struct _TUNNEL {
+    FAST_MUTEX          Mutex;
+    PRTL_SPLAY_LINKS    Cache;
+    LIST_ENTRY          TimerQueue;
+    USHORT              NumEntries;
+} TUNNEL, *PTUNNEL;
+
+typedef struct _NOTIFY_SYNC
+{
+       DWORD   Unknown0;       /* 0x00 */
+       DWORD   Unknown1;       /* 0x04 */
+       DWORD   Unknown2;       /* 0x08 */
+       WORD    Unknown3;       /* 0x0c */
+       WORD    Unknown4;       /* 0x0e */
+       DWORD   Unknown5;       /* 0x10 */
+       DWORD   Unknown6;       /* 0x14 */
+       DWORD   Unknown7;       /* 0x18 */
+       DWORD   Unknown8;       /* 0x1c */
+       DWORD   Unknown9;       /* 0x20 */
+       DWORD   Unknown10;      /* 0x24 */
+       
+} NOTIFY_SYNC, * PNOTIFY_SYNC;
 
 
 #endif /* __INCLUDE_DDK_FSFUNCS_H */
index 65ad667..f4f2832 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: exception.c,v 1.7 2001/09/24 00:51:16 chorns Exp $
+/* $Id: exception.c,v 1.8 2002/01/13 22:02:30 ea Exp $
  *
  * COPYRIGHT:         See COPYING in the top level directory
  * PROJECT:           ReactOS kernel
 VOID STDCALL
 RtlRaiseException(PEXCEPTION_RECORD ExceptionRecord)
 {
+#if 0
+       CONTEXT Context;
+
+       /* FIXME: fill in the CONTEXT */
+       NtRaiseException (
+               ExceptionRecord,
+               & Context,
+               TRUE
+               );
+       /* FIXME: ExceptionRecord */
+       RtlRaiseException (ExceptionRecord);
+#endif
 }
 
 ULONG
index b1be059..bbf5218 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: filelock.c,v 1.2 2001/04/24 18:36:39 ea Exp $
+/* $Id: filelock.c,v 1.3 2002/01/13 22:02:31 ea Exp $
  *
  * reactos/ntoskrnl/fs/filelock.c
  *
  *
  * RETURN VALUE
  *
+ * NOTE (Bo Branten)
+ *     All this really does is pick out the lock parameters from
+ *     the irp (io stack location?), get IoGetRequestorProcess,
+ *     and pass values on to FsRtlFastCheckLockForRead.
+ *
  */
 BOOLEAN
 STDCALL
 FsRtlCheckLockForReadAccess (
-       DWORD   Unknown0,
-       DWORD   Unknown1
-       )
+    IN PFILE_LOCK   FileLock,
+    IN PIRP         Irp
+    )
 {
        return FALSE;
 }
@@ -39,13 +44,17 @@ FsRtlCheckLockForReadAccess (
  *
  * RETURN VALUE
  *
+ * NOTE (Bo Branten)
+ *     All this really does is pick out the lock parameters from
+ *     the irp (io stack location?), get IoGetRequestorProcess,
+ *     and pass values on to FsRtlFastCheckLockForWrite.
  */
 BOOLEAN
 STDCALL
 FsRtlCheckLockForWriteAccess (
-       DWORD   Unknown0,
-       DWORD   Unknown1
-       )
+    IN PFILE_LOCK   FileLock,
+    IN PIRP         Irp
+    )
 {
        return FALSE;
 }
@@ -65,13 +74,13 @@ FsRtlCheckLockForWriteAccess (
 BOOLEAN
 STDCALL
 FsRtlFastCheckLockForRead (
-       IN      PFILE_LOCK_ANCHOR       FileLockAnchor,
-       IN      PLARGE_INTEGER          FileOffset,
-       IN      PLARGE_INTEGER          Length,
-       IN      ULONG                   Key,
-       IN      PFILE_OBJECT            FileObject,
-       IN      PEPROCESS               ProcessId
-       )
+    IN PFILE_LOCK           FileLock,
+    IN PLARGE_INTEGER       FileOffset,
+    IN PLARGE_INTEGER       Length,
+    IN ULONG                Key,
+    IN PFILE_OBJECT         FileObject,
+    IN PEPROCESS            Process
+    )
 {
        return FALSE;
 }
@@ -91,13 +100,13 @@ FsRtlFastCheckLockForRead (
 BOOLEAN
 STDCALL
 FsRtlFastCheckLockForWrite (
-       IN      PFILE_LOCK_ANCHOR       FileLockAnchor,
-       IN      PLARGE_INTEGER          FileOffset,
-       IN      PLARGE_INTEGER          Length,
-       IN      ULONG                   Key,
-       IN      PFILE_OBJECT            FileObject,
-       IN      PEPROCESS               ProcessId
-       )
+    IN PFILE_LOCK           FileLock,
+    IN PLARGE_INTEGER       FileOffset,
+    IN PLARGE_INTEGER       Length,
+    IN ULONG                Key,
+    IN PFILE_OBJECT         FileObject,
+    IN PEPROCESS            Process
+    )
 {
        return FALSE;
 }
@@ -118,14 +127,14 @@ FsRtlFastCheckLockForWrite (
 static
 NTSTATUS
 STDCALL
-_FsRtlFastUnlockAllByKey (
-       IN      DWORD   Unknown0,
-       IN      DWORD   Unknown1,
-       IN      DWORD   Unknown2,
-       IN      DWORD   Unknown3,
-       IN      BOOLEAN UseKey, /* FIXME: guess */
-       IN      DWORD   Key     /* FIXME: guess */
-       )
+FsRtlpFastUnlockAllByKey (
+    IN PFILE_LOCK           FileLock,
+    IN PFILE_OBJECT         FileObject,
+    IN PEPROCESS            Process,
+    IN DWORD                Key,      /* FIXME: guess */
+    IN BOOLEAN              UseKey,   /* FIXME: guess */
+    IN PVOID                Context OPTIONAL
+    )
 {
        /* FIXME: */
        return (STATUS_RANGE_NOT_LOCKED);
@@ -135,19 +144,19 @@ _FsRtlFastUnlockAllByKey (
 NTSTATUS
 STDCALL
 FsRtlFastUnlockAll (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3
-       )
+    IN PFILE_LOCK           FileLock,
+    IN PFILE_OBJECT         FileObject,
+    IN PEPROCESS            Process,
+    IN PVOID                Context OPTIONAL
+    )
 {
-       return _FsRtlFastUnlockAllByKey (
-                       Unknown0,
-                       Unknown1,
-                       Unknown2,
-                       Unknown3,
-                       FALSE, /* DO NOT USE KEY? */
-                       0
+       return FsRtlpFastUnlockAllByKey (
+                       FileLock,
+                       FileObject,
+                       Process,
+                       0,     /* Key */
+                       FALSE, /* Do NOT use Key */
+                       Context
                        );
 }
 
@@ -155,20 +164,20 @@ FsRtlFastUnlockAll (
 NTSTATUS
 STDCALL
 FsRtlFastUnlockAllByKey (
-       IN      DWORD   Unknown0,
-       IN      DWORD   Unknown1,
-       IN      DWORD   Unknown2,
-       IN      DWORD   Unknown3,
-       IN      DWORD   Key
-       )
+    IN PFILE_LOCK           FileLock,
+    IN PFILE_OBJECT         FileObject,
+    IN PEPROCESS            Process,
+    IN ULONG                Key,
+    IN PVOID                Context OPTIONAL
+    )
 {
-       return _FsRtlFastUnlockAllByKey (
-                       Unknown0,
-                       Unknown1,
-                       Unknown2,
-                       Unknown3,
-                       TRUE, /* USE KEY? */
-                       Key
+       return FsRtlpFastUnlockAllByKey (
+                       FileLock,
+                       FileObject,
+                       Process,
+                       Key,
+                       TRUE, /* Use Key */
+                       Context
                        );
 }
 
@@ -187,15 +196,15 @@ FsRtlFastUnlockAllByKey (
 NTSTATUS
 STDCALL
 FsRtlFastUnlockSingle (
-       IN      DWORD   Unknown0,
-       IN      DWORD   Unknown1,
-       IN      DWORD   Unknown2,
-       IN      DWORD   Unknown3,
-       IN      DWORD   Unknown4,
-       IN      DWORD   Unknown5,
-       IN      DWORD   Unknown6,
-       IN      DWORD   Unknown7
-       )
+    IN PFILE_LOCK           FileLock,
+    IN PFILE_OBJECT         FileObject,
+    IN PLARGE_INTEGER       FileOffset,
+    IN PLARGE_INTEGER       Length,
+    IN PEPROCESS            Process,
+    IN ULONG                Key,
+    IN PVOID                Context OPTIONAL,
+    IN BOOLEAN              AlreadySynchronized
+    )
 {
        return (STATUS_RANGE_NOT_LOCKED);
 }
@@ -210,16 +219,23 @@ FsRtlFastUnlockSingle (
  * ARGUMENTS
  *
  * RETURN VALUE
- *
+ *     NULL if no more locks.
+ *
+ * NOTE (Bo Branten)
+ *     Internals: FsRtlGetNextFileLock uses
+ *     FileLock->LastReturnedLockInfo and FileLock->LastReturnedLock
+ *     as storage. LastReturnedLock is a pointer to the 'raw' lock
+ *     inkl. double linked list, and FsRtlGetNextFileLock needs this
+ *     to get next lock on subsequent calls with Restart = FALSE.
  */
-NTSTATUS
+PFILE_LOCK_INFO
 STDCALL
 FsRtlGetNextFileLock (
-       IN      DWORD   Unknown0,
-       IN OUT  PVOID   Unknown1
-       )
+    IN PFILE_LOCK   FileLock,
+    IN BOOLEAN      Restart
+    )
 {
-       return (STATUS_NOT_IMPLEMENTED);
+       return (NULL);
 }
 
 
@@ -237,10 +253,10 @@ FsRtlGetNextFileLock (
 VOID
 STDCALL
 FsRtlInitializeFileLock (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
-       )
+    IN PFILE_LOCK                   FileLock,
+    IN PCOMPLETE_LOCK_IRP_ROUTINE   CompleteLockIrpRoutine OPTIONAL,
+    IN PUNLOCK_ROUTINE              UnlockRoutine OPTIONAL
+    )
 {
 }
 
@@ -254,24 +270,29 @@ FsRtlInitializeFileLock (
  * ARGUMENTS
  *
  * RETURN VALUE
+ *     IoStatus->Status: STATUS_PENDING, STATUS_LOCK_NOT_GRANTED
  *
+ * NOTE (Bo Branten)
+ *     -Calls IoCompleteRequest if Irp
+ *     -Uses exception handling / ExRaiseStatus with
+ *      STATUS_INSUFFICIENT_RESOURCES
  */
 BOOLEAN
 STDCALL
 FsRtlPrivateLock (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4,
-       DWORD   Unknown5,
-       DWORD   Unknown6,
-       DWORD   Unknown7,
-       DWORD   Unknown8,
-       DWORD   Unknown9,
-       DWORD   Unknown10,
-       DWORD   Unknown11
-       )
+    IN PFILE_LOCK           FileLock,
+    IN PFILE_OBJECT         FileObject,
+    IN PLARGE_INTEGER       FileOffset,
+    IN PLARGE_INTEGER       Length,
+    IN PEPROCESS            Process,
+    IN ULONG                Key,
+    IN BOOLEAN              FailImmediately, 
+    IN BOOLEAN              ExclusiveLock,
+    OUT PIO_STATUS_BLOCK    IoStatus, 
+    IN PIRP                 Irp OPTIONAL,
+    IN PVOID                Context,
+    IN BOOLEAN              AlreadySynchronized
+    )
 {
        return FALSE;
 }
@@ -286,15 +307,30 @@ FsRtlPrivateLock (
  * ARGUMENTS
  *
  * RETURN VALUE
- *
+ *     -STATUS_INVALID_DEVICE_REQUEST
+ *     -STATUS_RANGE_NOT_LOCKED from unlock routines.
+ *     -STATUS_PENDING, STATUS_LOCK_NOT_GRANTED from FsRtlPrivateLock
+ *      (redirected IoStatus->Status).
+ *
+ * NOTE (Bo Branten)
+ *     -switch ( Irp->CurrentStackLocation->MinorFunction )
+ *      lock: return FsRtlPrivateLock;
+ *      unlocksingle: return FsRtlFastUnlockSingle;
+ *      unlockall: return FsRtlFastUnlockAll;
+ *      unlockallbykey: return FsRtlFastUnlockAllByKey;
+ *      default: IofCompleteRequest with STATUS_INVALID_DEVICE_REQUEST;
+ *       return STATUS_INVALID_DEVICE_REQUEST;
+ *
+ *     -'AllwaysZero' is passed thru as 'AllwaysZero' to lock / unlock routines.
+ *     -'Irp' is passet thru as 'Irp' to FsRtlPrivateLock.
  */
 NTSTATUS
 STDCALL
 FsRtlProcessFileLock (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
-       )
+    IN PFILE_LOCK   FileLock,
+    IN PIRP         Irp,
+    IN PVOID        Context OPTIONAL
+    )
 {
        return (STATUS_NOT_IMPLEMENTED);
 }
@@ -314,10 +350,32 @@ FsRtlProcessFileLock (
 VOID
 STDCALL
 FsRtlUninitializeFileLock (
-       IN OUT  PVOID   lpUnknown0
-       )
+    IN PFILE_LOCK FileLock
+    )
 {
 }
 
 
+/**********************************************************************
+ * NAME                                                        EXPORTED
+ *     FsRtlAllocateFileLock@8
+ *
+ * DESCRIPTION
+ *     Only present in NT 5.0 or later.
+ *     
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ */
+PFILE_LOCK
+STDCALL
+FsRtlAllocateFileLock (
+    IN PCOMPLETE_LOCK_IRP_ROUTINE   CompleteLockIrpRoutine OPTIONAL,
+    IN PUNLOCK_ROUTINE              UnlockRoutine OPTIONAL
+    )
+{
+       return NULL;
+}
+
 /* EOF */
index 6bc75ed..aaa004f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: notify.c,v 1.2 2001/04/24 18:36:39 ea Exp $
+/* $Id: notify.c,v 1.3 2002/01/13 22:02:31 ea Exp $
  *
  * reactos/ntoskrnl/fs/notify.c
  *
 VOID
 STDCALL
 FsRtlNotifyChangeDirectory (
-       IN      PNOTIFY_SYNC                    NotifySync,
-       IN      PLIST_ENTRY                     NotifyList,
-       IN      PVOID                           FsContext,
-       IN      PSTRING                         FullDirectoryName,
-       IN      BOOLEAN                         WatchTree,
-       IN      ULONG                           CompletionFilter,
-       IN      PIRP                            NotifyIrp
+       IN      PNOTIFY_SYNC NotifySync,
+       IN      PVOID        FsContext,
+       IN      PSTRING      FullDirectoryName,
+       IN      PLIST_ENTRY  NotifyList,
+       IN      BOOLEAN      WatchTree,
+       IN      ULONG        CompletionFilter,
+       IN      PIRP         NotifyIrp
        )
 {
        FsRtlNotifyFullChangeDirectory (
@@ -93,6 +93,7 @@ FsRtlNotifyFullChangeDirectory (
        IN      PSECURITY_SUBJECT_CONTEXT       SubjectContext          OPTIONAL
        )
 {
+       DbgPrint("%s()\n", __FUNCTION__);
 }
 
 
@@ -138,9 +139,24 @@ FsRtlNotifyFullReportChange (
 VOID
 STDCALL
 FsRtlNotifyInitializeSync (
-       IN OUT  PVOID   * Unknown0
+       IN      PNOTIFY_SYNC    * NotifySync
        )
 {
+       *NotifySync = NULL;
+       *NotifySync = ExAllocatePoolWithTag (
+                       0x10,                   // PoolType???
+                       sizeof (NOTIFY_SYNC),   // NumberOfBytes = 0x28
+                       FSRTL_TAG
+                       );
+#if 0
+       *NotifySync->Unknown0 = 1;
+       *NotifySync->Unknown2 = 0;
+       *NotifySync->Unknown3 = 1;
+       *NotifySync->Unknown4 = 4;
+       *NotifySync->Unknown5 = 0;
+       *NotifySync->Unknown9 = 0;
+       *NotifySync->Unknown10 = 0;
+#endif
 }
 
 
@@ -161,7 +177,7 @@ FsRtlNotifyReportChange (
        IN      PNOTIFY_SYNC    NotifySync,
        IN      PLIST_ENTRY     NotifyList,
        IN      PSTRING         FullTargetName,
-       IN      USHORT          TargetNameOffset,
+       IN      PUSHORT         FileNamePartLength,
        IN      ULONG           FilterMatch
        )
 {
@@ -169,7 +185,7 @@ FsRtlNotifyReportChange (
                NotifySync,
                NotifyList,
                FullTargetName,
-               (FullTargetName->Length - TargetNameOffset), /*?*/
+               (FullTargetName->Length - *FileNamePartLength), /*?*/
                NULL,
                NULL,
                FilterMatch,
@@ -184,19 +200,49 @@ FsRtlNotifyReportChange (
  *     FsRtlNotifyUninitializeSync@4
  *
  * DESCRIPTION
- *     
+ *     Uninitialize a NOTIFY_SYNC object.
+ *
  * ARGUMENTS
+ *     NotifySync is the address of a pointer
+ *      to a PNOTIFY_SYNC object previously initialized by
+ *      FsRtlNotifyInitializeSync().
  *
  * RETURN VALUE
- *
+ *     None.
  */
 VOID
 STDCALL
 FsRtlNotifyUninitializeSync (
-       IN OUT  PVOID   * Unknown0
+       IN OUT  PNOTIFY_SYNC    * NotifySync
        )
 {
+       if (NULL != *NotifySync) 
+       {
+               ExFreePool (*NotifySync);
+               *NotifySync = NULL;
+       }
 }
 
+/**********************************************************************
+ * NAME                                                        EXPORTED
+ *     FsRtlNotifyVolumeEvent@8
+ *
+ * DESCRIPTION
+ *     NOTE: Only present in NT 5+.
+ *
+ * ARGUMENTS
+ *
+ * RETURN VALUE
+ *
+ */
+NTSTATUS
+STDCALL
+FsRtlNotifyVolumeEvent (
+       IN      PFILE_OBJECT    FileObject,
+       IN      ULONG           EventCode
+       )
+{
+       return STATUS_NOT_IMPLEMENTED;
+}
 
 /* EOF */
index 8eaae5b..9682537 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: tunnel.c,v 1.1 2000/03/11 00:51:36 ea Exp $
+/* $Id: tunnel.c,v 1.2 2002/01/13 22:02:31 ea Exp $
  *
  * reactos/ntoskrnl/fs/tunnel.c
  *
 VOID
 STDCALL
 FsRtlAddToTunnelCache (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4,
-       DWORD   Unknown5,
-       DWORD   Unknown6,
-       DWORD   Unknown7
-       )
+    IN PTUNNEL          Cache,
+    IN ULONGLONG        DirectoryKey,
+    IN PUNICODE_STRING  ShortName,
+    IN PUNICODE_STRING  LongName,
+    IN BOOLEAN          KeyByShortName,
+    IN ULONG            DataLength,
+    IN PVOID            Data
+    )
 {
 }
 
@@ -48,10 +47,9 @@ FsRtlAddToTunnelCache (
 VOID
 STDCALL
 FsRtlDeleteKeyFromTunnelCache (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2
-       )
+    IN PTUNNEL      Cache,
+    IN ULONGLONG    DirectoryKey
+    )
 {
 }
 
@@ -70,8 +68,8 @@ FsRtlDeleteKeyFromTunnelCache (
 VOID
 STDCALL
 FsRtlDeleteTunnelCache (
-       IN OUT  PVOID   lpTunnel
-       )
+    IN PTUNNEL Cache
+    )
 {
 }
 
@@ -90,15 +88,14 @@ FsRtlDeleteTunnelCache (
 VOID
 STDCALL
 FsRtlFindInTunnelCache (
-       DWORD   Unknown0,
-       DWORD   Unknown1,
-       DWORD   Unknown2,
-       DWORD   Unknown3,
-       DWORD   Unknown4,
-       DWORD   Unknown5,
-       DWORD   Unknown6,
-       DWORD   Unknown7
-       )
+    IN PTUNNEL          Cache,
+    IN ULONGLONG        DirectoryKey,
+    IN PUNICODE_STRING  Name,
+    OUT PUNICODE_STRING ShortName,
+    OUT PUNICODE_STRING LongName,
+    IN OUT PULONG       DataLength,
+    OUT PVOID           Data
+    )
 {
 }
 
@@ -117,8 +114,8 @@ FsRtlFindInTunnelCache (
 VOID
 STDCALL
 FsRtlInitializeTunnelCache (
-       IN OUT  PVOID   lpTunnel
-       )
+    IN PTUNNEL Cache
+    )
 {
 }
 
index 0d56215..c0d1c3e 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: util.c,v 1.7 2001/04/24 18:36:39 ea Exp $
+/* $Id: util.c,v 1.8 2002/01/13 22:02:31 ea Exp $
  *
  * reactos/ntoskrnl/fs/util.c
  *
@@ -229,14 +229,14 @@ FsRtlCopyWrite (
  * RETURN VALUE
  * 
  */
-DWORD
+NTSTATUS
 STDCALL
 FsRtlGetFileSize (
-       DWORD   Unknown0,
-       DWORD   Unknown1
-       )
+    IN PFILE_OBJECT         FileObject,
+    IN OUT PLARGE_INTEGER   FileSize
+    )
 {
-       return 0;
+       return STATUS_NOT_IMPLEMENTED;
 }
 
 
index b189374..111ee44 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: ntoskrnl.def,v 1.123 2002/01/04 13:09:37 ekohl Exp $
+; $Id: ntoskrnl.def,v 1.124 2002/01/13 22:02:30 ea Exp $
 ;
 ; reactos/ntoskrnl/ntoskrnl.def
 ;
@@ -108,6 +108,7 @@ Exi386InterlockedIncrementLong@4
 FsRtlAddLargeMcbEntry@28
 FsRtlAddMcbEntry@16
 FsRtlAddToTunnelCache@32
+FsRtlAllocateFileLock@8
 FsRtlAllocatePool@8
 FsRtlAllocatePoolWithQuota@8
 FsRtlAllocatePoolWithQuotaTag@12
@@ -168,6 +169,7 @@ FsRtlNotifyFullReportChange@36
 FsRtlNotifyInitializeSync@4
 FsRtlNotifyReportChange@20
 FsRtlNotifyUninitializeSync@4
+FsRtlNotifyVolumeEvent@8
 FsRtlNumberOfRunsInLargeMcb@4
 FsRtlNumberOfRunsInMcb@4
 FsRtlOplockFsctrl@12
index 7f6312f..f7bea46 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: ntoskrnl.edf,v 1.109 2002/01/04 13:09:37 ekohl Exp $
+; $Id: ntoskrnl.edf,v 1.110 2002/01/13 22:02:30 ea Exp $
 ;
 ; reactos/ntoskrnl/ntoskrnl.def
 ;
@@ -108,6 +108,7 @@ Exi386InterlockedIncrementLong=Exi386InterlockedIncrementLong@4
 FsRtlAddLargeMcbEntry=FsRtlAddLargeMcbEntry@28
 FsRtlAddMcbEntry=FsRtlAddMcbEntry@16
 FsRtlAddToTunnelCache=FsRtlAddToTunnelCache@32
+FsRtlAllocateFileLock=FsRtlAllocateFileLock@8
 FsRtlAllocatePool=FsRtlAllocatePool@8
 FsRtlAllocatePoolWithQuota=FsRtlAllocatePoolWithQuota@8
 FsRtlAllocatePoolWithQuotaTag=FsRtlAllocatePoolWithQuotaTag@12
@@ -168,6 +169,7 @@ FsRtlNotifyFullReportChange=FsRtlNotifyFullReportChange@36
 FsRtlNotifyInitializeSync=FsRtlNotifyInitializeSync@4
 FsRtlNotifyReportChange=FsRtlNotifyReportChange@20
 FsRtlNotifyUninitializeSync=FsRtlNotifyUninitializeSync@4
+FsRtlNotifyVolumeEvent=FsRtlNotifyVolumeEvent@8
 FsRtlNumberOfRunsInLargeMcb=FsRtlNumberOfRunsInLargeMcb@4
 FsRtlNumberOfRunsInMcb=FsRtlNumberOfRunsInMcb@4
 FsRtlOplockFsctrl=FsRtlOplockFsctrl@12