[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:
Aleksey Bragin 2006-07-10 21:03:26 +00:00
parent 5dd17c2315
commit 9afe9c3b5c
9 changed files with 1951 additions and 1563 deletions

View file

@ -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 * FILE: ntoskrnl/fs/context.c
* PURPOSE: File and Stream Context Functions * PURPOSE: File and Stream Context Functions
* *
@ -10,6 +10,8 @@
/* INCLUDES *****************************************************************/ /* INCLUDES *****************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h> #include <internal/debug.h>
/* GLOBALS *******************************************************************/ /* GLOBALS *******************************************************************/

View file

@ -1,16 +1,22 @@
/* $Id$ /* $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 * FILE: ntoskrnl/fs/mcb.c
* PURPOSE: No purpose listed. * PURPOSE: No purpose listed.
* *
* PROGRAMMERS: No programmer listed. * PROGRAMMERS: No programmer listed.
*/ */
/* INCLUDES ****************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h> #include <internal/debug.h>
/* FUNCTIONS *****************************************************************/
/********************************************************************** /**********************************************************************
* NAME EXPORTED * NAME EXPORTED
* *
@ -24,14 +30,15 @@
* *
* @unimplemented * @unimplemented
*/ */
BOOLEAN STDCALL BOOLEAN
NTAPI
FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb, FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn, IN LONGLONG Vbn,
IN LONGLONG Lbn, IN LONGLONG Lbn,
IN LONGLONG SectorCount) IN LONGLONG SectorCount)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return(FALSE); return FALSE;
} }
/* /*
@ -39,232 +46,234 @@ FsRtlAddLargeMcbEntry(IN PLARGE_MCB Mcb,
* *
* @implemented * @implemented
*/ */
BOOLEAN STDCALL BOOLEAN
FsRtlAddMcbEntry (IN PMCB Mcb, NTAPI
IN VBN Vbn, FsRtlAddMcbEntry(IN PMCB Mcb,
IN LBN Lbn, IN VBN Vbn,
IN ULONG SectorCount) IN LBN Lbn,
IN ULONG SectorCount)
{ {
return FsRtlAddLargeMcbEntry(& Mcb->DummyFieldThatSizesThisStructureCorrectly, return FsRtlAddLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
(LONGLONG) Vbn, (LONGLONG)Vbn,
(LONGLONG) Lbn, (LONGLONG)Lbn,
(LONGLONG) SectorCount); (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);
} }
/* /*
* @unimplemented * @unimplemented
*/ */
BOOLEAN BOOLEAN
STDCALL NTAPI
FsRtlLookupLastLargeMcbEntryAndIndex ( FsRtlGetNextLargeMcbEntry(IN PLARGE_MCB Mcb,
IN PLARGE_MCB OpaqueMcb, IN ULONG RunIndex,
OUT PLONGLONG LargeVbn, OUT PLONGLONG Vbn,
OUT PLONGLONG LargeLbn, OUT PLONGLONG Lbn,
OUT PULONG Index OUT PLONGLONG SectorCount)
)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return(FALSE); 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 * @unimplemented
*/ */
PFSRTL_PER_STREAM_CONTEXT PFSRTL_PER_STREAM_CONTEXT
STDCALL NTAPI
FsRtlLookupPerStreamContextInternal ( FsRtlLookupPerStreamContextInternal(IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext, IN PVOID OwnerId OPTIONAL,
IN PVOID OwnerId OPTIONAL, IN PVOID InstanceId OPTIONAL)
IN PVOID InstanceId OPTIONAL
)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return(FALSE); return FALSE;
} }
/* /*
* @unimplemented * @unimplemented
*/ */
PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/ PVOID /* PFSRTL_PER_FILE_OBJECT_CONTEXT*/
STDCALL NTAPI
FsRtlLookupPerFileObjectContext ( FsRtlLookupPerFileObjectContext(IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PFSRTL_ADVANCED_FCB_HEADER StreamContext,
IN PVOID OwnerId OPTIONAL, IN PVOID OwnerId OPTIONAL,
IN PVOID InstanceId OPTIONAL IN PVOID InstanceId OPTIONAL)
)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return(FALSE); return FALSE;
} }
/* /*
* @unimplemented * @unimplemented
*/ */
BOOLEAN STDCALL BOOLEAN
NTAPI
FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb, FsRtlLookupLastLargeMcbEntry(IN PLARGE_MCB Mcb,
OUT PLONGLONG Vbn, OUT PLONGLONG Vbn,
OUT PLONGLONG Lbn) OUT PLONGLONG Lbn)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return(FALSE); return(FALSE);
} }
/* /*
* @implemented * @implemented
*/ */
BOOLEAN STDCALL BOOLEAN
NTAPI
FsRtlLookupLastMcbEntry(IN PMCB Mcb, FsRtlLookupLastMcbEntry(IN PMCB Mcb,
OUT PVBN Vbn, OUT PVBN Vbn,
OUT PLBN Lbn) OUT PLBN Lbn)
{ {
BOOLEAN Return = FALSE; BOOLEAN Return = FALSE;
LONGLONG llVbn; LONGLONG llVbn;
LONGLONG llLbn; LONGLONG llLbn;
/* Call the Large version */ /* Call the Large version */
Return = FsRtlLookupLastLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly, Return = FsRtlLookupLastLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
&llVbn, &llVbn,
&llLbn); &llLbn);
/* Return everything typecasted */ /* Return everything typecasted */
*Vbn = (ULONG)llVbn; *Vbn = (ULONG)llVbn;
*Lbn = (ULONG)llLbn; *Lbn = (ULONG)llLbn;
/* And return the original value */ /* And return the original value */
return(Return); return(Return);
} }
/* /*
* @implemented * @implemented
*/ */
BOOLEAN STDCALL BOOLEAN
NTAPI
FsRtlLookupMcbEntry(IN PMCB Mcb, FsRtlLookupMcbEntry(IN PMCB Mcb,
IN VBN Vbn, IN VBN Vbn,
OUT PLBN Lbn, OUT PLBN Lbn,
OUT PULONG SectorCount OPTIONAL, OUT PULONG SectorCount OPTIONAL,
OUT PULONG Index) OUT PULONG Index)
{ {
BOOLEAN Return = FALSE; BOOLEAN Return = FALSE;
LONGLONG llLbn; LONGLONG llLbn;
LONGLONG llSectorCount; LONGLONG llSectorCount;
/* Call the Large version */ /* Call the Large version */
Return = FsRtlLookupLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly, Return = FsRtlLookupLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
(LONGLONG)Vbn, (LONGLONG)Vbn,
&llLbn, &llLbn,
&llSectorCount, &llSectorCount,
NULL, NULL,
NULL, NULL,
Index); Index);
/* Return everything typecasted */ /* Return everything typecasted */
*Lbn = (ULONG)llLbn; *Lbn = (ULONG)llLbn;
if (SectorCount) *SectorCount = (ULONG)llSectorCount; if (SectorCount) *SectorCount = (ULONG)llSectorCount;
/* And return the original value */ /* And return the original value */
return(Return); return(Return);
} }
/* /*
* @implemented * @implemented
*/ */
ULONG STDCALL ULONG
NTAPI
FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb) FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
{ {
ULONG NumberOfRuns; ULONG NumberOfRuns;
ExAcquireFastMutex (Mcb->FastMutex);
NumberOfRuns = Mcb->PairCount; ExAcquireFastMutex(Mcb->FastMutex);
ExReleaseFastMutex (Mcb->FastMutex); NumberOfRuns = Mcb->PairCount;
return(NumberOfRuns); ExReleaseFastMutex(Mcb->FastMutex);
return NumberOfRuns;
} }
@ -273,32 +282,34 @@ FsRtlNumberOfRunsInLargeMcb(IN PLARGE_MCB Mcb)
* *
* @implemented * @implemented
*/ */
ULONG STDCALL ULONG
NTAPI
FsRtlNumberOfRunsInMcb (IN PMCB Mcb) FsRtlNumberOfRunsInMcb (IN PMCB Mcb)
{ {
return FsRtlNumberOfRunsInLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly); return FsRtlNumberOfRunsInLargeMcb(&Mcb->DummyFieldThatSizesThisStructureCorrectly);
} }
/* /*
* @unimplemented * @unimplemented
*/ */
VOID STDCALL VOID
NTAPI
FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb, FsRtlRemoveLargeMcbEntry(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn, IN LONGLONG Vbn,
IN LONGLONG SectorCount) IN LONGLONG SectorCount)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
} }
/* /*
* @implemented * @implemented
*/ */
VOID STDCALL VOID
FsRtlRemoveMcbEntry (IN PMCB Mcb, NTAPI
IN VBN Vbn, FsRtlRemoveMcbEntry(IN PMCB Mcb,
IN ULONG SectorCount) IN VBN Vbn,
IN ULONG SectorCount)
{ {
/* Call the large function */ /* Call the large function */
return FsRtlRemoveLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly, return FsRtlRemoveLargeMcbEntry(&Mcb->DummyFieldThatSizesThisStructureCorrectly,
@ -311,59 +322,58 @@ FsRtlRemoveMcbEntry (IN PMCB Mcb,
* @unimplemented * @unimplemented
*/ */
VOID VOID
STDCALL NTAPI
FsRtlResetLargeMcb ( FsRtlResetLargeMcb(IN PLARGE_MCB Mcb,
IN PLARGE_MCB Mcb, IN BOOLEAN SelfSynchronized)
IN BOOLEAN SelfSynchronized
)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
} }
/* /*
* @unimplemented * @unimplemented
*/ */
BOOLEAN STDCALL BOOLEAN
NTAPI
FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb, FsRtlSplitLargeMcb(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn, IN LONGLONG Vbn,
IN LONGLONG Amount) IN LONGLONG Amount)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
return(FALSE); return FALSE;
} }
/* /*
* @unimplemented * @unimplemented
*/ */
VOID STDCALL VOID
NTAPI
FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb, FsRtlTruncateLargeMcb(IN PLARGE_MCB Mcb,
IN LONGLONG Vbn) IN LONGLONG Vbn)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
} }
/* /*
* FsRtlTruncateMcb: Obsolete * FsRtlTruncateMcb: Obsolete
* *
* @implemented * @implemented
*/ */
VOID STDCALL VOID
NTAPI
FsRtlTruncateMcb (IN PMCB Mcb, FsRtlTruncateMcb (IN PMCB Mcb,
IN VBN Vbn) IN VBN Vbn)
{ {
FsRtlTruncateLargeMcb (& Mcb->DummyFieldThatSizesThisStructureCorrectly, (LONGLONG) Vbn); FsRtlTruncateLargeMcb(&Mcb->DummyFieldThatSizesThisStructureCorrectly, (LONGLONG)Vbn);
} }
/* /*
* @unimplemented * @unimplemented
*/ */
VOID STDCALL VOID
NTAPI
FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb) FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
{ {
UNIMPLEMENTED; UNIMPLEMENTED;
} }
/* /*
@ -371,12 +381,11 @@ FsRtlUninitializeLargeMcb(IN PLARGE_MCB Mcb)
* *
* @implemented * @implemented
*/ */
VOID STDCALL VOID
FsRtlUninitializeMcb (IN PMCB Mcb) NTAPI
FsRtlUninitializeMcb(IN PMCB Mcb)
{ {
FsRtlUninitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly); FsRtlUninitializeLargeMcb(& Mcb->DummyFieldThatSizesThisStructureCorrectly);
} }
/* EOF */ /* EOF */

