mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +00:00
Added Stubs for Cache Manager functions in their appropriate file.
svn path=/trunk/; revision=9789
This commit is contained in:
parent
1fe3a2d6c3
commit
821f740fc7
6 changed files with 634 additions and 591 deletions
|
@ -40,3 +40,125 @@ CcInit(VOID)
|
||||||
{
|
{
|
||||||
CcInitView();
|
CcInitView();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
LARGE_INTEGER
|
||||||
|
STDCALL
|
||||||
|
CcGetFlushedValidData (
|
||||||
|
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||||
|
IN BOOLEAN BcbListHeld
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
|
LARGE_INTEGER i;
|
||||||
|
i.QuadPart = 0;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcRepinBcb (
|
||||||
|
IN PVOID Bcb
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcRemapBcb (
|
||||||
|
IN PVOID Bcb
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcScheduleReadAhead (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN ULONG Length
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcSetAdditionalCacheAttributes (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN BOOLEAN DisableReadAhead,
|
||||||
|
IN BOOLEAN DisableWriteBehind
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcSetBcbOwnerPointer (
|
||||||
|
IN PVOID Bcb,
|
||||||
|
IN PVOID Owner
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcSetDirtyPageThreshold (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN ULONG DirtyPageThreshold
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcSetReadAheadGranularity (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN ULONG Granularity
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcUnpinRepinnedBcb (
|
||||||
|
IN PVOID Bcb,
|
||||||
|
IN BOOLEAN WriteThrough,
|
||||||
|
IN PIO_STATUS_BLOCK IoStatus
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: copy.c,v 1.26 2004/06/20 02:10:07 vizzini Exp $
|
/* $Id: copy.c,v 1.27 2004/06/21 04:11:44 ion Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -284,7 +284,6 @@ WriteCacheSegment(PCACHE_SEGMENT CacheSeg)
|
||||||
return(STATUS_SUCCESS);
|
return(STATUS_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* STUBS */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
|
@ -300,442 +299,6 @@ CcCanIWrite (
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcDeferWrite (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PCC_POST_DEFERRED_WRITE PostRoutine,
|
|
||||||
IN PVOID Context1,
|
|
||||||
IN PVOID Context2,
|
|
||||||
IN ULONG BytesToWrite,
|
|
||||||
IN BOOLEAN Retrying
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcFastCopyRead (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN ULONG FileOffset,
|
|
||||||
IN ULONG Length,
|
|
||||||
IN ULONG PageCount,
|
|
||||||
OUT PVOID Buffer,
|
|
||||||
OUT PIO_STATUS_BLOCK IoStatus
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcFastCopyWrite (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN ULONG Length,
|
|
||||||
IN PVOID Buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
LARGE_INTEGER
|
|
||||||
STDCALL
|
|
||||||
CcGetDirtyPages (
|
|
||||||
IN PVOID LogHandle,
|
|
||||||
IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
|
|
||||||
IN PVOID Context1,
|
|
||||||
IN PVOID Context2
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
|
|
||||||
LARGE_INTEGER i;
|
|
||||||
i.QuadPart = 0;
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
PFILE_OBJECT
|
|
||||||
STDCALL
|
|
||||||
CcGetFileObjectFromBcb (
|
|
||||||
IN PVOID Bcb
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcInitializeCacheMap (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PCC_FILE_SIZES FileSizes,
|
|
||||||
IN BOOLEAN PinAccess,
|
|
||||||
IN PCACHE_MANAGER_CALLBACKS CallBacks,
|
|
||||||
IN PVOID LazyWriterContext
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcIsThereDirtyData (
|
|
||||||
IN PVPB Vpb
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
LARGE_INTEGER
|
|
||||||
STDCALL
|
|
||||||
CcGetLsnForFileObject (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
OUT PLARGE_INTEGER OldestLsn OPTIONAL
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
|
|
||||||
LARGE_INTEGER i;
|
|
||||||
i.QuadPart = 0;
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
LARGE_INTEGER
|
|
||||||
STDCALL
|
|
||||||
CcGetFlushedValidData (
|
|
||||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
|
||||||
IN BOOLEAN BcbListHeld
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
|
|
||||||
LARGE_INTEGER i;
|
|
||||||
i.QuadPart = 0;
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcMdlRead (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN ULONG Length,
|
|
||||||
OUT PMDL * MdlChain,
|
|
||||||
OUT PIO_STATUS_BLOCK IoStatus
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcMdlWriteComplete (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN PMDL MdlChain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcMdlWriteAbort (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PMDL MdlChain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcPinMappedData (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN ULONG Length,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
OUT PVOID * Bcb
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcPinRead (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN ULONG Length,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
OUT PVOID * Bcb,
|
|
||||||
OUT PVOID * Buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcPrepareMdlWrite (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN ULONG Length,
|
|
||||||
OUT PMDL * MdlChain,
|
|
||||||
OUT PIO_STATUS_BLOCK IoStatus
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcPreparePinWrite (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN ULONG Length,
|
|
||||||
IN BOOLEAN Zero,
|
|
||||||
IN BOOLEAN Wait,
|
|
||||||
OUT PVOID * Bcb,
|
|
||||||
OUT PVOID * Buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcPurgeCacheSection (
|
|
||||||
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
|
||||||
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
|
||||||
IN ULONG Length,
|
|
||||||
IN BOOLEAN UninitializeCacheMaps
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcRepinBcb (
|
|
||||||
IN PVOID Bcb
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcRemapBcb (
|
|
||||||
IN PVOID Bcb
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcScheduleReadAhead (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER FileOffset,
|
|
||||||
IN ULONG Length
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcSetAdditionalCacheAttributes (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN BOOLEAN DisableReadAhead,
|
|
||||||
IN BOOLEAN DisableWriteBehind
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcSetBcbOwnerPointer (
|
|
||||||
IN PVOID Bcb,
|
|
||||||
IN PVOID Owner
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcSetDirtyPageThreshold (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN ULONG DirtyPageThreshold
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcSetLogHandleForFile (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PVOID LogHandle,
|
|
||||||
IN PFLUSH_TO_LSN FlushToLsnRoutine
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcSetReadAheadGranularity (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN ULONG Granularity
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
BOOLEAN
|
|
||||||
STDCALL
|
|
||||||
CcUninitializeCacheMap (
|
|
||||||
IN PFILE_OBJECT FileObject,
|
|
||||||
IN PLARGE_INTEGER TruncateSize OPTIONAL,
|
|
||||||
IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcUnpinDataForThread (
|
|
||||||
IN PVOID Bcb,
|
|
||||||
IN ERESOURCE_THREAD ResourceThreadId
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID
|
|
||||||
STDCALL
|
|
||||||
CcUnpinRepinnedBcb (
|
|
||||||
IN PVOID Bcb,
|
|
||||||
IN BOOLEAN WriteThrough,
|
|
||||||
IN PIO_STATUS_BLOCK IoStatus
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
NTSTATUS
|
|
||||||
STDCALL
|
|
||||||
CcWaitForCurrentLazyWriterActivity (
|
|
||||||
VOID
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* STUBS END!!! */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
|
@ -978,6 +541,69 @@ CcCopyWrite (IN PFILE_OBJECT FileObject,
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcDeferWrite (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PCC_POST_DEFERRED_WRITE PostRoutine,
|
||||||
|
IN PVOID Context1,
|
||||||
|
IN PVOID Context2,
|
||||||
|
IN ULONG BytesToWrite,
|
||||||
|
IN BOOLEAN Retrying
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
CcFastCopyRead (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN ULONG FileOffset,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN ULONG PageCount,
|
||||||
|
OUT PVOID Buffer,
|
||||||
|
OUT PIO_STATUS_BLOCK IoStatus
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
CcFastCopyWrite (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN PVOID Buffer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
CcWaitForCurrentLazyWriterActivity (
|
||||||
|
VOID
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -1139,4 +765,3 @@ CcZeroData (IN PFILE_OBJECT FileObject,
|
||||||
}
|
}
|
||||||
return(TRUE);
|
return(TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
238
reactos/ntoskrnl/cc/fs.c
Normal file
238
reactos/ntoskrnl/cc/fs.c
Normal file
|
@ -0,0 +1,238 @@
|
||||||
|
/* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS kernel
|
||||||
|
* FILE: ntoskrnl/cc/fs.c
|
||||||
|
* PURPOSE: Implements cache managers functions useful for File Systems
|
||||||
|
* PROGRAMMER: Alex Ionescu
|
||||||
|
* UPDATE HISTORY:
|
||||||
|
* Created 20/06/04
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES ******************************************************************/
|
||||||
|
|
||||||
|
#include <ddk/ntddk.h>
|
||||||
|
#include <ddk/ntifs.h>
|
||||||
|
#include <internal/mm.h>
|
||||||
|
#include <internal/cc.h>
|
||||||
|
#include <internal/pool.h>
|
||||||
|
#include <internal/io.h>
|
||||||
|
#include <ntos/minmax.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <internal/debug.h>
|
||||||
|
|
||||||
|
/* GLOBALS *****************************************************************/
|
||||||
|
|
||||||
|
extern FAST_MUTEX ViewLock;
|
||||||
|
extern ULONG DirtyPageCount;
|
||||||
|
|
||||||
|
NTSTATUS CcRosInternalFreeCacheSegment(PCACHE_SEGMENT CacheSeg);
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
LARGE_INTEGER
|
||||||
|
STDCALL
|
||||||
|
CcGetDirtyPages (
|
||||||
|
IN PVOID LogHandle,
|
||||||
|
IN PDIRTY_PAGE_ROUTINE DirtyPageRoutine,
|
||||||
|
IN PVOID Context1,
|
||||||
|
IN PVOID Context2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
|
LARGE_INTEGER i;
|
||||||
|
i.QuadPart = 0;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
PFILE_OBJECT
|
||||||
|
STDCALL
|
||||||
|
CcGetFileObjectFromBcb (
|
||||||
|
IN PVOID Bcb
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
LARGE_INTEGER
|
||||||
|
STDCALL
|
||||||
|
CcGetLsnForFileObject (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
OUT PLARGE_INTEGER OldestLsn OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
|
||||||
|
LARGE_INTEGER i;
|
||||||
|
i.QuadPart = 0;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcInitializeCacheMap (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PCC_FILE_SIZES FileSizes,
|
||||||
|
IN BOOLEAN PinAccess,
|
||||||
|
IN PCACHE_MANAGER_CALLBACKS CallBacks,
|
||||||
|
IN PVOID LazyWriterContext
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
CcIsThereDirtyData (
|
||||||
|
IN PVPB Vpb
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
CcPurgeCacheSection (
|
||||||
|
IN PSECTION_OBJECT_POINTERS SectionObjectPointer,
|
||||||
|
IN PLARGE_INTEGER FileOffset OPTIONAL,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN BOOLEAN UninitializeCacheMaps
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID STDCALL
|
||||||
|
CcSetFileSizes (IN PFILE_OBJECT FileObject,
|
||||||
|
IN PCC_FILE_SIZES FileSizes)
|
||||||
|
{
|
||||||
|
KIRQL oldirql;
|
||||||
|
PBCB Bcb;
|
||||||
|
PLIST_ENTRY current_entry;
|
||||||
|
PCACHE_SEGMENT current;
|
||||||
|
LIST_ENTRY FreeListHead;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
DPRINT("CcSetFileSizes(FileObject %x, FileSizes %x)\n",
|
||||||
|
FileObject, FileSizes);
|
||||||
|
DPRINT("AllocationSize %d, FileSize %d, ValidDataLength %d\n",
|
||||||
|
(ULONG)FileSizes->AllocationSize.QuadPart,
|
||||||
|
(ULONG)FileSizes->FileSize.QuadPart,
|
||||||
|
(ULONG)FileSizes->ValidDataLength.QuadPart);
|
||||||
|
|
||||||
|
Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
|
||||||
|
assert(Bcb);
|
||||||
|
|
||||||
|
if (FileSizes->AllocationSize.QuadPart < Bcb->AllocationSize.QuadPart)
|
||||||
|
{
|
||||||
|
InitializeListHead(&FreeListHead);
|
||||||
|
ExAcquireFastMutex(&ViewLock);
|
||||||
|
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
||||||
|
|
||||||
|
current_entry = Bcb->BcbSegmentListHead.Flink;
|
||||||
|
while (current_entry != &Bcb->BcbSegmentListHead)
|
||||||
|
{
|
||||||
|
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
||||||
|
current_entry = current_entry->Flink;
|
||||||
|
if (current->FileOffset > FileSizes->AllocationSize.QuadPart)
|
||||||
|
{
|
||||||
|
if (current->ReferenceCount == 0 || (current->ReferenceCount == 1 && current->Dirty))
|
||||||
|
{
|
||||||
|
RemoveEntryList(¤t->BcbSegmentListEntry);
|
||||||
|
RemoveEntryList(¤t->CacheSegmentListEntry);
|
||||||
|
RemoveEntryList(¤t->CacheSegmentLRUListEntry);
|
||||||
|
if (current->Dirty)
|
||||||
|
{
|
||||||
|
RemoveEntryList(¤t->DirtySegmentListEntry);
|
||||||
|
DirtyPageCount -= Bcb->CacheSegmentSize / PAGE_SIZE;
|
||||||
|
}
|
||||||
|
InsertHeadList(&FreeListHead, ¤t->BcbSegmentListEntry);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DPRINT1("Anyone has referenced a cache segment behind the new size.\n");
|
||||||
|
KEBUGCHECK(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Bcb->AllocationSize = FileSizes->AllocationSize;
|
||||||
|
Bcb->FileSize = FileSizes->FileSize;
|
||||||
|
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
||||||
|
ExReleaseFastMutex(&ViewLock);
|
||||||
|
|
||||||
|
current_entry = FreeListHead.Flink;
|
||||||
|
while(current_entry != &FreeListHead)
|
||||||
|
{
|
||||||
|
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
||||||
|
current_entry = current_entry->Flink;
|
||||||
|
Status = CcRosInternalFreeCacheSegment(current);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("CcRosInternalFreeCacheSegment failed, status = %x\n");
|
||||||
|
KEBUGCHECK(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
||||||
|
Bcb->AllocationSize = FileSizes->AllocationSize;
|
||||||
|
Bcb->FileSize = FileSizes->FileSize;
|
||||||
|
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcSetLogHandleForFile (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PVOID LogHandle,
|
||||||
|
IN PFLUSH_TO_LSN FlushToLsnRoutine
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
CcUninitializeCacheMap (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER TruncateSize OPTIONAL,
|
||||||
|
IN PCACHE_UNINITIALIZE_EVENT UninitializeCompleteEvent OPTIONAL
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
|
}
|
135
reactos/ntoskrnl/cc/mdl.c
Normal file
135
reactos/ntoskrnl/cc/mdl.c
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
/* COPYRIGHT: See COPYING in the top level directory
|
||||||
|
* PROJECT: ReactOS kernel
|
||||||
|
* FILE: ntoskrnl/cc/fs.c
|
||||||
|
* PURPOSE: Implements MDL Cache Manager Functions
|
||||||
|
* PROGRAMMER: Alex Ionescu
|
||||||
|
* UPDATE HISTORY:
|
||||||
|
* Created 20/06/04
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* INCLUDES ******************************************************************/
|
||||||
|
|
||||||
|
#include <ddk/ntddk.h>
|
||||||
|
#include <ddk/ntifs.h>
|
||||||
|
#include <internal/mm.h>
|
||||||
|
#include <internal/cc.h>
|
||||||
|
#include <internal/pool.h>
|
||||||
|
#include <internal/io.h>
|
||||||
|
#include <ntos/minmax.h>
|
||||||
|
|
||||||
|
#define NDEBUG
|
||||||
|
#include <internal/debug.h>
|
||||||
|
|
||||||
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcMdlRead (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PMDL * MdlChain,
|
||||||
|
OUT PIO_STATUS_BLOCK IoStatus
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* NAME INTERNAL
|
||||||
|
* CcMdlReadCompleteDev@8
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
* MdlChain
|
||||||
|
* DeviceObject
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
* None.
|
||||||
|
*
|
||||||
|
* NOTE
|
||||||
|
* Used by CcMdlReadComplete@8 and FsRtl
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
VOID STDCALL
|
||||||
|
CcMdlReadCompleteDev (IN PMDL MdlChain,
|
||||||
|
IN PDEVICE_OBJECT DeviceObject)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**********************************************************************
|
||||||
|
* NAME EXPORTED
|
||||||
|
* CcMdlReadComplete@8
|
||||||
|
*
|
||||||
|
* DESCRIPTION
|
||||||
|
*
|
||||||
|
* ARGUMENTS
|
||||||
|
*
|
||||||
|
* RETURN VALUE
|
||||||
|
* None.
|
||||||
|
*
|
||||||
|
* NOTE
|
||||||
|
* From Bo Branten's ntifs.h v13.
|
||||||
|
*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID STDCALL
|
||||||
|
CcMdlReadComplete (IN PFILE_OBJECT FileObject,
|
||||||
|
IN PMDL MdlChain)
|
||||||
|
{
|
||||||
|
PDEVICE_OBJECT DeviceObject = NULL;
|
||||||
|
|
||||||
|
DeviceObject = IoGetRelatedDeviceObject (FileObject);
|
||||||
|
/* FIXME: try fast I/O first */
|
||||||
|
CcMdlReadCompleteDev (MdlChain,
|
||||||
|
DeviceObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcMdlWriteComplete (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN PMDL MdlChain
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcMdlWriteAbort (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PMDL MdlChain
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcPrepareMdlWrite (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN ULONG Length,
|
||||||
|
OUT PMDL * MdlChain,
|
||||||
|
OUT PIO_STATUS_BLOCK IoStatus
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
|
@ -16,147 +16,3 @@
|
||||||
#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
|
#define ROUND_UP(N, S) ((((N) + (S) - 1) / (S)) * (S))
|
||||||
#define ROUND_DOWN(N, S) (((N) % (S)) ? ROUND_UP(N, S) - S : N)
|
#define ROUND_DOWN(N, S) (((N) % (S)) ? ROUND_UP(N, S) - S : N)
|
||||||
|
|
||||||
extern FAST_MUTEX ViewLock;
|
|
||||||
extern ULONG DirtyPageCount;
|
|
||||||
|
|
||||||
NTSTATUS CcRosInternalFreeCacheSegment(PCACHE_SEGMENT CacheSeg);
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* NAME INTERNAL
|
|
||||||
* CcMdlReadCompleteDev@8
|
|
||||||
*
|
|
||||||
* DESCRIPTION
|
|
||||||
*
|
|
||||||
* ARGUMENTS
|
|
||||||
* MdlChain
|
|
||||||
* DeviceObject
|
|
||||||
*
|
|
||||||
* RETURN VALUE
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* NOTE
|
|
||||||
* Used by CcMdlReadComplete@8 and FsRtl
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
VOID STDCALL
|
|
||||||
CcMdlReadCompleteDev (IN PMDL MdlChain,
|
|
||||||
IN PDEVICE_OBJECT DeviceObject)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************
|
|
||||||
* NAME EXPORTED
|
|
||||||
* CcMdlReadComplete@8
|
|
||||||
*
|
|
||||||
* DESCRIPTION
|
|
||||||
*
|
|
||||||
* ARGUMENTS
|
|
||||||
*
|
|
||||||
* RETURN VALUE
|
|
||||||
* None.
|
|
||||||
*
|
|
||||||
* NOTE
|
|
||||||
* From Bo Branten's ntifs.h v13.
|
|
||||||
*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
VOID STDCALL
|
|
||||||
CcMdlReadComplete (IN PFILE_OBJECT FileObject,
|
|
||||||
IN PMDL MdlChain)
|
|
||||||
{
|
|
||||||
PDEVICE_OBJECT DeviceObject = NULL;
|
|
||||||
|
|
||||||
DeviceObject = IoGetRelatedDeviceObject (FileObject);
|
|
||||||
/* FIXME: try fast I/O first */
|
|
||||||
CcMdlReadCompleteDev (MdlChain,
|
|
||||||
DeviceObject);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @implemented
|
|
||||||
*/
|
|
||||||
VOID STDCALL
|
|
||||||
CcSetFileSizes (IN PFILE_OBJECT FileObject,
|
|
||||||
IN PCC_FILE_SIZES FileSizes)
|
|
||||||
{
|
|
||||||
KIRQL oldirql;
|
|
||||||
PBCB Bcb;
|
|
||||||
PLIST_ENTRY current_entry;
|
|
||||||
PCACHE_SEGMENT current;
|
|
||||||
LIST_ENTRY FreeListHead;
|
|
||||||
NTSTATUS Status;
|
|
||||||
|
|
||||||
DPRINT("CcSetFileSizes(FileObject %x, FileSizes %x)\n",
|
|
||||||
FileObject, FileSizes);
|
|
||||||
DPRINT("AllocationSize %d, FileSize %d, ValidDataLength %d\n",
|
|
||||||
(ULONG)FileSizes->AllocationSize.QuadPart,
|
|
||||||
(ULONG)FileSizes->FileSize.QuadPart,
|
|
||||||
(ULONG)FileSizes->ValidDataLength.QuadPart);
|
|
||||||
|
|
||||||
Bcb = FileObject->SectionObjectPointer->SharedCacheMap;
|
|
||||||
assert(Bcb);
|
|
||||||
|
|
||||||
if (FileSizes->AllocationSize.QuadPart < Bcb->AllocationSize.QuadPart)
|
|
||||||
{
|
|
||||||
InitializeListHead(&FreeListHead);
|
|
||||||
ExAcquireFastMutex(&ViewLock);
|
|
||||||
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
|
||||||
|
|
||||||
current_entry = Bcb->BcbSegmentListHead.Flink;
|
|
||||||
while (current_entry != &Bcb->BcbSegmentListHead)
|
|
||||||
{
|
|
||||||
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
|
||||||
current_entry = current_entry->Flink;
|
|
||||||
if (current->FileOffset > FileSizes->AllocationSize.QuadPart)
|
|
||||||
{
|
|
||||||
if (current->ReferenceCount == 0 || (current->ReferenceCount == 1 && current->Dirty))
|
|
||||||
{
|
|
||||||
RemoveEntryList(¤t->BcbSegmentListEntry);
|
|
||||||
RemoveEntryList(¤t->CacheSegmentListEntry);
|
|
||||||
RemoveEntryList(¤t->CacheSegmentLRUListEntry);
|
|
||||||
if (current->Dirty)
|
|
||||||
{
|
|
||||||
RemoveEntryList(¤t->DirtySegmentListEntry);
|
|
||||||
DirtyPageCount -= Bcb->CacheSegmentSize / PAGE_SIZE;
|
|
||||||
}
|
|
||||||
InsertHeadList(&FreeListHead, ¤t->BcbSegmentListEntry);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DPRINT1("Anyone has referenced a cache segment behind the new size.\n");
|
|
||||||
KEBUGCHECK(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Bcb->AllocationSize = FileSizes->AllocationSize;
|
|
||||||
Bcb->FileSize = FileSizes->FileSize;
|
|
||||||
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
|
||||||
ExReleaseFastMutex(&ViewLock);
|
|
||||||
|
|
||||||
current_entry = FreeListHead.Flink;
|
|
||||||
while(current_entry != &FreeListHead)
|
|
||||||
{
|
|
||||||
current = CONTAINING_RECORD(current_entry, CACHE_SEGMENT, BcbSegmentListEntry);
|
|
||||||
current_entry = current_entry->Flink;
|
|
||||||
Status = CcRosInternalFreeCacheSegment(current);
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
DPRINT1("CcRosInternalFreeCacheSegment failed, status = %x\n");
|
|
||||||
KEBUGCHECK(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
KeAcquireSpinLock(&Bcb->BcbLock, &oldirql);
|
|
||||||
Bcb->AllocationSize = FileSizes->AllocationSize;
|
|
||||||
Bcb->FileSize = FileSizes->FileSize;
|
|
||||||
KeReleaseSpinLock(&Bcb->BcbLock, oldirql);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: pin.c,v 1.14 2003/12/30 18:52:03 fireball Exp $
|
/* $Id: pin.c,v 1.15 2004/06/21 04:11:44 ion Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -113,15 +113,57 @@ CcMapData (IN PFILE_OBJECT FileObject,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
VOID STDCALL
|
BOOLEAN
|
||||||
CcUnpinData (IN PVOID Bcb)
|
STDCALL
|
||||||
|
CcPinMappedData (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN BOOLEAN Wait,
|
||||||
|
OUT PVOID * Bcb
|
||||||
|
)
|
||||||
{
|
{
|
||||||
PINTERNAL_BCB iBcb = Bcb;
|
UNIMPLEMENTED;
|
||||||
CcRosReleaseCacheSegment(iBcb->CacheSegment->Bcb, iBcb->CacheSegment, TRUE,
|
return FALSE;
|
||||||
iBcb->Dirty, FALSE);
|
}
|
||||||
ExFreeToNPagedLookasideList(&iBcbLookasideList, iBcb);
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
CcPinRead (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN BOOLEAN Wait,
|
||||||
|
OUT PVOID * Bcb,
|
||||||
|
OUT PVOID * Buffer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
BOOLEAN
|
||||||
|
STDCALL
|
||||||
|
CcPreparePinWrite (
|
||||||
|
IN PFILE_OBJECT FileObject,
|
||||||
|
IN PLARGE_INTEGER FileOffset,
|
||||||
|
IN ULONG Length,
|
||||||
|
IN BOOLEAN Zero,
|
||||||
|
IN BOOLEAN Wait,
|
||||||
|
OUT PVOID * Bcb,
|
||||||
|
OUT PVOID * Buffer
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -135,3 +177,28 @@ CcSetDirtyPinnedData (IN PVOID Bcb,
|
||||||
iBcb->Dirty = TRUE;
|
iBcb->Dirty = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
VOID STDCALL
|
||||||
|
CcUnpinData (IN PVOID Bcb)
|
||||||
|
{
|
||||||
|
PINTERNAL_BCB iBcb = Bcb;
|
||||||
|
CcRosReleaseCacheSegment(iBcb->CacheSegment->Bcb, iBcb->CacheSegment, TRUE,
|
||||||
|
iBcb->Dirty, FALSE);
|
||||||
|
ExFreeToNPagedLookasideList(&iBcbLookasideList, iBcb);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @unimplemented
|
||||||
|
*/
|
||||||
|
VOID
|
||||||
|
STDCALL
|
||||||
|
CcUnpinDataForThread (
|
||||||
|
IN PVOID Bcb,
|
||||||
|
IN ERESOURCE_THREAD ResourceThreadId
|
||||||
|
)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue