mirror of https://github.com/tongzx/nt5src
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.
87 lines
2.0 KiB
87 lines
2.0 KiB
#ifndef _CSPCACHE_H_
|
|
#define _CSPCACHE_H_
|
|
|
|
#include <windows.h>
|
|
|
|
#define MAX_KEY_SIZE (50 * sizeof(CHAR))
|
|
|
|
/*
|
|
typedef enum
|
|
{
|
|
CardGeneralFile,
|
|
CardContainer,
|
|
CardFreeSpace,
|
|
CardCapabilities
|
|
} CACHE_TYPES;
|
|
*/
|
|
|
|
typedef struct _CACHE_ITEM
|
|
{
|
|
//CACHE_TYPES CacheType;
|
|
struct _CACHE_ITEM *pNext;
|
|
LPSTR pszKey;
|
|
PVOID pvData;
|
|
} CACHE_ITEM, *PCACHE_ITEM;
|
|
|
|
typedef struct _CACHE_HEAD
|
|
{
|
|
PCACHE_ITEM pCacheList;
|
|
DWORD dwItemListCacheStamp;
|
|
BOOL fAllItemsPresent;
|
|
} CACHE_HEAD, *PCACHE_HEAD;
|
|
|
|
typedef PCACHE_HEAD CACHE_HANDLE;
|
|
|
|
//
|
|
// Function: CacheGetItem
|
|
//
|
|
// Purpose: Search the provided cache list for the item
|
|
// specified in pszKey. The search is conducted first by
|
|
// CacheType, then by pszKey if pszKey is not NULL.
|
|
// If the item is found, move it to
|
|
// the front of the list and return its pvData member, and return
|
|
// TRUE.
|
|
// If the item is not found, return FALSE.
|
|
//
|
|
BOOL CacheGetItem(
|
|
IN CACHE_HANDLE *phCache,
|
|
IN CACHE_TYPES CacheType,
|
|
IN OPTIONAL LPSTR pszKey,
|
|
OUT PVOID *ppvData);
|
|
|
|
//
|
|
// Function: CacheDeleteCache
|
|
//
|
|
// Purpose: Free the provided cache list.
|
|
//
|
|
void CacheDeleteCache(
|
|
IN OUT CACHE_HANDLE hCache);
|
|
|
|
//
|
|
// Function: CacheAddItem
|
|
//
|
|
// Purpose: If the key pszKey does not already exist in the provided cache
|
|
// list, add the key and associate pvData with it. In this case *ppvOldData
|
|
// will be set to NULL. If pszKey already exists, update the key with the
|
|
// provided pvData, and set *ppvOldData to the previous pvData of the
|
|
// specified key.
|
|
//
|
|
DWORD CacheAddItem(
|
|
IN OUT CACHE_HANDLE *phCache,
|
|
IN CACHE_TYPES CacheType,
|
|
IN OPTIONAL LPSTR pszKey,
|
|
IN PVOID pvData,
|
|
OUT PVOID *ppvOldData);
|
|
|
|
//
|
|
// Function: CacheDeleteItem
|
|
//
|
|
// Purpose: Search the provided cache list for pszKey. If the node is found,
|
|
// remove it from the list and return its pvData member. If the node is not
|
|
// found, return NULL.
|
|
//
|
|
PVOID CacheDeleteItem(
|
|
IN CACHE_HANDLE *phCache,
|
|
LPSTR pszKey);
|
|
|
|
#endif
|