View file

@ -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 * FILE: ntoskrnl/fs/name.c
* PURPOSE: Name and DBCS Name Validation and Dissection Functions. * PURPOSE: Name and DBCS Name Validation and Dissection Functions.
* *
@ -9,9 +9,10 @@
* Filip Navara * Filip Navara
*/ */
/* INCLUDES ****************************************************************/ /* INCLUDES ****************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG #define NDEBUG
#include <internal/debug.h> #include <internal/debug.h>
@ -153,23 +154,31 @@ PUCHAR FsRtlLegalAnsiCharacterArray = LegalAnsiCharacterArray;
/* FUNCTIONS *****************************************************************/ /* FUNCTIONS *****************************************************************/
/* /*++
* NAME EXPORTED * @name FsRtlAreNamesEqual
* FsRtlAreNamesEqual@16
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* NOTE
* From Bo Branten's ntifs.h v25.
*
* @implemented * @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 BOOLEAN
STDCALL NTAPI
FsRtlAreNamesEqual(IN PUNICODE_STRING Name1, FsRtlAreNamesEqual(IN PUNICODE_STRING Name1,
IN PUNICODE_STRING Name2, IN PUNICODE_STRING Name2,
IN BOOLEAN IgnoreCase, IN BOOLEAN IgnoreCase,
@ -233,36 +242,33 @@ ManualCase:
} }
} }
/* /*++
* NAME EXPORTED * @name FsRtlDissectDbcs
* FsRtlDissectDbcs@16 * @implemented
* *
* Dissects a given path name into first and remaining part. * Dissects a given path name into first and remaining part.
* *
* ARGUMENTS * @param Name
* Name * ANSI string to dissect.
* ANSI string to dissect.
* *
* FirstPart * @param FirstPart
* Pointer to user supplied ANSI_STRING, that will * Pointer to user supplied ANSI_STRING, that will later point
* later point to the first part of the original name. * to the first part of the original name.
* *
* RemainingPart * @param RemainingPart
* Pointer to user supplied ANSI_STRING, that will * Pointer to user supplied ANSI_STRING, that will later point
* later point to the remaining part of the original name. * to the remaining part of the original name.
* *
* RETURN VALUE * @return None
* None
* *
* EXAMPLE * @remarks Example:
* Name: \test1\test2\test3 * Name: \test1\test2\test3
* FirstPart: test1 * FirstPart: test1
* RemainingPart: test2\test3 * RemainingPart: test2\test3
* *
* @implemented *--*/
*/
VOID VOID
STDCALL NTAPI
FsRtlDissectDbcs(IN ANSI_STRING Name, FsRtlDissectDbcs(IN ANSI_STRING Name,
OUT PANSI_STRING FirstPart, OUT PANSI_STRING FirstPart,
OUT PANSI_STRING RemainingPart) OUT PANSI_STRING RemainingPart)
@ -305,96 +311,94 @@ FsRtlDissectDbcs(IN ANSI_STRING Name,
return; return;
} }
/* /*++
* NAME EXPORTED * @name FsRtlDissectName
* 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
*
* @implemented * @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 VOID
STDCALL NTAPI
FsRtlDissectName(IN UNICODE_STRING Name, FsRtlDissectName(IN UNICODE_STRING Name,
OUT PUNICODE_STRING FirstPart, OUT PUNICODE_STRING FirstPart,
OUT PUNICODE_STRING RemainingPart) OUT PUNICODE_STRING RemainingPart)
{ {
USHORT NameOffset = 0; USHORT NameOffset = 0;
USHORT NameLength = 0; USHORT NameLength = 0;
USHORT Length; USHORT Length;
FirstPart->Length = 0; FirstPart->Length = 0;
FirstPart->MaximumLength = 0; FirstPart->MaximumLength = 0;
FirstPart->Buffer = NULL; FirstPart->Buffer = NULL;
RemainingPart->Length = 0; RemainingPart->Length = 0;
RemainingPart->MaximumLength = 0; RemainingPart->MaximumLength = 0;
RemainingPart->Buffer = NULL; RemainingPart->Buffer = NULL;
if (Name.Length == 0) if (Name.Length == 0)
return; return;
/* Skip leading backslash */ /* Skip leading backslash */
if (Name.Buffer[0] == L'\\') if (Name.Buffer[0] == L'\\')
NameOffset++; NameOffset++;
Length = Name.Length / sizeof(WCHAR); Length = Name.Length / sizeof(WCHAR);
/* Search for next backslash or end-of-string */ /* Search for next backslash or end-of-string */
while ((NameOffset + NameLength < Length) && while ((NameOffset + NameLength < Length) &&
(Name.Buffer[NameOffset + NameLength] != L'\\')) (Name.Buffer[NameOffset + NameLength] != L'\\'))
{ {
NameLength++; NameLength++;
} }
FirstPart->Length = FirstPart->Length =
FirstPart->MaximumLength = NameLength * sizeof(WCHAR); FirstPart->MaximumLength = NameLength * sizeof(WCHAR);
FirstPart->Buffer = &Name.Buffer[NameOffset]; FirstPart->Buffer = &Name.Buffer[NameOffset];
NameOffset += NameLength + 1; NameOffset += NameLength + 1;
if (NameOffset < Length) if (NameOffset < Length)
{ {
RemainingPart->Length = (Length - NameOffset) * sizeof(WCHAR); RemainingPart->Length = (Length - NameOffset) * sizeof(WCHAR);
RemainingPart->MaximumLength = (Length - NameOffset) * sizeof(WCHAR); RemainingPart->MaximumLength = (Length - NameOffset) * sizeof(WCHAR);
RemainingPart->Buffer = &Name.Buffer[NameOffset]; RemainingPart->Buffer = &Name.Buffer[NameOffset];
} }
} }
/* /*++
* NAME EXPORTED * @name FsRtlDoesDbcsContainWildCards
* FsRtlDoesDbcsContainWildCards@4
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @implemented * @implemented
*/ *
* FILLME
*
* @param Name
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
BOOLEAN BOOLEAN
STDCALL NTAPI
FsRtlDoesDbcsContainWildCards(IN PANSI_STRING Name) FsRtlDoesDbcsContainWildCards(IN PANSI_STRING Name)
{ {
ULONG i; ULONG i;
@ -415,23 +419,22 @@ FsRtlDoesDbcsContainWildCards(IN PANSI_STRING Name)
return FALSE; return FALSE;
} }
/* /*++
* NAME EXPORTED * @name FsRtlDoesNameContainWildCards
* FsRtlDoesNameContainWildCards@4
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* NOTE
* From Bo Branten's ntifs.h v12.
*
* @implemented * @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 BOOLEAN
STDCALL NTAPI
FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name) FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
{ {
PWCHAR Ptr; PWCHAR Ptr;
@ -452,60 +455,89 @@ FsRtlDoesNameContainWildCards(IN PUNICODE_STRING Name)
return FALSE; return FALSE;
} }
/* /*++
* NAME EXPORTED * @name FsRtlIsDbcsInExpression
* FsRtlIsDbcsInExpression@8
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Expression
* FILLME
*
* @param Name
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
BOOLEAN BOOLEAN
STDCALL NTAPI
FsRtlIsDbcsInExpression(IN PANSI_STRING Expression, FsRtlIsDbcsInExpression(IN PANSI_STRING Expression,
IN PANSI_STRING Name) IN PANSI_STRING Name)
{ {
return FALSE; UNIMPLEMENTED;
return FALSE;
} }
/* /*++
* NAME EXPORTED * @name FsRtlIsFatDbcsLegal
* FsRtlIsFatDbcsLegal@20
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @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 BOOLEAN
STDCALL NTAPI
FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName, FsRtlIsFatDbcsLegal(IN ANSI_STRING DbcsName,
IN BOOLEAN WildCardsPermissible, IN BOOLEAN WildCardsPermissible,
IN BOOLEAN PathNamePermissible, IN BOOLEAN PathNamePermissible,
IN BOOLEAN LeadingBackslashPermissible) IN BOOLEAN LeadingBackslashPermissible)
{ {
return FALSE; UNIMPLEMENTED;
return FALSE;
} }
/* /*++
* NAME EXPORTED * @name FsRtlIsHpfsDbcsLegal
* FsRtlIsHpfsDbcsLegal@20
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @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 BOOLEAN
STDCALL STDCALL
FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName, FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
@ -513,108 +545,111 @@ FsRtlIsHpfsDbcsLegal(IN ANSI_STRING DbcsName,
IN BOOLEAN PathNamePermissible, IN BOOLEAN PathNamePermissible,
IN BOOLEAN LeadingBackslashPermissible) IN BOOLEAN LeadingBackslashPermissible)
{ {
return FALSE; UNIMPLEMENTED;
return FALSE;
} }
/* /*++
* NAME EXPORTED * @name FsRtlIsNameInExpression
* 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).
*
* @implemented * @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 BOOLEAN
STDCALL NTAPI
FsRtlIsNameInExpression(IN PUNICODE_STRING Expression, FsRtlIsNameInExpression(IN PUNICODE_STRING Expression,
IN PUNICODE_STRING Name, IN PUNICODE_STRING Name,
IN BOOLEAN IgnoreCase, IN BOOLEAN IgnoreCase,
IN PWCHAR UpcaseTable OPTIONAL) IN PWCHAR UpcaseTable OPTIONAL)
{ {
USHORT ExpressionPosition, NamePosition; USHORT ExpressionPosition, NamePosition;
UNICODE_STRING TempExpression, TempName; UNICODE_STRING TempExpression, TempName;
ExpressionPosition = 0; ExpressionPosition = 0;
NamePosition = 0; NamePosition = 0;
while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) && while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
NamePosition < (Name->Length / sizeof(WCHAR))) NamePosition < (Name->Length / sizeof(WCHAR)))
{ {
if (Expression->Buffer[ExpressionPosition] == L'*') if (Expression->Buffer[ExpressionPosition] == L'*')
{ {
ExpressionPosition++; ExpressionPosition++;
if (ExpressionPosition == (Expression->Length / sizeof(WCHAR))) 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.Length =
TempExpression.MaximumLength = TempExpression.MaximumLength =
Expression->Length - (ExpressionPosition * sizeof(WCHAR)); Expression->Length - (ExpressionPosition * sizeof(WCHAR));
TempExpression.Buffer = Expression->Buffer + ExpressionPosition; TempExpression.Buffer = Expression->Buffer + ExpressionPosition;
TempName.Length = TempName.Length =
TempName.MaximumLength = TempName.MaximumLength =
Name->Length - (NamePosition * sizeof(WCHAR)); Name->Length - (NamePosition * sizeof(WCHAR));
TempName.Buffer = Name->Buffer + NamePosition; TempName.Buffer = Name->Buffer + NamePosition;
/* FIXME: Rewrite to get rid of recursion */ /* FIXME: Rewrite to get rid of recursion */
if (FsRtlIsNameInExpression(&TempExpression, &TempName, if (FsRtlIsNameInExpression(&TempExpression, &TempName,
IgnoreCase, UpcaseTable)) IgnoreCase, UpcaseTable))
{ {
return TRUE; return TRUE;
} }
NamePosition++; NamePosition++;
} }
} }
else else
{ {
/* FIXME: Take UpcaseTable into account! */ /* FIXME: Take UpcaseTable into account! */
if (Expression->Buffer[ExpressionPosition] == L'?' || if (Expression->Buffer[ExpressionPosition] == L'?' ||
(IgnoreCase && (IgnoreCase &&
RtlUpcaseUnicodeChar(Expression->Buffer[ExpressionPosition]) == RtlUpcaseUnicodeChar(Expression->Buffer[ExpressionPosition]) ==
RtlUpcaseUnicodeChar(Name->Buffer[NamePosition])) || RtlUpcaseUnicodeChar(Name->Buffer[NamePosition])) ||
(!IgnoreCase && (!IgnoreCase &&
Expression->Buffer[ExpressionPosition] == Expression->Buffer[ExpressionPosition] ==
Name->Buffer[NamePosition])) Name->Buffer[NamePosition]))
{ {
NamePosition++; NamePosition++;
ExpressionPosition++; ExpressionPosition++;
} }
else else
{ {
return FALSE; return FALSE;
} }
} }
} }
/* Handle matching of "f0_*.*" expression to "f0_000" file name. */ /* Handle matching of "f0_*.*" expression to "f0_000" file name. */
if (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) && if (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
Expression->Buffer[ExpressionPosition] == L'.') Expression->Buffer[ExpressionPosition] == L'.')
{ {
while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) && while (ExpressionPosition < (Expression->Length / sizeof(WCHAR)) &&
(Expression->Buffer[ExpressionPosition] == L'.' || (Expression->Buffer[ExpressionPosition] == L'.' ||
Expression->Buffer[ExpressionPosition] == L'*' || Expression->Buffer[ExpressionPosition] == L'*' ||
Expression->Buffer[ExpressionPosition] == L'?')) Expression->Buffer[ExpressionPosition] == L'?'))
{ {
ExpressionPosition++; ExpressionPosition++;
} }
} }
if (ExpressionPosition == (Expression->Length / sizeof(WCHAR)) && if (ExpressionPosition == (Expression->Length / sizeof(WCHAR)) &&
NamePosition == (Name->Length / sizeof(WCHAR))) NamePosition == (Name->Length / sizeof(WCHAR)))
{ {
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
} }
/* EOF */ /* EOF */

