Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1992.
//
// File: cache.hxx
//
// Contents: Stream cache code
//
// Classes: CStreamCache
//
// Functions:
//
// History: 26-May-93 PhilipLa Created
//
//----------------------------------------------------------------------------
#ifndef __CACHE_HXX__
#define __CACHE_HXX__
class CDirectStream; class CDirectory; class CFat;
#define CACHESIZE 9
struct SCacheEntry { ULONG ulOffset; SECT sect; ULONG ulRunLength; inline SCacheEntry(); };
inline SCacheEntry::SCacheEntry() { ulOffset = MAX_ULONG; sect = ENDOFCHAIN; ulRunLength = 0; } SAFE_DFBASED_PTR(CBasedDirectStreamPtr, CDirectStream);
//+---------------------------------------------------------------------------
//
// Class: CStreamCache (stmc)
//
// Purpose: Cache for stream optimization
//
// Interface: See below.
//
// History: 14-Dec-92 PhilipLa Created
//
//----------------------------------------------------------------------------
class CStreamCache { public: CStreamCache(); ~CStreamCache(); void Init(CMStream *pmsParent, SID sid, CDirectStream *pds); void Empty(void);
SCODE GetSect(ULONG ulOffset, SECT *psect); SCODE GetESect(ULONG ulOffset, SECT *psect); SCODE EmptyRegion(ULONG oStart, ULONG oEnd); SCODE Allocate(CFat *pfat, ULONG cSect, SECT *psectStart); SCODE Contig( ULONG ulOffset, BOOL fWrite, SSegment STACKBASED *aseg, ULONG ulLength, ULONG *pcSeg); private: inline CDirectory *GetDir(void); inline CFat * GetFat(void); inline CFat * GetMiniFat(void); #ifdef LARGE_STREAMS
inline ULONGLONG GetSize(void); #else
inline ULONG GetSize(void); #endif
inline SID GetSid(void); inline CFat * SelectFat(void); SCODE GetStart(SECT *psectStart); inline BOOL CheckSegment(ULONG ulOffset, SCacheEntry sce, ULONG *pulCount, SECT *psectCache, ULONG *pulCacheOffset);
void CacheSegment(SSegment *pseg); SCacheEntry _ase[CACHESIZE]; CBasedDirectStreamPtr _pds; CBasedMStreamPtr _pmsParent; SID _sid; USHORT _uHighCacheIndex; USHORT _uNextCacheIndex; USHORT _uCacheState; };
#endif // #ifndef __CACHE_HXX__
|