99 lines
3 KiB
C
99 lines
3 KiB
C
|
#pragma once
|
||
|
#ifndef CACHE_H
|
||
|
#define CACHE_H
|
||
|
|
||
|
|
||
|
#include "nameres.h"
|
||
|
#include "transprt.h"
|
||
|
#include "appctx.h"
|
||
|
|
||
|
// Forward declaration for friend statement.
|
||
|
class CAssemblyEnum;
|
||
|
class CScavenger;
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
// CCache
|
||
|
// static cache class
|
||
|
// ---------------------------------------------------------------------------
|
||
|
class CCache
|
||
|
{
|
||
|
|
||
|
friend CAssemblyEnum;
|
||
|
friend CScavenger;
|
||
|
|
||
|
public:
|
||
|
// Name res apis
|
||
|
|
||
|
// Inserts entry to name resolution cache.
|
||
|
static HRESULT InsertNameResEntry(IApplicationContext *pAppCtx,
|
||
|
IAssemblyName *pNameSrc, IAssemblyName *pNameTrgt);
|
||
|
|
||
|
// Retrieves name res entry from name resolution cache.
|
||
|
static HRESULT RetrieveNameResEntry(IApplicationContext *pAppCtx,
|
||
|
IAssemblyName *pNameSrc, CNameRes **ppNameRes);
|
||
|
|
||
|
// Retrieves name object target from name resolution cache.
|
||
|
static HRESULT RetrieveNameResTarget(IApplicationContext *pAppCtx,
|
||
|
IAssemblyName *pNameSrc, IAssemblyName **ppNameTrgt);
|
||
|
|
||
|
|
||
|
// Trans cache apis
|
||
|
|
||
|
// Inserts entry to transport cache.
|
||
|
|
||
|
static HRESULT InsertTransCacheEntry(IAssemblyName *pName,
|
||
|
LPTSTR szPath, DWORD dwKBSize, DWORD dwFlags, DWORD dwCommitFlags, DWORD dwPinBits,
|
||
|
CTransCache **ppTransCache);
|
||
|
|
||
|
// Retrieves transport cache entry from transport cache.
|
||
|
static HRESULT RetrieveTransCacheEntry(IAssemblyName *pName,
|
||
|
DWORD dwFlags, CTransCache **ppTransCache);
|
||
|
|
||
|
// Retrieves assembly in global cache with maximum
|
||
|
// revision/build number based on name passed in.
|
||
|
static HRESULT GetGlobalMax(IAssemblyName *pName,
|
||
|
IAssemblyName **ppNameGlobal, CTransCache **ppTransCache);
|
||
|
|
||
|
// Tests for presence of originator
|
||
|
static BOOL IsStronglyNamed(IAssemblyName *pName);
|
||
|
|
||
|
// Tests for presence of custom data
|
||
|
static BOOL IsCustom(IAssemblyName *pName);
|
||
|
|
||
|
|
||
|
// get assembly name object from nameres entry
|
||
|
static HRESULT NameFromNameResEntry(
|
||
|
CNameRes* pNRes, IAssemblyName **ppName);
|
||
|
|
||
|
// get name res entry from name
|
||
|
static HRESULT NameResEntryFromName(IApplicationContext *pAppCtx,
|
||
|
IAssemblyName *pName, CNameRes **ppNameRes);
|
||
|
|
||
|
// get trans cache entry from naming object.
|
||
|
static HRESULT TransCacheEntryFromName(IAssemblyName *pName,
|
||
|
DWORD dwFlags, CTransCache **ppTransCache);
|
||
|
|
||
|
// get assembly name object from transcache entry.
|
||
|
static HRESULT NameFromTransCacheEntry(
|
||
|
CTransCache *pTC, IAssemblyName **ppName);
|
||
|
|
||
|
protected:
|
||
|
|
||
|
// Determines cache index from name and flags.
|
||
|
static HRESULT ResolveCacheIndex(IAssemblyName *pName,
|
||
|
DWORD dwFlags, LPDWORD pdwCacheId);
|
||
|
|
||
|
// flush NameRes entries for deleted TransCache item
|
||
|
static HRESULT FlushNameResEntries(CTransCache* pDeletedTransCache);
|
||
|
|
||
|
// safe for delete?
|
||
|
static BOOL IsSafeForDeletion(CTransCache* pTC);
|
||
|
|
||
|
};
|
||
|
|
||
|
STDAPI NukeDownloadedCache();
|
||
|
|
||
|
STDAPI DeleteAssemblyFromTransportCache( LPCTSTR lpszCmdLine, DWORD *pDelCount );
|
||
|
|
||
|
#endif // CACHE_H
|