windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/infocomm/cache2/tlcach.h
2020-09-26 16:20:57 +08:00

104 lines
2.2 KiB
C++

/**********************************************************************/
/** Microsoft Windows NT **/
/** Copyright(c) Microsoft Corp., 1998 **/
/**********************************************************************/
/*
tlcach.h
This module declares the private interface to the two level cache
FILE HISTORY:
BAlam 10-31-98 Initial Revision
*/
#ifndef _TLCACH_H_
#define _TLCACH_H_
//
// Default interval between adjusting the memory cache max size
//
#define DEFAULT_ADJUSTMENT_TIME 60000
DWORD
InitializeTwoLevelCache(
IN DWORDLONG cbMemoryCacheSize
);
DWORD
ReadFileIntoMemoryCache(
IN HANDLE hFile,
IN DWORD cbFile,
OUT DWORD * pcbRequired,
OUT VOID ** ppvBuffer
);
DWORD
ReleaseFromMemoryCache(
IN VOID * pvBuffer,
IN DWORD cbBuffer
);
DWORD
TerminateTwoLevelCache(
VOID
);
DWORD
DumpMemoryCacheToHtml(
IN CHAR * pszBuffer,
IN OUT DWORD * pcbBuffer
);
VOID
QueryMemoryCacheStatistics(
IN INETA_CACHE_STATISTICS * pCacheCtrs,
IN BOOL fClearAll
);
#if defined(LOOKASIDE)
class CLookAside
{
public:
CLookAside(
ALLOC_CACHE_CONFIGURATION* paacc,
SIZE_T caacc);
~CLookAside();
LPVOID
Alloc(
IN DWORD cbSize);
BOOL
Free(
IN LPVOID pv,
IN DWORD cbSize);
protected:
enum {
HEAP_PREFIX = 8,
HEAP_SUFFIX = 0,
ACACHE_OVERHEAD = sizeof(DWORD),
SIGNATURE = 'ALsT',
SIGNATURE_X = 'XLsT',
};
int
_FindAllocator(
IN DWORD cbSize);
DWORD m_dwSignature;
ALLOC_CACHE_HANDLER** m_apach; // array of acaches
ALLOC_CACHE_CONFIGURATION* m_aacc; // parallel array of config data
SIZE_T m_cach; // number of acaches
SIZE_T m_nMinSize;
SIZE_T m_nMaxSize;
};
#endif // LOOKASIDE
#endif