Fixed the range which must be zeroed if the write starts after the end
of the file.
Modified: branches/ext2/reactos/drivers/fs/ext2/src/write.c
_____
Modified: branches/ext2/reactos/drivers/fs/ext2/src/write.c
--- branches/ext2/reactos/drivers/fs/ext2/src/write.c 2005-01-20
23:21:14 UTC (rev 13172)
+++ branches/ext2/reactos/drivers/fs/ext2/src/write.c 2005-01-20
23:24:51 UTC (rev 13173)
@@ -544,7 +544,7 @@
LogicalBlockSize = EXT2_MIN_BLOCK_SIZE <<
PtrVCB->LogBlockSize;
- if ( ByteOffset.QuadPart + WriteLength >=
PtrReqdFCB->CommonFCBHeader.FileSize.QuadPart )
+ if ( ByteOffset.QuadPart + WriteLength >
PtrReqdFCB->CommonFCBHeader.FileSize.QuadPart )
{
if( PagingIo )
{
@@ -621,7 +621,7 @@
// Start
offset is the New File size
StartOffsetForZeroing.QuadPart =
-
PtrReqdFCB->CommonFCBHeader.FileSize.QuadPart + WriteLength;
+
ByteOffset.QuadPart + WriteLength;
// End
offset is the New Allocation size
EndOffsetForZeroing.QuadPart =
PtrReqdFCB->CommonFCBHeader.AllocationSize.QuadPart;
}
forgot a letter...
Modified: trunk/reactos/lib/rtl/readme.txt
_____
Modified: trunk/reactos/lib/rtl/readme.txt
--- trunk/reactos/lib/rtl/readme.txt 2005-01-20 23:24:51 UTC (rev
13173)
+++ trunk/reactos/lib/rtl/readme.txt 2005-01-20 23:25:05 UTC (rev
13174)
@@ -2,4 +2,4 @@
ExAllocatePool (and friends) must be used exclusively. RtlAllocateHeap
(and friends) must NOT be used! ExAllocatePool (and friends) translate
to RtlAllocateHeap (and friends) in ntdll\rtl\libsupp.c.
-RtlEnterCriticalSection (and friends) must be used exclusively.
ExAcquireFastMutex (and friends) must NOT be used!
RtlEnterCriticalSection (and friends) translate to ExAcquireFastMutex
(and friends) in ntoskrnl\rtl\libsupp. This means that
RtlEnterCriticalSection (and friends) can NOT be used recursively in
RTL. The reason for choosing RtlEnterCriticalSection (and friends) over
ExAcquireFastMutex (and friends) is that the FAST_MUTEX struct is
smaller than the RTL_CRITICAL_SECTION struct.
\ No newline at end of file
+RtlEnterCriticalSection (and friends) must be used exclusively.
ExAcquireFastMutex (and friends) must NOT be used!
RtlEnterCriticalSection (and friends) translate to ExAcquireFastMutex
(and friends) in ntoskrnl\rtl\libsupp.c. This means that
RtlEnterCriticalSection (and friends) can NOT be used recursively in
RTL. The reason for choosing RtlEnterCriticalSection (and friends) over
ExAcquireFastMutex (and friends) is that the FAST_MUTEX struct is
smaller than the RTL_CRITICAL_SECTION struct.
\ No newline at end of file
add readme with rtl restrictions info
Added: trunk/reactos/lib/rtl/readme.txt
_____
Added: trunk/reactos/lib/rtl/readme.txt
--- trunk/reactos/lib/rtl/readme.txt 2005-01-20 23:05:36 UTC (rev
13171)
+++ trunk/reactos/lib/rtl/readme.txt 2005-01-20 23:21:14 UTC (rev
13172)
@@ -0,0 +1,5 @@
+RTL restrictions:
+
+ExAllocatePool (and friends) must be used exclusively. RtlAllocateHeap
(and friends) must NOT be used! ExAllocatePool (and friends) translate
to RtlAllocateHeap (and friends) in ntdll\rtl\libsupp.c.
+
+RtlEnterCriticalSection (and friends) must be used exclusively.
ExAcquireFastMutex (and friends) must NOT be used!
RtlEnterCriticalSection (and friends) translate to ExAcquireFastMutex
(and friends) in ntoskrnl\rtl\libsupp. This means that
RtlEnterCriticalSection (and friends) can NOT be used recursively in
RTL. The reason for choosing RtlEnterCriticalSection (and friends) over
ExAcquireFastMutex (and friends) is that the FAST_MUTEX struct is
smaller than the RTL_CRITICAL_SECTION struct.
\ No newline at end of file
Fix FsRtl function prototypes
Modified: trunk/reactos/include/ddk/fsfuncs.h
Modified: trunk/reactos/include/ddk/fstypes.h
Modified: trunk/reactos/ntoskrnl/fs/dbcsname.c
Modified: trunk/reactos/ntoskrnl/fs/notify.c
Modified: trunk/reactos/ntoskrnl/fs/util.c
_____
Modified: trunk/reactos/include/ddk/fsfuncs.h
--- trunk/reactos/include/ddk/fsfuncs.h 2005-01-20 13:17:57 UTC (rev
13165)
+++ trunk/reactos/include/ddk/fsfuncs.h 2005-01-20 13:31:49 UTC (rev
13166)
@@ -5,51 +5,14 @@
#include <ntos/fstypes.h>
-/* Some comments on the Prototypes that aren't in the GNU IFS:
+/* Some comments on the Prototypes that aren't in the IFS:
-The following come from alternate sources, or guessed from
documentation:
-FsRtlNotifyFullChangeDirectory GOOGLE GROUPS
-FsRtlIsPagingFile OSR DOCUMENTATION
-FsRtlAcquireFileExclusive (GUESS: The function takes a single
parameter. The function name is "AcquireFile". Logical assumption says
this is a File Object. NTFSD ML Post confirms.)
-FsRtlReleaseFile (GUESS: The function takes a single parameter. The
function name is "AcquireFile". Logical assumption says this is a File
Object. NTFSD ML Post confirms.)
FsRtlMdlReadCompleteDev (FsRtlMdlReadComplete is on GNU IFS. The Dev
Suffix simply means an extra PDEVICE_OBJECT param)
FsRtlMdlReadDev (FsRtlMdlReadDev is on GNU IFS. The Dev Suffix simply
means an extra PDEVICE_OBJECT param)
FsRtlMdlWriteCompleteDev FsRtlMdlWriteCompleteDev is on GNU IFS. The
Dev Suffix simply means an extra PDEVICE_OBJECT param)
FsRtlPrepareMdlWrite (Compared with CcMdlWrite, which is already
documented)
FsRtlPrepareMdlWriteDev (Same as above, and add a pointer to device
object (Dev suffix)
-FsRtlGetNextMcbEntry(FsRtlGetNextLargeMcbEntry is documented and uses
LONGLONGs. Logical assumption that this one only uses LONGS and
non-large MCB (Documented))
-Stream Context. Going along with public OSR documenttion:
-
-FsRtlInsertPerStreamContext:
-"This call is used by the file system filter driver to associate a
given context block
-(allocated by the filter and initialized using
FsRtlInitPerStreamContext) with the stream associated with the given
file object."
-Notice we are told "given context block...initialized using
FsRtlInitPerStreamContext". This function description tells us:
-" provide space for the FSRTL_PER_STREAM_CONTEXT block in the filter
driver's context structure"
-Therefore, one of the parameters is PFSRTL_PER_STREAM_CONTEXT.
-"with the stream associated with the given file object." The OSR
Documentations then mentions:
-"Tracking per-file (or "per stream") context information in
FSRTL_ADVANCED_FCB_HEADER"
-So we are associating a FSRTL_PER_STREAM_CONTEXT block with the
FSRTL_ADVANCED_FCB_HEADER associated with the file object.
-FSRTL_ADVANCED_FCB_HEADER is documented by a search through Google.
-FSRTL_PER_STREAM_CONTEXT is *NOT* documented anywhere else then in the
IFS, so it has been removed.
-
-FsRtlLookupPerStreamContextInternal
-"FsRtlLookupPerStreamContext - this call is used by the file system
filter driver to locate a given context
-block that is associated with the file object. Typically, a file
system filter driver will identify its
-own context block using unique OwnerId and InstanceId parameters when
creating the context block and subsequently
-when locating the associated information."
-OSR tells us here that the last two parameters are OwnerId and
InstanceId. It also says it will find a given context block,
-so there's our Return Value. (Although, not being documented, we must
put PVOID). It looks into a file object's stream, so we
-probably need that FCB header again.
-
-FsRtlRemovePerStreamContext
-OSR is vague, so all we know for sure is that we are sending an FCB
Header. The return value isn't NTSTATUS, but seems to be a
-pointer. We don't know what the two other parameters are, so they have
been marked as unknown.
-
-FsRtlTeardownPerStreamContexts
-OSR doens't tell a lot, but we only have one parameter. It must be the
FCB Header. Furthermore, the CVS of Captive implements
-this function as a stub, and confirms the theory.
-
*/
#ifdef __NTOSKRNL__
@@ -144,10 +107,10 @@
IN BOOLEAN IgnoreCase,
IN PWCHAR UpcaseTable OPTIONAL
);
-DWORD
+NTSTATUS
STDCALL
FsRtlBalanceReads (
- DWORD Unknown0
+ PDEVICE_OBJECT TargetDevice
);
BOOLEAN
STDCALL
@@ -371,19 +334,21 @@
BOOLEAN STDCALL
FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
IN PANSI_STRING Name);
+
+BOOLEAN
+STDCALL
+FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName,
+ IN BOOLEAN WildCardsPermissible,
+ IN BOOLEAN PathNamePermissible,
+ IN BOOLEAN LeadingBackslashPermissible);
-BOOLEAN STDCALL
-FsRtlIsFatDbcsLegal(IN ANSI_STRING Name,
- IN BOOLEAN Unknown2,
- IN BOOLEAN Unknown3,
- IN BOOLEAN Unknown4);
+BOOLEAN
+STDCALL
+FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
+ IN BOOLEAN WildCardsPermissible,
+ IN BOOLEAN PathNamePermissible,
+ IN BOOLEAN LeadingBackslashPermissible);
-BOOLEAN STDCALL
-FsRtlIsHpfsDbcsLegal(IN ANSI_STRING Name,
- IN BOOLEAN Unknown2,
- IN BOOLEAN Unknown3,
- IN BOOLEAN Unknown4);
-
BOOLEAN
STDCALL
FsRtlIsNameInExpression (
@@ -701,19 +666,15 @@
VOID
STDCALL
-FsRtlPostPagingFileStackOverflow (
- ULONG Unknown0,
- ULONG Unknown1,
- ULONG Unknown2
- );
+FsRtlPostPagingFileStackOverflow(IN PVOID Context,
+ IN PKEVENT Event,
+ IN PFSRTL_STACK_OVERFLOW_ROUTINE
StackOverflowRoutine) ;
VOID
STDCALL
-FsRtlPostStackOverflow (
- ULONG Unknown0,
- ULONG Unknown1,
- ULONG Unknown2
- );
+FsRtlPostStackOverflow (IN PVOID Context,
+ IN PKEVENT Event,
+ IN PFSRTL_STACK_OVERFLOW_ROUTINE
StackOverflowRoutine) ;
BOOLEAN
STDCALL
@@ -742,10 +703,8 @@
NTSTATUS
STDCALL
-FsRtlRegisterFileSystemFilterCallbacks (
- IN PVOID Unknown1,
- IN PVOID Unknown2
- );
+FsRtlRegisterFileSystemFilterCallbacks(IN PDRIVER_OBJECT
FilterDriverObject,
+ IN PFS_FILTER_CALLBACKS
Callbacks);
NTSTATUS STDCALL
FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
@@ -772,8 +731,8 @@
STDCALL
FsRtlRemovePerStreamContext (
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
- IN PVOID Unknown1 OPTIONAL,
- IN PVOID Unknown2 OPTIONAL
+ IN PVOID OwnerId OPTIONAL,
+ IN PVOID InstanceId OPTIONAL
);
PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
_____
Modified: trunk/reactos/include/ddk/fstypes.h
--- trunk/reactos/include/ddk/fstypes.h 2005-01-20 13:17:57 UTC (rev
13165)
+++ trunk/reactos/include/ddk/fstypes.h 2005-01-20 13:31:49 UTC (rev
13166)
@@ -30,6 +30,12 @@
IN PIRP Irp
);
+typedef VOID (*PFSRTL_STACK_OVERFLOW_ROUTINE) (
+ IN PVOID Context,
+ IN PKEVENT Event
+);
+
+
typedef VOID (*PUNLOCK_ROUTINE) (
IN PVOID Context,
IN PFILE_LOCK_INFO FileLockInfo
_____
Modified: trunk/reactos/ntoskrnl/fs/dbcsname.c
--- trunk/reactos/ntoskrnl/fs/dbcsname.c 2005-01-20 13:17:57 UTC
(rev 13165)
+++ trunk/reactos/ntoskrnl/fs/dbcsname.c 2005-01-20 13:31:49 UTC
(rev 13166)
@@ -283,11 +283,12 @@
*
* @unimplemented
*/
-BOOLEAN STDCALL
-FsRtlIsFatDbcsLegal(IN ANSI_STRING Name,
- IN BOOLEAN Unknown2,
- IN BOOLEAN Unknown3,
- IN BOOLEAN Unknown4)
+BOOLEAN
+STDCALL
+FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName,
+ IN BOOLEAN WildCardsPermissible,
+ IN BOOLEAN PathNamePermissible,
+ IN BOOLEAN LeadingBackslashPermissible)
{
return FALSE;
}
@@ -306,10 +307,10 @@
* @unimplemented
*/
BOOLEAN STDCALL
-FsRtlIsHpfsDbcsLegal(IN ANSI_STRING Name,
- IN BOOLEAN Unknown2,
- IN BOOLEAN Unknown3,
- IN BOOLEAN Unknown4)
+FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
+ IN BOOLEAN WildCardsPermissible,
+ IN BOOLEAN PathNamePermissible,
+ IN BOOLEAN LeadingBackslashPermissible)
{
return FALSE;
}
_____
Modified: trunk/reactos/ntoskrnl/fs/notify.c
--- trunk/reactos/ntoskrnl/fs/notify.c 2005-01-20 13:17:57 UTC (rev
13165)
+++ trunk/reactos/ntoskrnl/fs/notify.c 2005-01-20 13:31:49 UTC (rev
13166)
@@ -313,10 +313,8 @@
*/
NTSTATUS
STDCALL
-FsRtlRegisterFileSystemFilterCallbacks (
- IN PVOID Unknown1,
- IN PVOID Unknown2
- )
+FsRtlRegisterFileSystemFilterCallbacks(IN PDRIVER_OBJECT
FilterDriverObject,
+ IN PFS_FILTER_CALLBACKS
Callbacks)
{
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
_____
Modified: trunk/reactos/ntoskrnl/fs/util.c
--- trunk/reactos/ntoskrnl/fs/util.c 2005-01-20 13:17:57 UTC (rev
13165)
+++ trunk/reactos/ntoskrnl/fs/util.c 2005-01-20 13:31:49 UTC (rev
13166)
@@ -157,7 +157,8 @@
STDCALL
FsRtlAllocateResource (VOID)
{
- return 0;
+ UNIMPLEMENTED;
+ return STATUS_NOT_IMPLEMENTED;
}
@@ -174,13 +175,12 @@
*
* @unimplemented
*/
-DWORD
+NTSTATUS
STDCALL
-FsRtlBalanceReads (
- DWORD Unknown0
- )
+FsRtlBalanceReads (PDEVICE_OBJECT TargetDevice)
{
- return 0;
+ UNIMPLEMENTED;
+ return STATUS_NOT_IMPLEMENTED;
}
@@ -212,6 +212,7 @@
IN PDEVICE_OBJECT DeviceObject
)
{
+ UNIMPLEMENTED;
return FALSE;
}
@@ -244,6 +245,7 @@
IN PDEVICE_OBJECT DeviceObject
)
{
+ UNIMPLEMENTED;
return FALSE;
}
@@ -341,12 +343,11 @@
*/
VOID
STDCALL
-FsRtlPostPagingFileStackOverflow (
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2
- )
+FsRtlPostPagingFileStackOverflow(IN PVOID Context,
+ IN PKEVENT Event,
+ IN PFSRTL_STACK_OVERFLOW_ROUTINE
StackOverflowRoutine)
{
+ UNIMPLEMENTED;
}
@@ -364,12 +365,11 @@
*/
VOID
STDCALL
-FsRtlPostStackOverflow (
- DWORD Unknown0,
- DWORD Unknown1,
- DWORD Unknown2
- )
+FsRtlPostStackOverflow (IN PVOID Context,
+ IN PKEVENT Event,
+ IN PFSRTL_STACK_OVERFLOW_ROUTINE
StackOverflowRoutine)
{
+ UNIMPLEMENTED;
}