From 4b80eae2204d6c778e78e7d7c9d5c389f7d038cd Mon Sep 17 00:00:00 2001 From: Emanuele Aliberti Date: Sat, 26 Feb 2000 16:22:27 +0000 Subject: [PATCH] File locking NTOSKRNL.FsRtl stubs. svn path=/trunk/; revision=1012 --- reactos/include/ddk/fsfuncs.h | 104 ++++++++++- reactos/ntoskrnl/fs/filelock.c | 323 +++++++++++++++++++++++++++++++++ reactos/ntoskrnl/ke/main.c | 6 +- reactos/ntoskrnl/makefile_rex | 5 +- reactos/ntoskrnl/ntoskrnl.def | 16 +- reactos/ntoskrnl/ntoskrnl.edf | 16 +- 6 files changed, 462 insertions(+), 8 deletions(-) create mode 100644 reactos/ntoskrnl/fs/filelock.c diff --git a/reactos/include/ddk/fsfuncs.h b/reactos/include/ddk/fsfuncs.h index 1600e35e82b..5cb4ffd7f54 100644 --- a/reactos/include/ddk/fsfuncs.h +++ b/reactos/include/ddk/fsfuncs.h @@ -1,6 +1,6 @@ #ifndef __INCLUDE_DDK_FSFUNCS_H #define __INCLUDE_DDK_FSFUNCS_H -/* $Id: fsfuncs.h,v 1.5 2000/02/25 23:27:50 ea Exp $ */ +/* $Id: fsfuncs.h,v 1.6 2000/02/26 16:21:34 ea Exp $ */ VOID STDCALL FsRtlAddLargeMcbEntry ( @@ -40,6 +40,18 @@ FsRtlBalanceReads ( ); BOOLEAN STDCALL +FsRtlCheckLockForReadAccess ( + DWORD Unknown0, + DWORD Unknown1 + ); +BOOLEAN +STDCALL +FsRtlCheckLockForWriteAccess ( + DWORD Unknown0, + DWORD Unknown1 + ); +BOOLEAN +STDCALL FsRtlCopyRead ( IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, @@ -93,12 +105,67 @@ STDCALL FsRtlDoesNameContainWildCards ( IN PUNICODE_STRING Name ); +BOOLEAN +STDCALL +FsRtlFastCheckLockForRead ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ); +BOOLEAN +STDCALL +FsRtlFastCheckLockForWrite ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ); +NTSTATUS +STDCALL +FsRtlFastUnlockAll ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3 + ); +NTSTATUS +STDCALL +FsRtlFastUnlockAllByKey ( + IN DWORD Unknown0, + IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Key + ); +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 + ); DWORD STDCALL FsRtlGetFileSize ( DWORD Unknown0, DWORD Unknown1 ); +NTSTATUS +STDCALL +FsRtlGetNextFileLock ( + IN DWORD Unknown0, + IN OUT PVOID Unknown1 + ); VOID STDCALL FsRtlGetNextLargeMcbEntry ( @@ -121,6 +188,13 @@ FsRtlGetNextMcbEntry ( #define FsRtlExitFileSystem KeLeaveCriticalRegion VOID STDCALL +FsRtlInitializeFileLock ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ); +VOID +STDCALL FsRtlInitializeLargeMcb ( DWORD Unknown0, DWORD Unknown1 @@ -243,6 +317,29 @@ FsRtlPostStackOverflow ( DWORD Unknown1, DWORD Unknown2 ); +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 + ); +NTSTATUS +STDCALL +FsRtlProcessFileLock ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ); DWORD STDCALL FsRtlRegisterUncProvider ( @@ -297,6 +394,11 @@ FsRtlTruncateMcb ( ); VOID STDCALL +FsRtlUninitializeFileLock ( + IN OUT PVOID lpUnknown0 + ); +VOID +STDCALL FsRtlUninitializeLargeMcb ( DWORD Unknown0 ); diff --git a/reactos/ntoskrnl/fs/filelock.c b/reactos/ntoskrnl/fs/filelock.c new file mode 100644 index 00000000000..465c7571c01 --- /dev/null +++ b/reactos/ntoskrnl/fs/filelock.c @@ -0,0 +1,323 @@ +/* $Id: filelock.c,v 1.1 2000/02/26 16:22:27 ea Exp $ + * + * reactos/ntoskrnl/fs/filelock.c + * + */ +#include +#include + + +/********************************************************************** + * NAME EXPORTED + * FsRtlCheckLockForReadAccess@8 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlCheckLockForReadAccess ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + return FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlCheckLockForWriteAccess@8 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlCheckLockForWriteAccess ( + DWORD Unknown0, + DWORD Unknown1 + ) +{ + return FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlFastCheckLockForRead@24 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlFastCheckLockForRead ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ) +{ + return FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlFastCheckLockForWrite@24 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +BOOLEAN +STDCALL +FsRtlFastCheckLockForWrite ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3, + DWORD Unknown4, + DWORD Unknown5 + ) +{ + return FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlFastUnlockAll@16 + * FsRtlFastUnlockAllByKey@20 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +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 */ + ) +{ + /* FIXME: */ + return (STATUS_RANGE_NOT_LOCKED); +} + + +NTSTATUS +STDCALL +FsRtlFastUnlockAll ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2, + DWORD Unknown3 + ) +{ + return _FsRtlFastUnlockAllByKey ( + Unknown0, + Unknown1, + Unknown2, + Unknown3, + FALSE, /* DO NOT USE KEY? */ + 0 + ); +} + + +NTSTATUS +STDCALL +FsRtlFastUnlockAllByKey ( + IN DWORD Unknown0, + IN DWORD Unknown1, + IN DWORD Unknown2, + IN DWORD Unknown3, + IN DWORD Key + ) +{ + return _FsRtlFastUnlockAllByKey ( + Unknown0, + Unknown1, + Unknown2, + Unknown3, + TRUE, /* USE KEY? */ + Key + ); +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlFastUnlockSingle@32 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +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 + ) +{ + return (STATUS_RANGE_NOT_LOCKED); +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlGetNextFileLock@8 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +NTSTATUS +STDCALL +FsRtlGetNextFileLock ( + IN DWORD Unknown0, + IN OUT PVOID Unknown1 + ) +{ + return (STATUS_NOT_IMPLEMENTED); +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlInitializeFileLock@12 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +VOID +STDCALL +FsRtlInitializeFileLock ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ) +{ +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlPrivateLock@48 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +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 + ) +{ + return FALSE; +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlProcessFileLock@12 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +NTSTATUS +STDCALL +FsRtlProcessFileLock ( + DWORD Unknown0, + DWORD Unknown1, + DWORD Unknown2 + ) +{ + return (STATUS_NOT_IMPLEMENTED); +} + + +/********************************************************************** + * NAME EXPORTED + * FsRtlUninitializeFileLock@4 + * + * DESCRIPTION + * + * ARGUMENTS + * + * RETURN VALUE + * + */ +VOID +STDCALL +FsRtlUninitializeFileLock ( + IN OUT PVOID lpUnknown0 + ) +{ +} + + +/* EOF */ diff --git a/reactos/ntoskrnl/ke/main.c b/reactos/ntoskrnl/ke/main.c index 9695b9b1797..3ee3cd6ec01 100644 --- a/reactos/ntoskrnl/ke/main.c +++ b/reactos/ntoskrnl/ke/main.c @@ -1,4 +1,4 @@ -/* $Id: main.c,v 1.34 2000/01/17 21:01:16 ekohl Exp $ +/* $Id: main.c,v 1.35 2000/02/26 16:22:27 ea Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -29,6 +29,10 @@ #define NDEBUG #include +/* DATA *********************************************************************/ + +USHORT NtBuildNumber = KERNEL_VERSION_BUILD; /* EXPORTED */ + /* FUNCTIONS ****************************************************************/ void set_breakpoint(unsigned int i, unsigned int addr, unsigned int type, diff --git a/reactos/ntoskrnl/makefile_rex b/reactos/ntoskrnl/makefile_rex index 258c8f41899..a3fdbb00c6a 100644 --- a/reactos/ntoskrnl/makefile_rex +++ b/reactos/ntoskrnl/makefile_rex @@ -1,4 +1,4 @@ -# $Id: makefile_rex,v 1.53 2000/02/25 23:27:50 ea Exp $ +# $Id: makefile_rex,v 1.54 2000/02/26 16:22:27 ea Exp $ # # ReactOS Operating System # @@ -56,7 +56,8 @@ EX_OBJECTS = ex/work.o ex/fmutex.o ex/resource.o ex/time.o ex/interlck.o \ ex/callback.o ex/napi.o ex/power.o ex/sysinfo.o ex/locale.o \ ex/stamp.o ex/init.o -FS_OBJECTS = fs/dbcsname.o fs/name.o fs/mcb.o fs/unc.o fs/util.o +FS_OBJECTS = fs/dbcsname.o fs/name.o fs/mcb.o fs/unc.o fs/util.o \ + fs/filelock.o SE_OBJECTS = se/semgr.o se/acl.o se/sid.o se/sd.o se/token.o se/luid.o \ se/priv.o diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index ab778dfcf0a..c78dc84114e 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.44 2000/02/25 23:27:50 ea Exp $ +; $Id: ntoskrnl.def,v 1.45 2000/02/26 16:22:27 ea Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -80,6 +80,8 @@ FsRtlAddMcbEntry@16 FsRtlAllocateResource@0 FsRtlAreNamesEqual@16 FsRtlBalanceReads@4 +FsRtlCheckLockForReadAccess@8 +FsRtlCheckLockForWriteAccess@8 FsRtlCopyRead@32 FsRtlCopyWrite@32 FsRtlDeregisterUncProvider@4 @@ -87,9 +89,16 @@ FsRtlDissectDbcs@16 FsRtlDissectName@16 FsRtlDoesDbcsContainWildCards@4 FsRtlDoesNameContainWildCards@4 +FsRtlFastCheckLockForRead@24 +FsRtlFastCheckLockForWrite@24 +FsRtlFastUnlockAll@16 +FsRtlFastUnlockAllByKey@20 +FsRtlFastUnlockSingle@32 FsRtlGetFileSize@8 +FsRtlGetNextFileLock@8 FsRtlGetNextLargeMcbEntry@20 FsRtlGetNextMcbEntry@20 +FsRtlInitializeFileLock@12 FsRtlInitializeLargeMcb@8 FsRtlInitializeMcb@8 FsRtlIsDbcsInExpression@8 @@ -108,6 +117,8 @@ FsRtlNumberOfRunsInLargeMcb@4 FsRtlNumberOfRunsInMcb@4 FsRtlPostPagingFileStackOverflow@12 FsRtlPostStackOverflow@12 +FsRtlPrivateLock@48 +FsRtlProcessFileLock@12 FsRtlRegisterUncProvider@12 FsRtlRemoveLargeMcbEntry@20 FsRtlRemoveMcbEntry@12 @@ -115,6 +126,7 @@ FsRtlSplitLargeMcb@20 FsRtlSyncVolumes@12 FsRtlTruncateLargeMcb@12 FsRtlTruncateMcb@8 +FsRtlUninitializeFileLock@4 FsRtlUninitializeLargeMcb@4 FsRtlUninitializeMcb@4 IoAllocateController @@ -171,7 +183,7 @@ NtAdjustPrivilegesToken@24 NtAllocateLocallyUniqueId@4 NtAllocateUuids@12 NtAllocateVirtualMemory@24 -;NtBuildNumber <--- variable? +NtBuildNumber DATA NtClose@4 NtConnectPort@32 ;NtConnectPort@8 diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index 8e872ebb5f0..ab42c47c49d 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.31 2000/02/25 23:27:51 ea Exp $ +; $Id: ntoskrnl.edf,v 1.32 2000/02/26 16:22:27 ea Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -80,6 +80,8 @@ FsRtlAddMcbEntry=FsRtlAddMcbEntry@16 FsRtlAllocateResource=FsRtlAllocateResource@0 FsRtlAreNamesEqual=FsRtlAreNamesEqual@16 FsRtlBalanceReads=FsRtlBalanceReads@4 +FsRtlCheckLockForReadAccess=FsRtlCheckLockForReadAccess@8 +FsRtlCheckLockForWriteAccess=FsRtlCheckLockForWriteAccess@8 FsRtlCopyRead=FsRtlCopyRead@32 FsRtlCopyWrite=FsRtlCopyWrite@32 FsRtlDeregisterUncProvider=FsRtlDeregisterUncProvider@4 @@ -87,9 +89,16 @@ FsRtlDissectDbcs=FsRtlDissectDbcs@16 FsRtlDissectName=FsRtlDissectName@16 FsRtlDoesDbcsContainWildCards=FsRtlDoesDbcsContainWildCards@4 FsRtlDoesNameContainWildCards=FsRtlDoesNameContainWildCards@4 +FsRtlFastCheckLockForRead=FsRtlFastCheckLockForRead@24 +FsRtlFastCheckLockForWrite=FsRtlFastCheckLockForWrite@24 +FsRtlFastUnlockAll=FsRtlFastUnlockAll@16 +FsRtlFastUnlockAllByKey=FsRtlFastUnlockAllByKey@20 +FsRtlFastUnlockSingle=FsRtlFastUnlockSingle@32 FsRtlGetFileSize=FsRtlGetFileSize@8 +FsRtlGetNextFileLock=FsRtlGetNextFileLock@8 FsRtlGetNextLargeMcbEntry=FsRtlGetNextLargeMcbEntry@20 FsRtlGetNextMcbEntry=FsRtlGetNextMcbEntry@20 +FsRtlInitializeFileLock=FsRtlInitializeFileLock@12 FsRtlInitializeLargeMcb=FsRtlInitializeLargeMcb@8 FsRtlInitializeMcb=FsRtlInitializeMcb@8 FsRtlIsDbcsInExpression=FsRtlIsDbcsInExpression@8 @@ -108,6 +117,8 @@ FsRtlNumberOfRunsInLargeMcb=FsRtlNumberOfRunsInLargeMcb@4 FsRtlNumberOfRunsInMcb=FsRtlNumberOfRunsInMcb@4 FsRtlPostPagingFileStackOverflow=FsRtlPostPagingFileStackOverflow@12 FsRtlPostStackOverflow=FsRtlPostStackOverflow@12 +FsRtlPrivateLock=FsRtlPrivateLock@48 +FsRtlProcessFileLock=FsRtlProcessFileLock@12 FsRtlRegisterUncProvider=FsRtlRegisterUncProvider@12 FsRtlRemoveLargeMcbEntry=FsRtlRemoveLargeMcbEntry@20 FsRtlRemoveMcbEntry=FsRtlRemoveMcbEntry@12 @@ -115,6 +126,7 @@ FsRtlSplitLargeMcb=FsRtlSplitLargeMcb@20 FsRtlSyncVolumes=FsRtlSyncVolumes@12 FsRtlTruncateLargeMcb=FsRtlTruncateLargeMcb@12 FsRtlTruncateMcb=FsRtlTruncateMcb@8 +FsRtlUninitializeFileLock=FsRtlUninitializeFileLock@4 FsRtlUninitializeLargeMcb=FsRtlUninitializeLargeMcb@4 FsRtlUninitializeMcb=FsRtlUninitializeMcb@4 IoAllocateController @@ -171,7 +183,7 @@ NtAdjustPrivilegesToken=NtAdjustPrivilegesToken@24 NtAllocateLocallyUniqueId=NtAllocateLocallyUniqueId@4 NtAllocateUuids=NtAllocateUuids@12 NtAllocateVirtualMemory=NtAllocateVirtualMemory@24 -;NtBuildNumber <--- variable +NtBuildNumber DATA NtClose=NtClose@4 NtConnectPort=NtConnectPort@32 ;NtConnectPort=NtConnectPort@8