Moved all definitions for internal structures and functions to cc.h.

svn path=/trunk/; revision=3968
This commit is contained in:
Hartmut Birr 2003-01-11 15:21:09 +00:00
parent ec67f794e9
commit a0e6246535
2 changed files with 62 additions and 40 deletions

View file

@ -3,33 +3,13 @@
struct _BCB; struct _BCB;
typedef struct _BCB* PBCB;
struct _MEMORY_AREA;
struct _CACHE_SEGMENT;
typedef struct _CACHE_SEGMENT* PCACHE_SEGMENT;
NTSTATUS STDCALL
CcRosReleaseCacheSegment (struct _BCB* Bcb,
struct _CACHE_SEGMENT* CacheSeg,
BOOLEAN Valid,
BOOLEAN Dirty,
BOOLEAN Mapped);
NTSTATUS STDCALL
CcRosRequestCacheSegment (struct _BCB* Bcb,
ULONG FileOffset,
PVOID* BaseAddress,
PBOOLEAN UptoDate,
struct _CACHE_SEGMENT** CacheSeg);
NTSTATUS STDCALL NTSTATUS STDCALL
CcRosInitializeFileCache (PFILE_OBJECT FileObject, CcRosInitializeFileCache (PFILE_OBJECT FileObject,
struct _BCB** Bcb, struct _BCB** Bcb,
ULONG CacheSegmentSize); ULONG CacheSegmentSize);
NTSTATUS STDCALL NTSTATUS STDCALL
CcRosReleaseFileCache (PFILE_OBJECT FileObject, CcRosReleaseFileCache (PFILE_OBJECT FileObject,
struct _BCB* Bcb); struct _BCB* Bcb);
#include <ddk/cctypes.h> #include <ddk/cctypes.h>

View file