File diff suppressed because it is too large Load diff

View file

@ -1,141 +1,175 @@
/* $Id$ /* $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 * FILE: ntoskrnl/fs/oplock.c
* PURPOSE: No purpose listed. * PURPOSE: Oplock-functions
* *
* PROGRAMMERS: Emanuele Aliberti * PROGRAMMERS: Emanuele Aliberti
* Eric Kohl * Eric Kohl
*/ */
/* INCLUDES *****************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h>
/********************************************************************** /* FUNCTIONS *****************************************************************/
* NAME EXPORTED
* FsRtlCheckOplock@20 /*++
* * @name FsRtlCheckOplock
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Oplock
* FILLME
*
* @param Irp
* FILLME
*
* @param Context
* FILLME
*
* @param CompletionRoutine
* FILLME
*
* @param PostIrpRoutine
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
NTSTATUS NTSTATUS
NTAPI NTAPI
FsRtlCheckOplock(IN POPLOCK Oplock, FsRtlCheckOplock(IN POPLOCK Oplock,
IN PIRP Irp, IN PIRP Irp,
IN PVOID Context, IN PVOID Context,
IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL, IN POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine OPTIONAL,
IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL) IN POPLOCK_FS_PREPOST_IRP PostIrpRoutine OPTIONAL)
{ {
return(STATUS_NOT_IMPLEMENTED); UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
} }
/*++
/********************************************************************** * @name FsRtlCurrentBatchOplock
* NAME EXPORTED
* FsRtlCurrentBatchOplock@4
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Oplock
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
BOOLEAN BOOLEAN
NTAPI NTAPI
FsRtlCurrentBatchOplock(IN POPLOCK Oplock) FsRtlCurrentBatchOplock(IN POPLOCK Oplock)
{ {
return(FALSE); UNIMPLEMENTED;
return FALSE;
} }
/*++
/********************************************************************** * @name FsRtlInitializeOplock
* NAME EXPORTED * @unimplemented
* FsRtlInitializeOplock@4
* *
* DESCRIPTION * FILLME
* *
* ARGUMENTS * @param Oplock
* FILLME
* *
* RETURN VALUE * @return None
* *
* NOTE * @remarks None
* Obsolete function.
* *
* @implemented *--*/
*/
VOID VOID
NTAPI NTAPI
FsRtlInitializeOplock(IN OUT POPLOCK Oplock) FsRtlInitializeOplock(IN OUT POPLOCK Oplock)
{ {
UNIMPLEMENTED;
} }
/*++
/********************************************************************** * @name FsRtlOplockFsctrl
* NAME EXPORTED
* FsRtlOplockFsctrl@12
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Oplock
* FILLME
*
* @param Irp
* FILLME
*
* @param OpenCount
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
NTSTATUS NTSTATUS
NTAPI NTAPI
FsRtlOplockFsctrl(IN POPLOCK Oplock, FsRtlOplockFsctrl(IN POPLOCK Oplock,
IN PIRP Irp, IN PIRP Irp,
IN ULONG OpenCount) IN ULONG OpenCount)
{ {
return(STATUS_NOT_IMPLEMENTED); UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
} }
/*++
/********************************************************************** * @name FsRtlOplockIsFastIoPossible
* NAME EXPORTED
* FsRtlOplockIsFastIoPossible@4
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Oplock
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
BOOLEAN BOOLEAN
NTAPI NTAPI
FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock) FsRtlOplockIsFastIoPossible(IN POPLOCK Oplock)
{ {
return(FALSE); UNIMPLEMENTED;
return FALSE;
} }
/*++
/********************************************************************** * @name FsRtlUninitializeOplock
* NAME EXPORTED * @unimplemented
* FsRtlUninitializeOplock@4
* *
* DESCRIPTION * FILLME
* *
* ARGUMENTS * @param Oplock
* FILLME
* *
* RETURN VALUE * @return None
* *
* @implemented * @remarks None
*/ *
*--*/
VOID VOID
NTAPI NTAPI
FsRtlUninitializeOplock(IN POPLOCK Oplock) FsRtlUninitializeOplock(IN POPLOCK Oplock)
{ {
UNIMPLEMENTED;
} }
/* EOF */ /* EOF */

