mirror of
https://github.com/reactos/reactos.git
synced 2024-07-15 08:56:08 +00:00
[FORMATTING] / [AUDIT]
- Cleanup a big coding-style mess - Add UNIMPLEMENTED macro in empty functions (otherwise we will never know if they are being called by a 3rd-party driver) - Add proper debug headers inclusion in every file - Add documentation headers into almost every file (except mcb.c and context.c - will be added later) - Standardize per-file headers (some files still lack contributors names, they will be added later too) No code change except for adding UNIMPLEMENTED macros in the code. Name.c unlocked because the implementations of functions are trivial and in fact could be derived from their names. Not documented functions will be further reviewed. svn path=/trunk/; revision=23005
This commit is contained in:
parent
5dd17c2315
commit
9afe9c3b5c
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PROJECT: ReactOS Kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/context.c
|
||||
* PURPOSE: File and Stream Context Functions
|
||||
*
|
||||
|
@ -10,6 +10,8 @@
|
|||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PROJECT: ReactOS Kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/mcb.c
|
||||
* PURPOSE: No purpose listed.
|
||||
*
|
||||
* PROGRAMMERS: No programmer listed.
|
||||
*/
|
||||
|
||||
/* INCLUDES ****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
*
|
||||
|
@ -24,14 +30,15 @@
|
|||
*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG Lbn,
|
||||
IN LONGLONG SectorCount)
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG Lbn,
|
||||
IN LONGLONG SectorCount)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -39,232 +46,234 @@ FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
|
|||
*
|
||||
* @implemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
FsRtlAddMcbEntry (IN PMCB Mcb,
|
||||
IN VBN Vbn,
|
||||
IN LBN Lbn,
|
||||
IN ULONG SectorCount)
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlAddMcbEntry(IN PMCB Mcb,
|
||||
IN VBN Vbn,
|
||||
IN LBN Lbn,
|
||||
IN ULONG SectorCount)
|
||||
{
|
||||
return FsRtlAddLargeMcbEntry(& Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
(LONGLONG) Vbn,
|
||||
(LONGLONG) Lbn,
|
||||
(LONGLONG) SectorCount);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN ULONG RunIndex,
|
||||
OUT PLONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn,
|
||||
OUT PLONGLONG SectorCount)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
FsRtlGetNextMcbEntry (IN PMCB Mcb,
|
||||
IN ULONG RunIndex,
|
||||
OUT PVBN Vbn,
|
||||
OUT PLBN Lbn,
|
||||
OUT PULONG SectorCount)
|
||||
{
|
||||
BOOLEAN Return = FALSE;
|
||||
LONGLONG llVbn;
|
||||
LONGLONG llLbn;
|
||||
LONGLONG llSectorCount;
|
||||
|
||||
/* Call the Large version */
|
||||
Return = FsRtlGetNextLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
RunIndex,
|
||||
&llVbn,
|
||||
&llLbn,
|
||||
&llSectorCount);
|
||||
|
||||
/* Return everything typecasted */
|
||||
*Vbn = (ULONG)llVbn;
|
||||
*Lbn = (ULONG)llLbn;
|
||||
*SectorCount = (ULONG)llSectorCount;
|
||||
|
||||
/* And return the original value */
|
||||
return(Return);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN POOL_TYPE PoolType)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
Mcb->PoolType = PoolType;
|
||||
}
|
||||
|
||||
/*
|
||||
* FsRtlInitializeMcb: Obsolete
|
||||
* @implemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
FsRtlInitializeMcb (IN PMCB Mcb,
|
||||
IN POOL_TYPE PoolType)
|
||||
{
|
||||
FsRtlInitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly, PoolType);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn OPTIONAL,
|
||||
OUT PLONGLONG SectorCountFromLbn OPTIONAL,
|
||||
OUT PLONGLONG StartingLbn OPTIONAL,
|
||||
OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
|
||||
OUT PULONG Index OPTIONAL)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
return FsRtlAddLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
(LONGLONG)Vbn,
|
||||
(LONGLONG)Lbn,
|
||||
(LONGLONG)SectorCount);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlLookupLastLargeMcbEntryAndIndex (
|
||||
IN PLARGE_MCB OpaqueMcb,
|
||||
OUT PLONGLONG LargeVbn,
|
||||
OUT PLONGLONG LargeLbn,
|
||||
OUT PULONG Index
|
||||
)
|
||||
NTAPI
|
||||
FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN ULONG RunIndex,
|
||||
OUT PLONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn,
|
||||
OUT PLONGLONG SectorCount)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlGetNextMcbEntry(IN PMCB Mcb,
|
||||
IN ULONG RunIndex,
|
||||
OUT PVBN Vbn,
|
||||
OUT PLBN Lbn,
|
||||
OUT PULONG SectorCount)
|
||||
{
|
||||
BOOLEAN Return = FALSE;
|
||||
LONGLONG llVbn;
|
||||
LONGLONG llLbn;
|
||||
LONGLONG llSectorCount;
|
||||
|
||||
/* Call the Large version */
|
||||
Return = FsRtlGetNextLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
RunIndex,
|
||||
&llVbn,
|
||||
&llLbn,
|
||||
&llSectorCount);
|
||||
|
||||
/* Return everything typecasted */
|
||||
*Vbn = (ULONG)llVbn;
|
||||
*Lbn = (ULONG)llLbn;
|
||||
*SectorCount = (ULONG)llSectorCount;
|
||||
|
||||
/* And return the original value */
|
||||
return(Return);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlInitializeLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN POOL_TYPE PoolType)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
Mcb->PoolType = PoolType;
|
||||
}
|
||||
|
||||
/*
|
||||
* FsRtlInitializeMcb: Obsolete
|
||||
* @implemented
|
||||
*/
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlInitializeMcb (IN PMCB Mcb,
|
||||
IN POOL_TYPE PoolType)
|
||||
{
|
||||
FsRtlInitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly, PoolType);
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlLookupLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn OPTIONAL,
|
||||
OUT PLONGLONG SectorCountFromLbn OPTIONAL,
|
||||
OUT PLONGLONG StartingLbn OPTIONAL,
|
||||
OUT PLONGLONG SectorCountFromStartingLbn OPTIONAL,
|
||||
OUT PULONG Index OPTIONAL)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlLookupLastLargeMcbEntryAndIndex(IN PLARGE_MCB OpaqueMcb,
|
||||
OUT PLONGLONG LargeVbn,
|
||||
OUT PLONGLONG LargeLbn,
|
||||
OUT PULONG Index)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
PFSRTL_PER_STREAM_CONTEXT
|
||||
STDCALL
|
||||
FsRtlLookupPerStreamContextInternal (
|
||||
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
|
||||
IN PVOID OwnerId OPTIONAL,
|
||||
IN PVOID InstanceId OPTIONAL
|
||||
)
|
||||
NTAPI
|
||||
FsRtlLookupPerStreamContextInternal(IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
|
||||
IN PVOID OwnerId OPTIONAL,
|
||||
IN PVOID InstanceId OPTIONAL)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
|
||||
STDCALL
|
||||
FsRtlLookupPerFileObjectContext (
|
||||
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
|
||||
NTAPI
|
||||
FsRtlLookupPerFileObjectContext(IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
|
||||
IN PVOID OwnerId OPTIONAL,
|
||||
IN PVOID InstanceId OPTIONAL
|
||||
)
|
||||
IN PVOID InstanceId OPTIONAL)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
OUT PLONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn)
|
||||
OUT PLONGLONG Vbn,
|
||||
OUT PLONGLONG Lbn)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlLookupLastMcbEntry(IN PMCB Mcb,
|
||||
OUT PVBN Vbn,
|
||||
OUT PLBN Lbn)
|
||||
{
|
||||
BOOLEAN Return = FALSE;
|
||||
LONGLONG llVbn;
|
||||
LONGLONG llLbn;
|
||||
BOOLEAN Return = FALSE;
|
||||
LONGLONG llVbn;
|
||||
LONGLONG llLbn;
|
||||
|
||||
/* Call the Large version */
|
||||
Return = FsRtlLookupLastLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
&llVbn,
|
||||
&llLbn);
|
||||
/* Call the Large version */
|
||||
Return = FsRtlLookupLastLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
&llVbn,
|
||||
&llLbn);
|
||||
|
||||
/* Return everything typecasted */
|
||||
*Vbn = (ULONG)llVbn;
|
||||
*Lbn = (ULONG)llLbn;
|
||||
/* Return everything typecasted */
|
||||
*Vbn = (ULONG)llVbn;
|
||||
*Lbn = (ULONG)llLbn;
|
||||
|
||||
/* And return the original value */
|
||||
return(Return);
|
||||
/* And return the original value */
|
||||
return(Return);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlLookupMcbEntry(IN PMCB Mcb,
|
||||
IN VBN Vbn,
|
||||
OUT PLBN Lbn,
|
||||
OUT PULONG SectorCount OPTIONAL,
|
||||
OUT PULONG Index)
|
||||
{
|
||||
BOOLEAN Return = FALSE;
|
||||
LONGLONG llLbn;
|
||||
LONGLONG llSectorCount;
|
||||
BOOLEAN Return = FALSE;
|
||||
LONGLONG llLbn;
|
||||
LONGLONG llSectorCount;
|
||||
|
||||
/* Call the Large version */
|
||||
Return = FsRtlLookupLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
(LONGLONG)Vbn,
|
||||
&llLbn,
|
||||
&llSectorCount,
|
||||
NULL,
|
||||
NULL,
|
||||
Index);
|
||||
/* Call the Large version */
|
||||
Return = FsRtlLookupLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
(LONGLONG)Vbn,
|
||||
&llLbn,
|
||||
&llSectorCount,
|
||||
NULL,
|
||||
NULL,
|
||||
Index);
|
||||
|
||||
/* Return everything typecasted */
|
||||
*Lbn = (ULONG)llLbn;
|
||||
if (SectorCount) *SectorCount = (ULONG)llSectorCount;
|
||||
/* Return everything typecasted */
|
||||
*Lbn = (ULONG)llLbn;
|
||||
if (SectorCount) *SectorCount = (ULONG)llSectorCount;
|
||||
|
||||
/* And return the original value */
|
||||
return(Return);
|
||||
/* And return the original value */
|
||||
return(Return);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
ULONG STDCALL
|
||||
ULONG
|
||||
NTAPI
|
||||
FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
|
||||
{
|
||||
ULONG NumberOfRuns;
|
||||
ExAcquireFastMutex (Mcb->FastMutex);
|
||||
NumberOfRuns = Mcb->PairCount;
|
||||
ExReleaseFastMutex (Mcb->FastMutex);
|
||||
return(NumberOfRuns);
|
||||
ULONG NumberOfRuns;
|
||||
|
||||
ExAcquireFastMutex(Mcb->FastMutex);
|
||||
NumberOfRuns = Mcb->PairCount;
|
||||
ExReleaseFastMutex(Mcb->FastMutex);
|
||||
|
||||
return NumberOfRuns;
|
||||
}
|
||||
|
||||
|
||||
|
@ -273,32 +282,34 @@ FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
|
|||
*
|
||||
* @implemented
|
||||
*/
|
||||
ULONG STDCALL
|
||||
ULONG
|
||||
NTAPI
|
||||
FsRtlNumberOfRunsInMcb (IN PMCB Mcb)
|
||||
{
|
||||
return FsRtlNumberOfRunsInLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly);
|
||||
return FsRtlNumberOfRunsInLargeMcb(&Mcb->DummyFieldThatSizesThisStructureCorrectly);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG SectorCount)
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG SectorCount)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
FsRtlRemoveMcbEntry (IN PMCB Mcb,
|
||||
IN VBN Vbn,
|
||||
IN ULONG SectorCount)
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlRemoveMcbEntry(IN PMCB Mcb,
|
||||
IN VBN Vbn,
|
||||
IN ULONG SectorCount)
|
||||
{
|
||||
/* Call the large function */
|
||||
return FsRtlRemoveLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
|
||||
|
@ -311,59 +322,58 @@ FsRtlRemoveMcbEntry (IN PMCB Mcb,
|
|||
* @unimplemented
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlResetLargeMcb (
|
||||
IN PLARGE_MCB Mcb,
|
||||
IN BOOLEAN SelfSynchronized
|
||||
)
|
||||
NTAPI
|
||||
FsRtlResetLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN BOOLEAN SelfSynchronized)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
BOOLEAN STDCALL
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG Amount)
|
||||
IN LONGLONG Vbn,
|
||||
IN LONGLONG Amount)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
|
||||
IN LONGLONG Vbn)
|
||||
IN LONGLONG Vbn)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* FsRtlTruncateMcb: Obsolete
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlTruncateMcb (IN PMCB Mcb,
|
||||
IN VBN Vbn)
|
||||
IN VBN Vbn)
|
||||
{
|
||||
FsRtlTruncateLargeMcb (& Mcb->DummyFieldThatSizesThisStructureCorrectly, (LONGLONG) Vbn);
|
||||
FsRtlTruncateLargeMcb(&Mcb->DummyFieldThatSizesThisStructureCorrectly, (LONGLONG)Vbn);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* @unimplemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -371,12 +381,11 @@ FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
|
|||
*
|
||||
* @implemented
|
||||
*/
|
||||
VOID STDCALL
|
||||
FsRtlUninitializeMcb (IN PMCB Mcb)
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlUninitializeMcb(IN PMCB Mcb)
|
||||
{
|
||||
FsRtlUninitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly);
|
||||
FsRtlUninitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly);
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PROJECT: ReactOS Kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/name.c
|
||||
* PURPOSE: Name and DBCS Name Validation and Dissection Functions.
|
||||
*
|
||||
|
@ -9,9 +9,10 @@
|
|||
* Filip Navara
|
||||
*/
|
||||
|
||||
/* INCLUDES ****************************************************************/
|
||||
/* INCLUDES ****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
|
@ -153,23 +154,31 @@ PUCHAR FsRtlLegalAnsiCharacterArray = LegalAnsiCharacterArray;
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlAreNamesEqual@16
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* NOTE
|
||||
* From Bo Branten's ntifs.h v25.
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlAreNamesEqual
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Name1
|
||||
* FILLME
|
||||
*
|
||||
* @param Name2
|
||||
* FILLME
|
||||
*
|
||||
* @param IgnoreCase
|
||||
* FILLME
|
||||
*
|
||||
* @param UpcaseTable
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks From Bo Branten's ntifs.h v25.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlAreNamesEqual(IN PUNICODE_STRING Name1,
|
||||
IN PUNICODE_STRING Name2,
|
||||
IN BOOLEAN IgnoreCase,
|
||||
|
@ -233,36 +242,33 @@ ManualCase:
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlDissectDbcs@16
|
||||
/*++
|
||||
* @name FsRtlDissectDbcs
|
||||
* @implemented
|
||||
*
|
||||
* Dissects a given path name into first and remaining part.
|
||||
*
|
||||
* ARGUMENTS
|
||||
* Name
|
||||
* ANSI string to dissect.
|
||||
* @param Name
|
||||
* ANSI string to dissect.
|
||||
*
|
||||
* FirstPart
|
||||
* Pointer to user supplied ANSI_STRING, that will
|
||||
* later point to the first part of the original name.
|
||||
* @param FirstPart
|
||||
* Pointer to user supplied ANSI_STRING, that will later point
|
||||
* to the first part of the original name.
|
||||
*
|
||||
* RemainingPart
|
||||
* Pointer to user supplied ANSI_STRING, that will
|
||||
* later point to the remaining part of the original name.
|
||||
* @param RemainingPart
|
||||
* Pointer to user supplied ANSI_STRING, that will later point
|
||||
* to the remaining part of the original name.
|
||||
*
|
||||
* RETURN VALUE
|
||||
* None
|
||||
* @return None
|
||||
*
|
||||
* EXAMPLE
|
||||
* Name: \test1\test2\test3
|
||||
* FirstPart: test1
|
||||
* RemainingPart: test2\test3
|
||||
* @remarks Example:
|
||||
* Name: \test1\test2\test3
|
||||
* FirstPart: test1
|
||||
* RemainingPart: test2\test3
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlDissectDbcs(IN ANSI_STRING Name,
|
||||
OUT PANSI_STRING FirstPart,
|
||||
OUT PANSI_STRING RemainingPart)
|
||||
|
@ -305,96 +311,94 @@ FsRtlDissectDbcs(IN ANSI_STRING Name,
|
|||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlDissectName@16
|
||||
*
|
||||
* DESCRIPTION
|
||||
* Dissects a given path name into first and remaining part.
|
||||
*
|
||||
* ARGUMENTS
|
||||
* Name
|
||||
* Unicode string to dissect.
|
||||
*
|
||||
* FirstPart
|
||||
* Pointer to user supplied UNICODE_STRING, that will
|
||||
* later point to the first part of the original name.
|
||||
*
|
||||
* RemainingPart
|
||||
* Pointer to user supplied UNICODE_STRING, that will
|
||||
* later point to the remaining part of the original name.
|
||||
*
|
||||
* RETURN VALUE
|
||||
* None
|
||||
*
|
||||
* EXAMPLE
|
||||
* Name: \test1\test2\test3
|
||||
* FirstPart: test1
|
||||
* RemainingPart: test2\test3
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlDissectName
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* Dissects a given path name into first and remaining part.
|
||||
*
|
||||
* @param Name
|
||||
* Unicode string to dissect.
|
||||
*
|
||||
* @param FirstPart
|
||||
* Pointer to user supplied UNICODE_STRING, that will later point
|
||||
* to the first part of the original name.
|
||||
*
|
||||
* @param RemainingPart
|
||||
* Pointer to user supplied UNICODE_STRING, that will later point
|
||||
* to the remaining part of the original name.
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks Example:
|
||||
* Name: \test1\test2\test3
|
||||
* FirstPart: test1
|
||||
* RemainingPart: test2\test3
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlDissectName(IN UNICODE_STRING Name,
|
||||
OUT PUNICODE_STRING FirstPart,
|
||||
OUT PUNICODE_STRING RemainingPart)
|
||||
{
|
||||
USHORT NameOffset = 0;
|
||||
USHORT NameLength = 0;
|
||||
USHORT Length;
|
||||
USHORT NameOffset = 0;
|
||||
USHORT NameLength = 0;
|
||||
USHORT Length;
|
||||
|
||||
FirstPart->Length = 0;
|
||||
FirstPart->MaximumLength = 0;
|
||||
FirstPart->Buffer = NULL;
|
||||
FirstPart->Length = 0;
|
||||
FirstPart->MaximumLength = 0;
|
||||
FirstPart->Buffer = NULL;
|
||||
|
||||
RemainingPart->Length = 0;
|
||||
RemainingPart->MaximumLength = 0;
|
||||
RemainingPart->Buffer = NULL;
|
||||
RemainingPart->Length = 0;
|
||||
RemainingPart->MaximumLength = 0;
|
||||
RemainingPart->Buffer = NULL;
|
||||
|
||||
if (Name.Length == 0)
|
||||
return;
|
||||
if (Name.Length == 0)
|
||||
return;
|
||||
|
||||
/* Skip leading backslash */
|
||||
if (Name.Buffer[0] == L'\\')
|
||||
NameOffset++;
|
||||
/* Skip leading backslash */
|
||||
if (Name.Buffer[0] == L'\\')
|
||||
NameOffset++;
|
||||
|
||||
Length = Name.Length / sizeof(WCHAR);
|
||||
Length = Name.Length / sizeof(WCHAR);
|
||||
|
||||
/* Search for next backslash or end-of-string */
|
||||
while ((NameOffset + NameLength < Length) &&
|
||||
(Name.Buffer[NameOffset + NameLength] != L'\\'))
|
||||
{
|
||||
NameLength++;
|
||||
}
|
||||
/* Search for next backslash or end-of-string */
|
||||
while ((NameOffset + NameLength < Length) &&
|
||||
(Name.Buffer[NameOffset + NameLength] != L'\\'))
|
||||
{
|
||||
NameLength++;
|
||||
}
|
||||
|
||||
FirstPart->Length =
|
||||
FirstPart->MaximumLength = NameLength * sizeof(WCHAR);
|
||||
FirstPart->Buffer = &Name.Buffer[NameOffset];
|
||||
FirstPart->Length =
|
||||
FirstPart->MaximumLength = NameLength * sizeof(WCHAR);
|
||||
FirstPart->Buffer = &Name.Buffer[NameOffset];
|
||||
|
||||
NameOffset += NameLength + 1;
|
||||
if (NameOffset < Length)
|
||||
{
|
||||
RemainingPart->Length = (Length - NameOffset) * sizeof(WCHAR);
|
||||
RemainingPart->MaximumLength = (Length - NameOffset) * sizeof(WCHAR);
|
||||
RemainingPart->Buffer = &Name.Buffer[NameOffset];
|
||||
}
|
||||
NameOffset += NameLength + 1;
|
||||
if (NameOffset < Length)
|
||||
{
|
||||
RemainingPart->Length = (Length - NameOffset) * sizeof(WCHAR);
|
||||
RemainingPart->MaximumLength = (Length - NameOffset) * sizeof(WCHAR);
|
||||
RemainingPart->Buffer = &Name.Buffer[NameOffset];
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlDoesDbcsContainWildCards@4
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlDoesDbcsContainWildCards
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Name
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlDoesDbcsContainWildCards(IN PANSI_STRING Name)
|
||||
{
|
||||
ULONG i;
|
||||
|
@ -415,23 +419,22 @@ FsRtlDoesDbcsContainWildCards(IN PANSI_STRING Name)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlDoesNameContainWildCards@4
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* NOTE
|
||||
* From Bo Branten's ntifs.h v12.
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlDoesNameContainWildCards
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Name
|
||||
* Pointer to a UNICODE_STRING containing Name to examine
|
||||
*
|
||||
* @return TRUE if Name contains wildcards, FALSE otherwise
|
||||
*
|
||||
* @remarks From Bo Branten's ntifs.h v12.
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
|
||||
{
|
||||
PWCHAR Ptr;
|
||||
|
@ -452,60 +455,89 @@ FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlIsDbcsInExpression@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlIsDbcsInExpression
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Expression
|
||||
* FILLME
|
||||
*
|
||||
* @param Name
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
|
||||
IN PANSI_STRING Name)
|
||||
{
|
||||
return FALSE;
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlIsFatDbcsLegal@20
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlIsFatDbcsLegal
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param DbcsName
|
||||
* FILLME
|
||||
*
|
||||
* @param WildCardsPermissible
|
||||
* FILLME
|
||||
*
|
||||
* @param PathNamePermissible
|
||||
* FILLME
|
||||
*
|
||||
* @param LeadingBackslashPermissible
|
||||
* FILLME
|
||||
*
|
||||
* @return TRUE if the DbcsName is legal, FALSE otherwise
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName,
|
||||
IN BOOLEAN WildCardsPermissible,
|
||||
IN BOOLEAN PathNamePermissible,
|
||||
IN BOOLEAN LeadingBackslashPermissible)
|
||||
{
|
||||
return FALSE;
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlIsHpfsDbcsLegal@20
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlIsHpfsDbcsLegal
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param DbcsName
|
||||
* FILLME
|
||||
*
|
||||
* @param WildCardsPermissible
|
||||
* FILLME
|
||||
*
|
||||
* @param PathNamePermissible
|
||||
* FILLME
|
||||
*
|
||||
* @param LeadingBackslashPermissible
|
||||
* FILLME
|
||||
*
|
||||
* @return TRUE if the DbcsName is legal, FALSE otherwise
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
|
||||
|
@ -513,108 +545,111 @@ FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
|
|||
IN BOOLEAN PathNamePermissible,
|
||||
IN BOOLEAN LeadingBackslashPermissible)
|
||||
{
|
||||
return FALSE;
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* NAME EXPORTED
|
||||
* FsRtlIsNameInExpression@16
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* NOTE
|
||||
* From Bo Branten's ntifs.h v12. This function should be rewritten
|
||||
* to avoid recursion and better wildcard handling should be
|
||||
* implemented (see FsRtlDoesNameContainWildCards).
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlIsNameInExpression
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param DeviceObject
|
||||
* FILLME
|
||||
*
|
||||
* @param Irp
|
||||
* FILLME
|
||||
*
|
||||
* @return TRUE if Name is in Expression, FALSE otherwise
|
||||
*
|
||||
* @remarks From Bo Branten's ntifs.h v12. This function should be
|
||||
* rewritten to avoid recursion and better wildcard handling
|
||||
* should be implemented (see FsRtlDoesNameContainWildCards).
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlIsNameInExpression(IN PUNICODE_STRING Expression,
|
||||
IN PUNICODE_STRING Name,
|
||||
IN BOOLEAN IgnoreCase,
|
||||
IN PWCHAR UpcaseTable OPTIONAL)
|
||||
{
|
||||
USHORT ExpressionPosition, NamePosition;
|
||||
UNICODE_STRING TempExpression, TempName;
|
||||
USHORT ExpressionPosition, NamePosition;
|
||||
UNICODE_STRING TempExpression, TempName;
|
||||
|
||||
ExpressionPosition = 0;
|
||||
NamePosition = 0;
|
||||
while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
|
||||
NamePosition < (Name->Length / sizeof(WCHAR)))
|
||||
ExpressionPosition = 0;
|
||||
NamePosition = 0;
|
||||
while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
|
||||
NamePosition < (Name->Length / sizeof(WCHAR)))
|
||||
{
|
||||
if (Expression->Buffer[ExpressionPosition] == L'*')
|
||||
if (Expression->Buffer[ExpressionPosition] == L'*')
|
||||
{
|
||||
ExpressionPosition++;
|
||||
if (ExpressionPosition == (Expression->Length / sizeof(WCHAR)))
|
||||
ExpressionPosition++;
|
||||
if (ExpressionPosition == (Expression->Length / sizeof(WCHAR)))
|
||||
{
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
while (NamePosition < (Name->Length / sizeof(WCHAR)))
|
||||
while (NamePosition < (Name->Length / sizeof(WCHAR)))
|
||||
{
|
||||
TempExpression.Length =
|
||||
TempExpression.MaximumLength =
|
||||
Expression->Length - (ExpressionPosition * sizeof(WCHAR));
|
||||
TempExpression.Buffer = Expression->Buffer + ExpressionPosition;
|
||||
TempName.Length =
|
||||
TempName.MaximumLength =
|
||||
Name->Length - (NamePosition * sizeof(WCHAR));
|
||||
TempName.Buffer = Name->Buffer + NamePosition;
|
||||
/* FIXME: Rewrite to get rid of recursion */
|
||||
if (FsRtlIsNameInExpression(&TempExpression, &TempName,
|
||||
IgnoreCase, UpcaseTable))
|
||||
TempExpression.Length =
|
||||
TempExpression.MaximumLength =
|
||||
Expression->Length - (ExpressionPosition * sizeof(WCHAR));
|
||||
TempExpression.Buffer = Expression->Buffer + ExpressionPosition;
|
||||
TempName.Length =
|
||||
TempName.MaximumLength =
|
||||
Name->Length - (NamePosition * sizeof(WCHAR));
|
||||
TempName.Buffer = Name->Buffer + NamePosition;
|
||||
/* FIXME: Rewrite to get rid of recursion */
|
||||
if (FsRtlIsNameInExpression(&TempExpression, &TempName,
|
||||
IgnoreCase, UpcaseTable))
|
||||
{
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
NamePosition++;
|
||||
NamePosition++;
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
/* FIXME: Take UpcaseTable into account! */
|
||||
if (Expression->Buffer[ExpressionPosition] == L'?' ||
|
||||
(IgnoreCase &&
|
||||
RtlUpcaseUnicodeChar(Expression->Buffer[ExpressionPosition]) ==
|
||||
RtlUpcaseUnicodeChar(Name->Buffer[NamePosition])) ||
|
||||
(!IgnoreCase &&
|
||||
Expression->Buffer[ExpressionPosition] ==
|
||||
Name->Buffer[NamePosition]))
|
||||
/* FIXME: Take UpcaseTable into account! */
|
||||
if (Expression->Buffer[ExpressionPosition] == L'?' ||
|
||||
(IgnoreCase &&
|
||||
RtlUpcaseUnicodeChar(Expression->Buffer[ExpressionPosition]) ==
|
||||
RtlUpcaseUnicodeChar(Name->Buffer[NamePosition])) ||
|
||||
(!IgnoreCase &&
|
||||
Expression->Buffer[ExpressionPosition] ==
|
||||
Name->Buffer[NamePosition]))
|
||||
{
|
||||
NamePosition++;
|
||||
ExpressionPosition++;
|
||||
NamePosition++;
|
||||
ExpressionPosition++;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Handle matching of "f0_*.*" expression to "f0_000" file name. */
|
||||
if (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
|
||||
Expression->Buffer[ExpressionPosition] == L'.')
|
||||
/* Handle matching of "f0_*.*" expression to "f0_000" file name. */
|
||||
if (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
|
||||
Expression->Buffer[ExpressionPosition] == L'.')
|
||||
{
|
||||
while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
|
||||
(Expression->Buffer[ExpressionPosition] == L'.' ||
|
||||
Expression->Buffer[ExpressionPosition] == L'*' ||
|
||||
Expression->Buffer[ExpressionPosition] == L'?'))
|
||||
while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
|
||||
(Expression->Buffer[ExpressionPosition] == L'.' ||
|
||||
Expression->Buffer[ExpressionPosition] == L'*' ||
|
||||
Expression->Buffer[ExpressionPosition] == L'?'))
|
||||
{
|
||||
ExpressionPosition++;
|
||||
ExpressionPosition++;
|
||||
}
|
||||
}
|
||||
|
||||
if (ExpressionPosition == (Expression->Length / sizeof(WCHAR)) &&
|
||||
NamePosition == (Name->Length / sizeof(WCHAR)))
|
||||
if (ExpressionPosition == (Expression->Length / sizeof(WCHAR)) &&
|
||||
NamePosition == (Name->Length / sizeof(WCHAR)))
|
||||
{
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,141 +1,175 @@
|
|||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PROJECT: ReactOS Kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/oplock.c
|
||||
* PURPOSE: No purpose listed.
|
||||
* PURPOSE: Oplock-functions
|
||||
*
|
||||
* PROGRAMMERS: Emanuele Aliberti
|
||||
* Eric Kohl
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlCheckOplock@20
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*++
|
||||
* @name FsRtlCheckOplock
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Oplock
|
||||
* FILLME
|
||||
*
|
||||
* @param Irp
|
||||
* FILLME
|
||||
*
|
||||
* @param Context
|
||||
* FILLME
|
||||
*
|
||||
* @param CompletionRoutine
|
||||
* FILLME
|
||||
*
|
||||
* @param PostIrpRoutine
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
FsRtlCheckOplock(IN POPLOCK Oplock,
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context,
|
||||
IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
|
||||
IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL)
|
||||
IN PIRP Irp,
|
||||
IN PVOID Context,
|
||||
IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
|
||||
IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL)
|
||||
{
|
||||
return(STATUS_NOT_IMPLEMENTED);
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlCurrentBatchOplock@4
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlCurrentBatchOplock
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Oplock
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlCurrentBatchOplock(IN POPLOCK Oplock)
|
||||
{
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlInitializeOplock@4
|
||||
/*++
|
||||
* @name FsRtlInitializeOplock
|
||||
* @unimplemented
|
||||
*
|
||||
* DESCRIPTION
|
||||
* FILLME
|
||||
*
|
||||
* ARGUMENTS
|
||||
* @param Oplock
|
||||
* FILLME
|
||||
*
|
||||
* RETURN VALUE
|
||||
* @return None
|
||||
*
|
||||
* NOTE
|
||||
* Obsolete function.
|
||||
* @remarks None
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlInitializeOplock(IN OUT POPLOCK Oplock)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlOplockFsctrl@12
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlOplockFsctrl
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Oplock
|
||||
* FILLME
|
||||
*
|
||||
* @param Irp
|
||||
* FILLME
|
||||
*
|
||||
* @param OpenCount
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
FsRtlOplockFsctrl(IN POPLOCK Oplock,
|
||||
IN PIRP Irp,
|
||||
IN ULONG OpenCount)
|
||||
IN PIRP Irp,
|
||||
IN ULONG OpenCount)
|
||||
{
|
||||
return(STATUS_NOT_IMPLEMENTED);
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlOplockIsFastIoPossible@4
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlOplockIsFastIoPossible
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Oplock
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock)
|
||||
{
|
||||
return(FALSE);
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlUninitializeOplock@4
|
||||
/*++
|
||||
* @name FsRtlUninitializeOplock
|
||||
* @unimplemented
|
||||
*
|
||||
* DESCRIPTION
|
||||
* FILLME
|
||||
*
|
||||
* ARGUMENTS
|
||||
* @param Oplock
|
||||
* FILLME
|
||||
*
|
||||
* RETURN VALUE
|
||||
* @return None
|
||||
*
|
||||
* @implemented
|
||||
*/
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlUninitializeOplock(IN POPLOCK Oplock)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,159 +1,171 @@
|
|||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PROJECT: ReactOS Kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/pool.c
|
||||
* PURPOSE: No purpose listed.
|
||||
*
|
||||
* PROGRAMMERS: No programmer listed.
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlAllocatePool@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* NOTE
|
||||
* IFS_POOL_TAG is "FSrt" in mem view.
|
||||
*
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*++
|
||||
* @name FsRtlAllocatePool
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param PoolType
|
||||
* FILLME
|
||||
*
|
||||
* @param NumberOfBytes
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks IFS_POOL_TAG is "FSrt" in mem view.
|
||||
*
|
||||
*--*/
|
||||
PVOID
|
||||
NTAPI
|
||||
FsRtlAllocatePool (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes
|
||||
)
|
||||
FsRtlAllocatePool(IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes)
|
||||
{
|
||||
PVOID Address;
|
||||
PVOID Address;
|
||||
|
||||
Address = ExAllocatePoolWithTag (
|
||||
PoolType,
|
||||
NumberOfBytes,
|
||||
IFS_POOL_TAG
|
||||
);
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
return Address;
|
||||
Address = ExAllocatePoolWithTag(PoolType,
|
||||
NumberOfBytes,
|
||||
IFS_POOL_TAG);
|
||||
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
|
||||
return Address;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlAllocatePoolWithQuota@8
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
* NOTE
|
||||
* IFS_POOL_TAG is "FSrt" in mem view.
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlAllocatePoolWithQuota
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param PoolType
|
||||
* FILLME
|
||||
*
|
||||
* @param NumberOfBytes
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks IFS_POOL_TAG is "FSrt" in mem view.
|
||||
*
|
||||
*--*/
|
||||
PVOID
|
||||
NTAPI
|
||||
FsRtlAllocatePoolWithQuota (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes
|
||||
)
|
||||
FsRtlAllocatePoolWithQuota(IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes)
|
||||
{
|
||||
PVOID Address;
|
||||
PVOID Address;
|
||||
|
||||
Address = ExAllocatePoolWithQuotaTag (
|
||||
PoolType,
|
||||
NumberOfBytes,
|
||||
IFS_POOL_TAG
|
||||
);
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
return Address;
|
||||
Address = ExAllocatePoolWithQuotaTag(PoolType,
|
||||
NumberOfBytes,
|
||||
IFS_POOL_TAG);
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
return Address;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlAllocatePoolWithQuotaTag@12
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlAllocatePoolWithQuotaTag
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param PoolType
|
||||
* FILLME
|
||||
*
|
||||
* @param NumberOfBytes
|
||||
* FILLME
|
||||
*
|
||||
* @param Tag
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
PVOID
|
||||
NTAPI
|
||||
FsRtlAllocatePoolWithQuotaTag (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag
|
||||
)
|
||||
FsRtlAllocatePoolWithQuotaTag (IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag)
|
||||
{
|
||||
PVOID Address;
|
||||
PVOID Address;
|
||||
|
||||
Address = ExAllocatePoolWithQuotaTag (
|
||||
PoolType,
|
||||
NumberOfBytes,
|
||||
Tag
|
||||
);
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
return Address;
|
||||
Address = ExAllocatePoolWithQuotaTag(PoolType,
|
||||
NumberOfBytes,
|
||||
Tag);
|
||||
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
|
||||
return Address;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlAllocatePoolWithTag@12
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlAllocatePoolWithTag
|
||||
* @implemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param PoolType
|
||||
* FILLME
|
||||
*
|
||||
* @param NumberOfBytes
|
||||
* FILLME
|
||||
*
|
||||
* @param Tag
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
PVOID
|
||||
NTAPI
|
||||
FsRtlAllocatePoolWithTag (
|
||||
IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag
|
||||
)
|
||||
FsRtlAllocatePoolWithTag(IN POOL_TYPE PoolType,
|
||||
IN ULONG NumberOfBytes,
|
||||
IN ULONG Tag)
|
||||
{
|
||||
PVOID Address;
|
||||
PVOID Address;
|
||||
|
||||
Address = ExAllocatePoolWithTag (
|
||||
PoolType,
|
||||
NumberOfBytes,
|
||||
Tag
|
||||
);
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
return Address;
|
||||
Address = ExAllocatePoolWithTag(PoolType,
|
||||
NumberOfBytes,
|
||||
Tag);
|
||||
|
||||
if (NULL == Address)
|
||||
{
|
||||
ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
|
||||
}
|
||||
|
||||
return Address;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,133 +1,178 @@
|
|||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/tunnel.c
|
||||
* PURPOSE: No purpose listed.
|
||||
*
|
||||
* PROGRAMMERS: Emanuele Aliberti
|
||||
*/
|
||||
|
||||
/* INCLUDES ******************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlAddToTunnelCache@32
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*++
|
||||
* @name FsRtlAddToTunnelCache
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Cache
|
||||
* FILLME
|
||||
*
|
||||
* @param DirectoryKey
|
||||
* FILLME
|
||||
*
|
||||
* @param ShortName
|
||||
* FILLME
|
||||
*
|
||||
* @param LongName
|
||||
* FILLME
|
||||
*
|
||||
* @param KeyByShortName
|
||||
* FILLME
|
||||
*
|
||||
* @param DataLength
|
||||
* FILLME
|
||||
*
|
||||
* @param Data
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlAddToTunnelCache (
|
||||
IN PTUNNEL Cache,
|
||||
IN ULONGLONG DirectoryKey,
|
||||
IN PUNICODE_STRING ShortName,
|
||||
IN PUNICODE_STRING LongName,
|
||||
IN BOOLEAN KeyByShortName,
|
||||
IN ULONG DataLength,
|
||||
IN PVOID Data
|
||||
)
|
||||
NTAPI
|
||||
FsRtlAddToTunnelCache(IN PTUNNEL Cache,
|
||||
IN ULONGLONG DirectoryKey,
|
||||
IN PUNICODE_STRING ShortName,
|
||||
IN PUNICODE_STRING LongName,
|
||||
IN BOOLEAN KeyByShortName,
|
||||
IN ULONG DataLength,
|
||||
IN PVOID Data)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlDeleteKeyFromTunnelCache@12
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlDeleteKeyFromTunnelCache
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Cache
|
||||
* FILLME
|
||||
*
|
||||
* @param DirectoryKey
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlDeleteKeyFromTunnelCache (
|
||||
IN PTUNNEL Cache,
|
||||
IN ULONGLONG DirectoryKey
|
||||
)
|
||||
NTAPI
|
||||
FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache,
|
||||
IN ULONGLONG DirectoryKey)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlDeleteTunnelCache@4
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlDeleteTunnelCache
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Cache
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlDeleteTunnelCache (
|
||||
IN PTUNNEL Cache
|
||||
)
|
||||
NTAPI
|
||||
FsRtlDeleteTunnelCache(IN PTUNNEL Cache)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlFindInTunnelCache@32
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlFindInTunnelCache
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Cache
|
||||
* FILLME
|
||||
*
|
||||
* @param DirectoryKey
|
||||
* FILLME
|
||||
*
|
||||
* @param ShortName
|
||||
* FILLME
|
||||
*
|
||||
* @param LongName
|
||||
* FILLME
|
||||
*
|
||||
* @param KeyByShortName
|
||||
* FILLME
|
||||
*
|
||||
* @param DataLength
|
||||
* FILLME
|
||||
*
|
||||
* @param Data
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
FsRtlFindInTunnelCache (
|
||||
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
|
||||
)
|
||||
NTAPI
|
||||
FsRtlFindInTunnelCache(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)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlInitializeTunnelCache@4
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlDeleteTunnelCache
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Cache
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
FsRtlInitializeTunnelCache (
|
||||
IN PTUNNEL Cache
|
||||
)
|
||||
NTAPI
|
||||
FsRtlInitializeTunnelCache(IN PTUNNEL Cache)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,54 +1,70 @@
|
|||
/* $Id$
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PROJECT: ReactOS Kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/unc.c
|
||||
* PURPOSE: No purpose listed.
|
||||
* PURPOSE: Functions to work with UNC providers
|
||||
*
|
||||
* PROGRAMMERS: Emanuele Aliberti
|
||||
* Eric Kohl
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlDeregisterUncProvider@4
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*++
|
||||
* @name FsRtlDeregisterUncProvider
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Handle
|
||||
* FILLME
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
VOID
|
||||
NTAPI
|
||||
FsRtlDeregisterUncProvider(IN HANDLE Handle)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************
|
||||
* NAME EXPORTED
|
||||
* FsRtlRegisterUncProvider@12
|
||||
*
|
||||
* DESCRIPTION
|
||||
*
|
||||
* ARGUMENTS
|
||||
*
|
||||
* RETURN VALUE
|
||||
*
|
||||
/*++
|
||||
* @name FsRtlRegisterUncProvider
|
||||
* @unimplemented
|
||||
*/
|
||||
*
|
||||
* FILLME
|
||||
*
|
||||
* @param Handle
|
||||
* FILLME
|
||||
*
|
||||
* @param RedirectorDeviceName
|
||||
* FILLME
|
||||
*
|
||||
* @param MailslotsSupported
|
||||
*
|
||||
* @return None
|
||||
*
|
||||
* @remarks None
|
||||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
|
||||
IN PUNICODE_STRING RedirectorDeviceName,
|
||||
IN BOOLEAN MailslotsSupported)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return(STATUS_NOT_IMPLEMENTED);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,15 +1,18 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* PROJECT: ReactOS Kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: ntoskrnl/fs/util.c
|
||||
* PURPOSE: Misc Utility Functions for File System Drivers
|
||||
*
|
||||
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
|
||||
Emanuele Aliberti
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ntoskrnl.h>
|
||||
|
||||
#define NDEBUG
|
||||
#include <internal/debug.h>
|
||||
|
||||
#define FSRTL_MAX_RESOURCES 16
|
||||
|
@ -21,7 +24,7 @@
|
|||
/* GLOBALS *******************************************************************/
|
||||
|
||||
BOOLEAN STDCALL MmIsFileAPagingFile(PFILE_OBJECT FileObject);
|
||||
VOID STDCALL INIT_FUNCTION RtlpInitializeResources(VOID);
|
||||
VOID NTAPI INIT_FUNCTION RtlpInitializeResources(VOID);
|
||||
static ULONG FsRtlpAllocatedResources = 0;
|
||||
static PERESOURCE FsRtlpResources;
|
||||
|
||||
|
@ -32,7 +35,7 @@ static PERESOURCE FsRtlpResources;
|
|||
/* PRIVATE FUNCTIONS**********************************************************/
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
NTAPI
|
||||
INIT_FUNCTION
|
||||
RtlpInitializeResources(VOID)
|
||||
{
|
||||
|
@ -67,7 +70,7 @@ RtlpInitializeResources(VOID)
|
|||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus)
|
||||
{
|
||||
return((NT_SUCCESS(NtStatus)) ||
|
||||
|
@ -91,7 +94,7 @@ FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus)
|
|||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
|
||||
{
|
||||
return((STATUS_DATATYPE_MISALIGNMENT == NtStatus) ||
|
||||
|
@ -115,7 +118,7 @@ FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
|
|||
*
|
||||
*--*/
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlIsPagingFile(IN PFILE_OBJECT FileObject)
|
||||
{
|
||||
return MmIsFileAPagingFile(FileObject);
|
||||
|
@ -141,7 +144,7 @@ FsRtlIsPagingFile(IN PFILE_OBJECT FileObject)
|
|||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
|
||||
IN NTSTATUS NormalizedNtStatus)
|
||||
{
|
||||
|
@ -162,7 +165,7 @@ FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
|
|||
*
|
||||
*--*/
|
||||
PERESOURCE
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlAllocateResource(VOID)
|
||||
{
|
||||
/* Return a pre-allocated ERESOURCE */
|
||||
|
@ -185,7 +188,7 @@ FsRtlAllocateResource(VOID)
|
|||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlBalanceReads(PDEVICE_OBJECT TargetDevice)
|
||||
{
|
||||
PIRP Irp;
|
||||
|
@ -243,7 +246,7 @@ FsRtlBalanceReads(PDEVICE_OBJECT TargetDevice)
|
|||
*
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlPostPagingFileStackOverflow(IN PVOID Context,
|
||||
IN PKEVENT Event,
|
||||
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine)
|
||||
|
@ -269,7 +272,7 @@ FsRtlPostPagingFileStackOverflow(IN PVOID Context,
|
|||
*
|
||||
*--*/
|
||||
VOID
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlPostStackOverflow(IN PVOID Context,
|
||||
IN PKEVENT Event,
|
||||
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine)
|
||||
|
@ -289,7 +292,7 @@ FsRtlPostStackOverflow(IN PVOID Context,
|
|||
*
|
||||
*--*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
NTAPI
|
||||
FsRtlSyncVolumes(DWORD Unknown0,
|
||||
DWORD Unknown1,
|
||||
DWORD Unknown2)
|
||||
|
|
Loading…
Reference in a new issue