@ -1,18 +1,22 @@
#ifndef __INCLUDE_INTERNAL_CC_H #ifndef __INCLUDE_INTERNAL_CC_H
#define __INCLUDE_INTERNAL_CC_H #define __INCLUDE_INTERNAL_CC_H
/* $Id: cc.h,v 1.16 2002/09/08 10:23:21 chorns Exp $ */ /* $Id: cc.h,v 1.17 2003/01/11 15:21:09 hbirr Exp $ */
#include <ddk/ntifs.h> #include <ddk/ntifs.h>
typedef struct _BCB typedef struct _BCB
{ {
LIST_ENTRY BcbSegmentListHead; LIST_ENTRY BcbSegmentListHead;
LIST_ENTRY BcbRemoveListEntry;
BOOLEAN RemoveOnClose;
ULONG TimeStamp;
PFILE_OBJECT FileObject; PFILE_OBJECT FileObject;
ULONG CacheSegmentSize; ULONG CacheSegmentSize;
LARGE_INTEGER AllocationSize; LARGE_INTEGER AllocationSize;
LARGE_INTEGER FileSize; LARGE_INTEGER FileSize;
KSPIN_LOCK BcbLock; KSPIN_LOCK BcbLock;
ULONG RefCount; ULONG RefCount;
} BCB; } BCB, *PBCB;
typedef struct _CACHE_SEGMENT typedef struct _CACHE_SEGMENT
{ {
@ -45,45 +49,83 @@ typedef struct _CACHE_SEGMENT
PBCB Bcb; PBCB Bcb;
/* Pointer to the next cache segment in a chain. */ /* Pointer to the next cache segment in a chain. */
struct _CACHE_SEGMENT* NextInChain; struct _CACHE_SEGMENT* NextInChain;
} CACHE_SEGMENT; } CACHE_SEGMENT, *PCACHE_SEGMENT;
typedef struct _INTERNAL_BCB
{
PUBLIC_BCB PFCB;
PCACHE_SEGMENT CacheSegment;
BOOLEAN Dirty;
} INTERNAL_BCB, *PINTERNAL_BCB;
VOID STDCALL VOID STDCALL
CcMdlReadCompleteDev (IN PMDL MdlChain, CcMdlReadCompleteDev (IN PMDL MdlChain,
IN PDEVICE_OBJECT DeviceObject); IN PDEVICE_OBJECT DeviceObject);
NTSTATUS NTSTATUS
CcRosGetCacheSegment(PBCB Bcb, CcRosGetCacheSegment(PBCB Bcb,
ULONG FileOffset, ULONG FileOffset,
PULONG BaseOffset, PULONG BaseOffset,
PVOID* BaseAddress, PVOID* BaseAddress,
PBOOLEAN UptoDate, PBOOLEAN UptoDate,
PCACHE_SEGMENT* CacheSeg); PCACHE_SEGMENT* CacheSeg);
VOID VOID
CcInitView(VOID); CcInitView(VOID);
NTSTATUS
CcRosFreeCacheSegment(PBCB, PCACHE_SEGMENT);
NTSTATUS STDCALL CcRosFreeCacheSegment(PBCB, PCACHE_SEGMENT); NTSTATUS
ReadCacheSegment(PCACHE_SEGMENT CacheSeg);
NTSTATUS ReadCacheSegment(PCACHE_SEGMENT CacheSeg); NTSTATUS
WriteCacheSegment(PCACHE_SEGMENT CacheSeg);
NTSTATUS WriteCacheSegment(PCACHE_SEGMENT CacheSeg);
VOID CcInit(VOID); VOID CcInit(VOID);
NTSTATUS NTSTATUS
CcRosUnmapCacheSegment(PBCB Bcb, ULONG FileOffset, BOOLEAN NowDirty); CcRosUnmapCacheSegment(PBCB Bcb, ULONG FileOffset, BOOLEAN NowDirty);
NTSTATUS NTSTATUS
CcRosSuggestFreeCacheSegment(PBCB Bcb, ULONG FileOffset, BOOLEAN NowDirty); CcRosSuggestFreeCacheSegment(PBCB Bcb, ULONG FileOffset, BOOLEAN NowDirty);
NTSTATUS NTSTATUS
CcRosGetCacheSegmentChain(PBCB Bcb, CcRosGetCacheSegmentChain(PBCB Bcb,
ULONG FileOffset, ULONG FileOffset,
ULONG Length, ULONG Length,
PCACHE_SEGMENT* CacheSeg); PCACHE_SEGMENT* CacheSeg);
VOID CcInitCacheZeroPage(VOID);
VOID
CcInitCacheZeroPage(VOID);
NTSTATUS NTSTATUS
CcRosMarkDirtyCacheSegment(PBCB Bcb, ULONG FileOffset); CcRosMarkDirtyCacheSegment(PBCB Bcb, ULONG FileOffset);
NTSTATUS NTSTATUS
CcRosFlushDirtyPages(ULONG Target, PULONG Count); CcRosFlushDirtyPages(ULONG Target, PULONG Count);
VOID CcRosDereferenceCache(PFILE_OBJECT FileObject); VOID
VOID CcRosReferenceCache(PFILE_OBJECT FileObject); CcRosDereferenceCache(PFILE_OBJECT FileObject);
VOID
CcRosReferenceCache(PFILE_OBJECT FileObject);
VOID
CcRosSetRemoveOnClose(PSECTION_OBJECT_POINTERS SectionObjectPointer);
NTSTATUS
CcRosReleaseCacheSegment (BCB* Bcb,
CACHE_SEGMENT* CacheSeg,
BOOLEAN Valid,
BOOLEAN Dirty,
BOOLEAN Mapped);
NTSTATUS STDCALL
CcRosRequestCacheSegment (BCB* Bcb,
ULONG FileOffset,
PVOID* BaseAddress,
PBOOLEAN UptoDate,
CACHE_SEGMENT** CacheSeg);
#endif #endif