diff --git a/reactos/include/ddk/fsfuncs.h b/reactos/include/ddk/fsfuncs.h index 53a8a6bb484..73318687be0 100644 --- a/reactos/include/ddk/fsfuncs.h +++ b/reactos/include/ddk/fsfuncs.h @@ -5,50 +5,13 @@ #include -/* 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. */ @@ -144,10 +107,10 @@ FsRtlAreNamesEqual ( IN BOOLEAN IgnoreCase, IN PWCHAR UpcaseTable OPTIONAL ); -DWORD +NTSTATUS STDCALL FsRtlBalanceReads ( - DWORD Unknown0 + PDEVICE_OBJECT TargetDevice ); BOOLEAN STDCALL @@ -371,18 +334,20 @@ FsRtlInsertPerStreamContext ( 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 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 @@ -701,19 +666,15 @@ FsRtlNumberOfRunsInMcb (IN PMCB Mcb); 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 @@ FsRtlProcessFileLock ( 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 @@ PFSRTL_PER_STREAM_CONTEXT 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*/ diff --git a/reactos/include/ddk/fstypes.h b/reactos/include/ddk/fstypes.h index 254219e46d7..8d1aaab22c4 100644 --- a/reactos/include/ddk/fstypes.h +++ b/reactos/include/ddk/fstypes.h @@ -30,6 +30,12 @@ typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) ( 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 diff --git a/reactos/ntoskrnl/fs/dbcsname.c b/reactos/ntoskrnl/fs/dbcsname.c index e4063878f8b..2256371f0f1 100644 --- a/reactos/ntoskrnl/fs/dbcsname.c +++ b/reactos/ntoskrnl/fs/dbcsname.c @@ -283,11 +283,12 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression, * * @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 @@ FsRtlIsFatDbcsLegal(IN ANSI_STRING Name, * @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; } diff --git a/reactos/ntoskrnl/fs/notify.c b/reactos/ntoskrnl/fs/notify.c index 493c60a16be..7049c561a57 100644 --- a/reactos/ntoskrnl/fs/notify.c +++ b/reactos/ntoskrnl/fs/notify.c @@ -313,10 +313,8 @@ FsRtlNotifyVolumeEvent ( */ NTSTATUS STDCALL -FsRtlRegisterFileSystemFilterCallbacks ( - IN PVOID Unknown1, - IN PVOID Unknown2 - ) +FsRtlRegisterFileSystemFilterCallbacks(IN PDRIVER_OBJECT FilterDriverObject, + IN PFS_FILTER_CALLBACKS Callbacks) { UNIMPLEMENTED; return STATUS_NOT_IMPLEMENTED; diff --git a/reactos/ntoskrnl/fs/util.c b/reactos/ntoskrnl/fs/util.c index ab7e33a7a92..64e3dd13fca 100644 --- a/reactos/ntoskrnl/fs/util.c +++ b/reactos/ntoskrnl/fs/util.c @@ -157,7 +157,8 @@ DWORD STDCALL FsRtlAllocateResource (VOID) { - return 0; + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; } @@ -174,13 +175,12 @@ FsRtlAllocateResource (VOID) * * @unimplemented */ -DWORD +NTSTATUS STDCALL -FsRtlBalanceReads ( - DWORD Unknown0 - ) +FsRtlBalanceReads (PDEVICE_OBJECT TargetDevice) { - return 0; + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; } @@ -212,6 +212,7 @@ FsRtlCopyRead ( IN PDEVICE_OBJECT DeviceObject ) { + UNIMPLEMENTED; return FALSE; } @@ -244,6 +245,7 @@ FsRtlCopyWrite ( IN PDEVICE_OBJECT DeviceObject ) { + UNIMPLEMENTED; return FALSE; } @@ -341,12 +343,11 @@ FsRtlInsertPerFileObjectContext ( */ 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 @@ FsRtlPostPagingFileStackOverflow ( */ VOID STDCALL -FsRtlPostStackOverflow ( - DWORD Unknown0, - DWORD Unknown1, - DWORD Unknown2 - ) +FsRtlPostStackOverflow (IN PVOID Context, + IN PKEVENT Event, + IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine) { + UNIMPLEMENTED; }