View file

@ -1,159 +1,171 @@
/* $Id$ /* $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 * FILE: ntoskrnl/fs/pool.c
* PURPOSE: No purpose listed. * PURPOSE: No purpose listed.
* *
* PROGRAMMERS: No programmer listed. * PROGRAMMERS: No programmer listed.
*/ */
/* INCLUDES *****************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h>
/********************************************************************** /* FUNCTIONS *****************************************************************/
* NAME EXPORTED
* FsRtlAllocatePool@8 /*++
* * @name FsRtlAllocatePool
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* NOTE
* IFS_POOL_TAG is "FSrt" in mem view.
*
* @implemented * @implemented
*/ *
* FILLME
*
* @param PoolType
* FILLME
*
* @param NumberOfBytes
* FILLME
*
* @return None
*
* @remarks IFS_POOL_TAG is "FSrt" in mem view.
*
*--*/
PVOID PVOID
NTAPI NTAPI
FsRtlAllocatePool ( FsRtlAllocatePool(IN POOL_TYPE PoolType,
IN POOL_TYPE PoolType, IN ULONG NumberOfBytes)
IN ULONG NumberOfBytes
)
{ {
PVOID Address; PVOID Address;
Address = ExAllocatePoolWithTag ( Address = ExAllocatePoolWithTag(PoolType,
PoolType, NumberOfBytes,
NumberOfBytes, IFS_POOL_TAG);
IFS_POOL_TAG
); if (NULL == Address)
if (NULL == Address) {
{ ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES); }
}
return Address; return Address;
} }
/*++
/********************************************************************** * @name FsRtlAllocatePoolWithQuota
* NAME EXPORTED
* FsRtlAllocatePoolWithQuota@8
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* NOTE
* IFS_POOL_TAG is "FSrt" in mem view.
*
* @implemented * @implemented
*/ *
* FILLME
*
* @param PoolType
* FILLME
*
* @param NumberOfBytes
* FILLME
*
* @return None
*
* @remarks IFS_POOL_TAG is "FSrt" in mem view.
*
*--*/
PVOID PVOID
NTAPI NTAPI
FsRtlAllocatePoolWithQuota ( FsRtlAllocatePoolWithQuota(IN POOL_TYPE PoolType,
IN POOL_TYPE PoolType, IN ULONG NumberOfBytes)
IN ULONG NumberOfBytes
)
{ {
PVOID Address; PVOID Address;
Address = ExAllocatePoolWithQuotaTag ( Address = ExAllocatePoolWithQuotaTag(PoolType,
PoolType, NumberOfBytes,
NumberOfBytes, IFS_POOL_TAG);
IFS_POOL_TAG if (NULL == Address)
); {
if (NULL == Address) ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
{ }
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES); return Address;
}
return Address;
} }
/*++
/********************************************************************** * @name FsRtlAllocatePoolWithQuotaTag
* NAME EXPORTED
* FsRtlAllocatePoolWithQuotaTag@12
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @implemented * @implemented
*/ *
* FILLME
*
* @param PoolType
* FILLME
*
* @param NumberOfBytes
* FILLME
*
* @param Tag
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
PVOID PVOID
NTAPI NTAPI
FsRtlAllocatePoolWithQuotaTag ( FsRtlAllocatePoolWithQuotaTag (IN POOL_TYPE PoolType,
IN POOL_TYPE PoolType, IN ULONG NumberOfBytes,
IN ULONG NumberOfBytes, IN ULONG Tag)
IN ULONG Tag
)
{ {
PVOID Address; PVOID Address;
Address = ExAllocatePoolWithQuotaTag ( Address = ExAllocatePoolWithQuotaTag(PoolType,
PoolType, NumberOfBytes,
NumberOfBytes, Tag);
Tag
); if (NULL == Address)
if (NULL == Address) {
{ ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES); }
}
return Address; return Address;
} }
/*++
/********************************************************************** * @name FsRtlAllocatePoolWithTag
* NAME EXPORTED
* FsRtlAllocatePoolWithTag@12
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @implemented * @implemented
*/ *
* FILLME
*
* @param PoolType
* FILLME
*
* @param NumberOfBytes
* FILLME
*
* @param Tag
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
PVOID PVOID
NTAPI NTAPI
FsRtlAllocatePoolWithTag ( FsRtlAllocatePoolWithTag(IN POOL_TYPE PoolType,
IN POOL_TYPE PoolType, IN ULONG NumberOfBytes,
IN ULONG NumberOfBytes, IN ULONG Tag)
IN ULONG Tag
)
{ {
PVOID Address; PVOID Address;
Address = ExAllocatePoolWithTag ( Address = ExAllocatePoolWithTag(PoolType,
PoolType, NumberOfBytes,
NumberOfBytes, Tag);
Tag
); if (NULL == Address)
if (NULL == Address) {
{ ExRaiseStatus(STATUS_INSUFFICIENT_RESOURCES);
ExRaiseStatus (STATUS_INSUFFICIENT_RESOURCES); }
}
return Address; return Address;
} }
/* EOF */ /* EOF */

View file

@ -1,133 +1,178 @@
/* $Id$ /* $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/tunnel.c * FILE: ntoskrnl/fs/tunnel.c
* PURPOSE: No purpose listed. * PURPOSE: No purpose listed.
* *
* PROGRAMMERS: Emanuele Aliberti * PROGRAMMERS: Emanuele Aliberti
*/ */
/* INCLUDES ******************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h>
/********************************************************************** /* FUNCTIONS *****************************************************************/
* NAME EXPORTED
* FsRtlAddToTunnelCache@32 /*++
* * @name FsRtlAddToTunnelCache
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @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 VOID
STDCALL NTAPI
FsRtlAddToTunnelCache ( FsRtlAddToTunnelCache(IN PTUNNEL Cache,
IN PTUNNEL Cache, IN ULONGLONG DirectoryKey,
IN ULONGLONG DirectoryKey, IN PUNICODE_STRING ShortName,
IN PUNICODE_STRING ShortName, IN PUNICODE_STRING LongName,
IN PUNICODE_STRING LongName, IN BOOLEAN KeyByShortName,
IN BOOLEAN KeyByShortName, IN ULONG DataLength,
IN ULONG DataLength, IN PVOID Data)
IN PVOID Data
)
{ {
UNIMPLEMENTED;
} }
/*++
/********************************************************************** * @name FsRtlDeleteKeyFromTunnelCache
* NAME EXPORTED
* FsRtlDeleteKeyFromTunnelCache@12
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Cache
* FILLME
*
* @param DirectoryKey
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
VOID VOID
STDCALL NTAPI
FsRtlDeleteKeyFromTunnelCache ( FsRtlDeleteKeyFromTunnelCache(IN PTUNNEL Cache,
IN PTUNNEL Cache, IN ULONGLONG DirectoryKey)
IN ULONGLONG DirectoryKey
)
{ {
UNIMPLEMENTED;
} }
/*++
/********************************************************************** * @name FsRtlDeleteTunnelCache
* NAME EXPORTED
* FsRtlDeleteTunnelCache@4
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Cache
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
VOID VOID
STDCALL NTAPI
FsRtlDeleteTunnelCache ( FsRtlDeleteTunnelCache(IN PTUNNEL Cache)
IN PTUNNEL Cache
)
{ {
UNIMPLEMENTED;
} }
/*++
/********************************************************************** * @name FsRtlFindInTunnelCache
* NAME EXPORTED
* FsRtlFindInTunnelCache@32
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @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 BOOLEAN
STDCALL NTAPI
FsRtlFindInTunnelCache ( FsRtlFindInTunnelCache(IN PTUNNEL Cache,
IN PTUNNEL Cache, IN ULONGLONG DirectoryKey,
IN ULONGLONG DirectoryKey, IN PUNICODE_STRING Name,
IN PUNICODE_STRING Name, OUT PUNICODE_STRING ShortName,
OUT PUNICODE_STRING ShortName, OUT PUNICODE_STRING LongName,
OUT PUNICODE_STRING LongName, IN OUT PULONG DataLength,
IN OUT PULONG DataLength, OUT PVOID Data)
OUT PVOID Data
)
{ {
UNIMPLEMENTED;
return FALSE; return FALSE;
} }
/*++
/********************************************************************** * @name FsRtlDeleteTunnelCache
* NAME EXPORTED
* FsRtlInitializeTunnelCache@4
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Cache
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
VOID VOID
STDCALL NTAPI
FsRtlInitializeTunnelCache ( FsRtlInitializeTunnelCache(IN PTUNNEL Cache)
IN PTUNNEL Cache
)
{ {
UNIMPLEMENTED;
} }
/* EOF */ /* EOF */

