mirror of
https://github.com/reactos/reactos.git
synced 2025-05-13 22:30:21 +00:00
Fix FsRtl function prototypes
svn path=/trunk/; revision=13166
This commit is contained in:
parent
1afa98bcff
commit
0b7bbeea36
5 changed files with 60 additions and 96 deletions
|
@ -5,50 +5,13 @@
|
||||||
|
|
||||||
#include <ntos/fstypes.h>
|
#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)
|
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)
|
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)
|
FsRtlMdlWriteCompleteDev FsRtlMdlWriteCompleteDev is on GNU IFS. The Dev Suffix simply means an extra PDEVICE_OBJECT param)
|
||||||
FsRtlPrepareMdlWrite (Compared with CcMdlWrite, which is already documented)
|
FsRtlPrepareMdlWrite (Compared with CcMdlWrite, which is already documented)
|
||||||
FsRtlPrepareMdlWriteDev (Same as above, and add a pointer to device object (Dev suffix)
|
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 BOOLEAN IgnoreCase,
|
||||||
IN PWCHAR UpcaseTable OPTIONAL
|
IN PWCHAR UpcaseTable OPTIONAL
|
||||||
);
|
);
|
||||||
DWORD
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlBalanceReads (
|
FsRtlBalanceReads (
|
||||||
DWORD Unknown0
|
PDEVICE_OBJECT TargetDevice
|
||||||
);
|
);
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -372,17 +335,19 @@ BOOLEAN STDCALL
|
||||||
FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
|
FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
|
||||||
IN PANSI_STRING Name);
|
IN PANSI_STRING Name);
|
||||||
|
|
||||||
BOOLEAN STDCALL
|
BOOLEAN
|
||||||
FsRtlIsFatDbcsLegal(IN ANSI_STRING Name,
|
STDCALL
|
||||||
IN BOOLEAN Unknown2,
|
FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName,
|
||||||
IN BOOLEAN Unknown3,
|
IN BOOLEAN WildCardsPermissible,
|
||||||
IN BOOLEAN Unknown4);
|
IN BOOLEAN PathNamePermissible,
|
||||||
|
IN BOOLEAN LeadingBackslashPermissible);
|
||||||
|
|
||||||
BOOLEAN STDCALL
|
BOOLEAN
|
||||||
FsRtlIsHpfsDbcsLegal(IN ANSI_STRING Name,
|
STDCALL
|
||||||
IN BOOLEAN Unknown2,
|
FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
|
||||||
IN BOOLEAN Unknown3,
|
IN BOOLEAN WildCardsPermissible,
|
||||||
IN BOOLEAN Unknown4);
|
IN BOOLEAN PathNamePermissible,
|
||||||
|
IN BOOLEAN LeadingBackslashPermissible);
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -701,19 +666,15 @@ FsRtlNumberOfRunsInMcb (IN PMCB Mcb);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlPostPagingFileStackOverflow (
|
FsRtlPostPagingFileStackOverflow(IN PVOID Context,
|
||||||
ULONG Unknown0,
|
IN PKEVENT Event,
|
||||||
ULONG Unknown1,
|
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine) ;
|
||||||
ULONG Unknown2
|
|
||||||
);
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlPostStackOverflow (
|
FsRtlPostStackOverflow (IN PVOID Context,
|
||||||
ULONG Unknown0,
|
IN PKEVENT Event,
|
||||||
ULONG Unknown1,
|
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine) ;
|
||||||
ULONG Unknown2
|
|
||||||
);
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -742,10 +703,8 @@ FsRtlProcessFileLock (
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlRegisterFileSystemFilterCallbacks (
|
FsRtlRegisterFileSystemFilterCallbacks(IN PDRIVER_OBJECT FilterDriverObject,
|
||||||
IN PVOID Unknown1,
|
IN PFS_FILTER_CALLBACKS Callbacks);
|
||||||
IN PVOID Unknown2
|
|
||||||
);
|
|
||||||
|
|
||||||
NTSTATUS STDCALL
|
NTSTATUS STDCALL
|
||||||
FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
|
FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
|
||||||
|
@ -772,8 +731,8 @@ PFSRTL_PER_STREAM_CONTEXT
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlRemovePerStreamContext (
|
FsRtlRemovePerStreamContext (
|
||||||
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
|
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
|
||||||
IN PVOID Unknown1 OPTIONAL,
|
IN PVOID OwnerId OPTIONAL,
|
||||||
IN PVOID Unknown2 OPTIONAL
|
IN PVOID InstanceId OPTIONAL
|
||||||
);
|
);
|
||||||
|
|
||||||
PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
|
PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
|
||||||
|
|
|
@ -30,6 +30,12 @@ typedef NTSTATUS (*PCOMPLETE_LOCK_IRP_ROUTINE) (
|
||||||
IN PIRP Irp
|
IN PIRP Irp
|
||||||
);
|
);
|
||||||
|
|
||||||
|
typedef VOID (*PFSRTL_STACK_OVERFLOW_ROUTINE) (
|
||||||
|
IN PVOID Context,
|
||||||
|
IN PKEVENT Event
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
typedef VOID (*PUNLOCK_ROUTINE) (
|
typedef VOID (*PUNLOCK_ROUTINE) (
|
||||||
IN PVOID Context,
|
IN PVOID Context,
|
||||||
IN PFILE_LOCK_INFO FileLockInfo
|
IN PFILE_LOCK_INFO FileLockInfo
|
||||||
|
|
|
@ -283,11 +283,12 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
|
||||||
*
|
*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
BOOLEAN STDCALL
|
BOOLEAN
|
||||||
FsRtlIsFatDbcsLegal(IN ANSI_STRING Name,
|
STDCALL
|
||||||
IN BOOLEAN Unknown2,
|
FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName,
|
||||||
IN BOOLEAN Unknown3,
|
IN BOOLEAN WildCardsPermissible,
|
||||||
IN BOOLEAN Unknown4)
|
IN BOOLEAN PathNamePermissible,
|
||||||
|
IN BOOLEAN LeadingBackslashPermissible)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -306,10 +307,10 @@ FsRtlIsFatDbcsLegal(IN ANSI_STRING Name,
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
BOOLEAN STDCALL
|
BOOLEAN STDCALL
|
||||||
FsRtlIsHpfsDbcsLegal(IN ANSI_STRING Name,
|
FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
|
||||||
IN BOOLEAN Unknown2,
|
IN BOOLEAN WildCardsPermissible,
|
||||||
IN BOOLEAN Unknown3,
|
IN BOOLEAN PathNamePermissible,
|
||||||
IN BOOLEAN Unknown4)
|
IN BOOLEAN LeadingBackslashPermissible)
|
||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -313,10 +313,8 @@ FsRtlNotifyVolumeEvent (
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlRegisterFileSystemFilterCallbacks (
|
FsRtlRegisterFileSystemFilterCallbacks(IN PDRIVER_OBJECT FilterDriverObject,
|
||||||
IN PVOID Unknown1,
|
IN PFS_FILTER_CALLBACKS Callbacks)
|
||||||
IN PVOID Unknown2
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
|
|
@ -157,7 +157,8 @@ DWORD
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlAllocateResource (VOID)
|
FsRtlAllocateResource (VOID)
|
||||||
{
|
{
|
||||||
return 0;
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -174,13 +175,12 @@ FsRtlAllocateResource (VOID)
|
||||||
*
|
*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
DWORD
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlBalanceReads (
|
FsRtlBalanceReads (PDEVICE_OBJECT TargetDevice)
|
||||||
DWORD Unknown0
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
return 0;
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -212,6 +212,7 @@ FsRtlCopyRead (
|
||||||
IN PDEVICE_OBJECT DeviceObject
|
IN PDEVICE_OBJECT DeviceObject
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,6 +245,7 @@ FsRtlCopyWrite (
|
||||||
IN PDEVICE_OBJECT DeviceObject
|
IN PDEVICE_OBJECT DeviceObject
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,12 +343,11 @@ FsRtlInsertPerFileObjectContext (
|
||||||
*/
|
*/
|
||||||
VOID
|
VOID
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlPostPagingFileStackOverflow (
|
FsRtlPostPagingFileStackOverflow(IN PVOID Context,
|
||||||
DWORD Unknown0,
|
IN PKEVENT Event,
|
||||||
DWORD Unknown1,
|
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine)
|
||||||
DWORD Unknown2
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -364,12 +365,11 @@ FsRtlPostPagingFileStackOverflow (
|
||||||
*/
|
*/
|
||||||
VOID
|
VOID
|
||||||
STDCALL
|
STDCALL
|
||||||
FsRtlPostStackOverflow (
|
FsRtlPostStackOverflow (IN PVOID Context,
|
||||||
DWORD Unknown0,
|
IN PKEVENT Event,
|
||||||
DWORD Unknown1,
|
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine)
|
||||||
DWORD Unknown2
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue