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.
 
 
 
 
 
 

96 lines
3.0 KiB

/****************************************************************************/
// chdisp.h
//
// Cache Handler display driver specific header
//
// (C) 1997-2000 Microsoft Corp.
/****************************************************************************/
#ifndef _H_CHDISP
#define _H_CHDISP
#include <achapi.h>
#include <cbchash.h>
/*
* Prototypes.
*/
void RDPCALL CH_InitCache(
PCHCACHEDATA pCacheData,
unsigned NumEntries,
void *pContext,
BOOLEAN bNotifyRemoveLRU,
BOOLEAN bQueryRemoveLRU,
CHCACHECALLBACK pfnCacheCallback);
BOOLEAN RDPCALL CH_SearchCache(
CHCACHEHANDLE hCache,
UINT32 Key1,
UINT32 Key2,
void **pUserDefined,
unsigned *piCacheEntry);
unsigned RDPCALL CH_CacheKey(
CHCACHEHANDLE hCache,
UINT32 Key1,
UINT32 Key2,
void *UserDefined);
void RDPCALL CH_ForceCacheKeyAtIndex(
CHCACHEHANDLE hCache,
unsigned CacheEntryIndex,
UINT32 Key1,
UINT32 Key2,
void *UserDefined);
void RDPCALL CH_RemoveCacheEntry(CHCACHEHANDLE hCache, unsigned CacheEntryIndex);
void RDPCALL CH_ClearCache(CHCACHEHANDLE hCache);
UINT RDPCALL CH_CalculateCacheSize(UINT cacheEntries);
void RDPCALL CH_TouchCacheEntry(CHCACHEHANDLE hCache, unsigned CacheEntryIndex);
unsigned RDPCALL CH_GetLRUCacheEntry(CHCACHEHANDLE hCache);
/****************************************************************************/
// Generates a cache key for the given data. The First function is for the
// 1st block in a series, the Next for the next in the series. We wrap the
// CBC64 functions in order to provide asserts.
/****************************************************************************/
typedef CBC64Context CHDataKeyContext;
//__inline void __fastcall CH_CreateKeyFromFirstData(
// CHDataKeyContext *pContext,
// BYTE *pData,
// unsigned DataSize)
#define CH_CreateKeyFromFirstData(pContext, pData, DataSize) \
{ \
TRC_ASSERT((((UINT_PTR)(pData) % sizeof(UINT32)) == 0), \
(TB,"Data pointer not DWORD aligned")); \
TRC_ASSERT(((DataSize % sizeof(UINT32)) == 0), \
(TB,"Data size not multiple of DWORD")); \
\
FirstCBC64((pContext), (UINT32 *)(pData), (DataSize) / sizeof(UINT32)); \
}
//__inline void __fastcall CH_CreateKeyFromNextData(
// CHDataKeyContext *pContext,
// BYTE *pData,
// unsigned DataSize)
#define CH_CreateKeyFromNextData(pContext, pData, DataSize) \
{ \
TRC_ASSERT((((UINT_PTR)(pData) % sizeof(UINT32)) == 0), \
(TB,"Data pointer not DWORD aligned")); \
TRC_ASSERT(((DataSize % sizeof(UINT32)) == 0), \
(TB,"Data size not multiple of DWORD")); \
\
NextCBC64((pContext), (UINT32 *)(pData), (DataSize) / sizeof(UINT32)); \
}
#endif // _H_CHDISP