View file

@ -1,54 +1,70 @@
/* $Id$ /* $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 * FILE: ntoskrnl/fs/unc.c
* PURPOSE: No purpose listed. * PURPOSE: Functions to work with UNC providers
* *
* PROGRAMMERS: Emanuele Aliberti * PROGRAMMERS: Emanuele Aliberti
* Eric Kohl * Eric Kohl
*/ */
/* INCLUDES *****************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h>
/********************************************************************** /* FUNCTIONS *****************************************************************/
* NAME EXPORTED
* FsRtlDeregisterUncProvider@4 /*++
* * @name FsRtlDeregisterUncProvider
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Handle
* FILLME
*
* @return None
*
* @remarks None
*
*--*/
VOID VOID
NTAPI NTAPI
FsRtlDeregisterUncProvider(IN HANDLE Handle) FsRtlDeregisterUncProvider(IN HANDLE Handle)
{ {
UNIMPLEMENTED;
} }
/*++
/********************************************************************** * @name FsRtlRegisterUncProvider
* NAME EXPORTED
* FsRtlRegisterUncProvider@12
*
* DESCRIPTION
*
* ARGUMENTS
*
* RETURN VALUE
*
* @unimplemented * @unimplemented
*/ *
* FILLME
*
* @param Handle
* FILLME
*
* @param RedirectorDeviceName
* FILLME
*
* @param MailslotsSupported
*
* @return None
*
* @remarks None
*
*--*/
NTSTATUS NTSTATUS
NTAPI NTAPI
FsRtlRegisterUncProvider(IN OUT PHANDLE Handle, FsRtlRegisterUncProvider(IN OUT PHANDLE Handle,
IN PUNICODE_STRING RedirectorDeviceName, IN PUNICODE_STRING RedirectorDeviceName,
IN BOOLEAN MailslotsSupported) IN BOOLEAN MailslotsSupported)
{ {
UNIMPLEMENTED;
return(STATUS_NOT_IMPLEMENTED); return(STATUS_NOT_IMPLEMENTED);
} }

View file

@ -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 * FILE: ntoskrnl/fs/util.c
* PURPOSE: Misc Utility Functions for File System Drivers * PURPOSE: Misc Utility Functions for File System Drivers
* *
* PROGRAMMERS: Alex Ionescu (alex@relsoft.net) * PROGRAMMERS: Alex Ionescu (alex@relsoft.net)
Emanuele Aliberti
*/ */
/* INCLUDES *****************************************************************/ /* INCLUDES *****************************************************************/
#include <ntoskrnl.h> #include <ntoskrnl.h>
#define NDEBUG
#include <internal/debug.h> #include <internal/debug.h>
#define FSRTL_MAX_RESOURCES 16 #define FSRTL_MAX_RESOURCES 16
@ -21,7 +24,7 @@
/* GLOBALS *******************************************************************/ /* GLOBALS *******************************************************************/
BOOLEAN STDCALL MmIsFileAPagingFile(PFILE_OBJECT FileObject); BOOLEAN STDCALL MmIsFileAPagingFile(PFILE_OBJECT FileObject);
VOID STDCALL INIT_FUNCTION RtlpInitializeResources(VOID); VOID NTAPI INIT_FUNCTION RtlpInitializeResources(VOID);
static ULONG FsRtlpAllocatedResources = 0; static ULONG FsRtlpAllocatedResources = 0;
static PERESOURCE FsRtlpResources; static PERESOURCE FsRtlpResources;
@ -32,7 +35,7 @@ static PERESOURCE FsRtlpResources;
/* PRIVATE FUNCTIONS**********************************************************/ /* PRIVATE FUNCTIONS**********************************************************/
VOID VOID
STDCALL NTAPI
INIT_FUNCTION INIT_FUNCTION
RtlpInitializeResources(VOID) RtlpInitializeResources(VOID)
{ {
@ -67,7 +70,7 @@ RtlpInitializeResources(VOID)
* *
*--*/ *--*/
BOOLEAN BOOLEAN
STDCALL NTAPI
FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus) FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus)
{ {
return((NT_SUCCESS(NtStatus)) || return((NT_SUCCESS(NtStatus)) ||
@ -91,7 +94,7 @@ FsRtlIsTotalDeviceFailure(IN NTSTATUS NtStatus)
* *
*--*/ *--*/
BOOLEAN BOOLEAN
STDCALL NTAPI
FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus) FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
{ {
return((STATUS_DATATYPE_MISALIGNMENT == NtStatus) || return((STATUS_DATATYPE_MISALIGNMENT == NtStatus) ||
@ -115,7 +118,7 @@ FsRtlIsNtstatusExpected(IN NTSTATUS NtStatus)
* *
*--*/ *--*/
BOOLEAN BOOLEAN
STDCALL NTAPI
FsRtlIsPagingFile(IN PFILE_OBJECT FileObject) FsRtlIsPagingFile(IN PFILE_OBJECT FileObject)
{ {
return MmIsFileAPagingFile(FileObject); return MmIsFileAPagingFile(FileObject);
@ -141,7 +144,7 @@ FsRtlIsPagingFile(IN PFILE_OBJECT FileObject)
* *
*--*/ *--*/
NTSTATUS NTSTATUS
STDCALL NTAPI
FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize, FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
IN NTSTATUS NormalizedNtStatus) IN NTSTATUS NormalizedNtStatus)
{ {
@ -162,7 +165,7 @@ FsRtlNormalizeNtstatus(IN NTSTATUS NtStatusToNormalize,
* *
*--*/ *--*/
PERESOURCE PERESOURCE
STDCALL NTAPI
FsRtlAllocateResource(VOID) FsRtlAllocateResource(VOID)
{ {
/* Return a pre-allocated ERESOURCE */ /* Return a pre-allocated ERESOURCE */
@ -185,7 +188,7 @@ FsRtlAllocateResource(VOID)
* *
*--*/ *--*/
NTSTATUS NTSTATUS
STDCALL NTAPI
FsRtlBalanceReads(PDEVICE_OBJECT TargetDevice) FsRtlBalanceReads(PDEVICE_OBJECT TargetDevice)
{ {
PIRP Irp; PIRP Irp;
@ -243,7 +246,7 @@ FsRtlBalanceReads(PDEVICE_OBJECT TargetDevice)
* *
*--*/ *--*/
VOID VOID
STDCALL NTAPI
FsRtlPostPagingFileStackOverflow(IN PVOID Context, FsRtlPostPagingFileStackOverflow(IN PVOID Context,
IN PKEVENT Event, IN PKEVENT Event,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine) IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine)
@ -269,7 +272,7 @@ FsRtlPostPagingFileStackOverflow(IN PVOID Context,
* *
*--*/ *--*/
VOID VOID
STDCALL NTAPI
FsRtlPostStackOverflow(IN PVOID Context, FsRtlPostStackOverflow(IN PVOID Context,
IN PKEVENT Event, IN PKEVENT Event,
IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine) IN PFSRTL_STACK_OVERFLOW_ROUTINE StackOverflowRoutine)
@ -289,7 +292,7 @@ FsRtlPostStackOverflow(IN PVOID Context,
* *
*--*/ *--*/
NTSTATUS NTSTATUS
STDCALL NTAPI
FsRtlSyncVolumes(DWORD Unknown0, FsRtlSyncVolumes(DWORD Unknown0,
DWORD Unknown1, DWORD Unknown1,
DWORD Unknown2) DWORD Unknown2)