; 
; Exports of file W3CACHE.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY W3CACHE.dll
EXPORTS
; public: __cdecl CACHE_ENTRY::CACHE_ENTRY(class CACHE_ENTRY const & __ptr64) __ptr64
??0CACHE_ENTRY@@QEAA@AEBV0@@Z
; public: __cdecl CACHE_ENTRY::CACHE_ENTRY(class OBJECT_CACHE * __ptr64,unsigned long) __ptr64
??0CACHE_ENTRY@@QEAA@PEAVOBJECT_CACHE@@K@Z
; public: __cdecl OBJECT_CACHE::OBJECT_CACHE(void) __ptr64
??0OBJECT_CACHE@@QEAA@XZ
; protected: virtual __cdecl CACHE_ENTRY::~CACHE_ENTRY(void) __ptr64
??1CACHE_ENTRY@@MEAA@XZ
; public: virtual __cdecl OBJECT_CACHE::~OBJECT_CACHE(void) __ptr64
??1OBJECT_CACHE@@UEAA@XZ
; public: class CACHE_ENTRY & __ptr64 __cdecl CACHE_ENTRY::operator=(class CACHE_ENTRY const & __ptr64) __ptr64
??4CACHE_ENTRY@@QEAAAEAV0@AEBV0@@Z
; const  CACHE_ENTRY::`vftable'
??_7CACHE_ENTRY@@6B@
; public: long __cdecl OBJECT_CACHE::AddCacheEntry(class CACHE_ENTRY * __ptr64) __ptr64
?AddCacheEntry@OBJECT_CACHE@@QEAAJPEAVCACHE_ENTRY@@@Z
; public: long __cdecl CACHE_ENTRY::AddDirmonInvalidator(struct DIRMON_CONFIG * __ptr64) __ptr64
?AddDirmonInvalidator@CACHE_ENTRY@@QEAAJPEAUDIRMON_CONFIG@@@Z
; public: long __cdecl OBJECT_CACHE::AddDirmonInvalidator(struct DIRMON_CONFIG * __ptr64,class CDirMonitorEntry * __ptr64 * __ptr64) __ptr64
?AddDirmonInvalidator@OBJECT_CACHE@@QEAAJPEAUDIRMON_CONFIG@@PEAPEAVCDirMonitorEntry@@@Z
; public: int __cdecl CACHE_ENTRY::CheckSignature(void)const  __ptr64
?CheckSignature@CACHE_ENTRY@@QEBAHXZ
; public: virtual int __cdecl CACHE_ENTRY::Checkout(class CACHE_USER * __ptr64) __ptr64
?Checkout@CACHE_ENTRY@@UEAAHPEAVCACHE_USER@@@Z
; public: void __cdecl OBJECT_CACHE::CleanupCacheEntryListItems(struct _LIST_ENTRY * __ptr64) __ptr64
?CleanupCacheEntryListItems@OBJECT_CACHE@@QEAAXPEAU_LIST_ENTRY@@@Z
; public: void __cdecl CACHE_ENTRY::DereferenceCacheEntry(void) __ptr64
?DereferenceCacheEntry@CACHE_ENTRY@@QEAAXXZ
; public: long __cdecl OBJECT_CACHE::FindCacheEntry(class CACHE_KEY * __ptr64,class CACHE_ENTRY * __ptr64 * __ptr64,int * __ptr64) __ptr64
?FindCacheEntry@OBJECT_CACHE@@QEAAJPEAVCACHE_KEY@@PEAPEAVCACHE_ENTRY@@PEAH@Z
; public: void __cdecl OBJECT_CACHE::FlushByRegChange(struct _LIST_ENTRY * __ptr64) __ptr64
?FlushByRegChange@OBJECT_CACHE@@QEAAXPEAU_LIST_ENTRY@@@Z
; public: long __cdecl OBJECT_CACHE::FlushCacheEntry(class CACHE_KEY * __ptr64) __ptr64
?FlushCacheEntry@OBJECT_CACHE@@QEAAJPEAVCACHE_KEY@@@Z
; public: void __cdecl CACHE_ENTRY::LockCacheEntry(void) __ptr64
?LockCacheEntry@CACHE_ENTRY@@QEAAXXZ
; public: class OBJECT_CACHE * __ptr64 __cdecl CACHE_ENTRY::QueryCache(void)const  __ptr64
?QueryCache@CACHE_ENTRY@@QEBAPEAVOBJECT_CACHE@@XZ
; public: int __cdecl CACHE_ENTRY::QueryCached(void)const  __ptr64
?QueryCached@CACHE_ENTRY@@QEBAHXZ
; public: int __cdecl CACHE_ENTRY::QueryIsFlushed(void)const  __ptr64
?QueryIsFlushed@CACHE_ENTRY@@QEBAHXZ
; public: virtual int __cdecl CACHE_ENTRY::QueryIsOkToFlushDirmon(unsigned short * __ptr64,unsigned long) __ptr64
?QueryIsOkToFlushDirmon@CACHE_ENTRY@@UEAAHPEAGK@Z
; public: int __cdecl CACHE_ENTRY::QueryIsOkToFlushMetadata(unsigned short * __ptr64,unsigned long) __ptr64
?QueryIsOkToFlushMetadata@CACHE_ENTRY@@QEAAHPEAGK@Z
; public: virtual int __cdecl CACHE_ENTRY::QueryIsOkToFlushTTL(void) __ptr64
?QueryIsOkToFlushTTL@CACHE_ENTRY@@UEAAHXZ
; public: virtual class STRU * __ptr64 __cdecl CACHE_ENTRY::QueryMetadataPath(void) __ptr64
?QueryMetadataPath@CACHE_ENTRY@@UEAAPEAVSTRU@@XZ
; public: void __cdecl CACHE_ENTRY::ReferenceCacheEntry(void) __ptr64
?ReferenceCacheEntry@CACHE_ENTRY@@QEAAXXZ
; public: long __cdecl OBJECT_CACHE::SetCacheConfiguration(unsigned long,unsigned long,unsigned long,struct CACHE_HINT_CONFIG * __ptr64) __ptr64
?SetCacheConfiguration@OBJECT_CACHE@@QEAAJKKKPEAUCACHE_HINT_CONFIG@@@Z
; public: void __cdecl CACHE_ENTRY::SetCached(int) __ptr64
?SetCached@CACHE_ENTRY@@QEAAXH@Z
; public: void __cdecl CACHE_ENTRY::SetFlushed(void) __ptr64
?SetFlushed@CACHE_ENTRY@@QEAAXXZ
; public: void __cdecl CACHE_ENTRY::UnlockCacheEntry(void) __ptr64
?UnlockCacheEntry@CACHE_ENTRY@@QEAAXXZ
; public: void __cdecl OBJECT_CACHE::UnregisterScavenger(void) __ptr64
?UnregisterScavenger@OBJECT_CACHE@@QEAAXXZ
; long __cdecl W3CacheDoMetadataInvalidation(unsigned short * __ptr64,unsigned long)
?W3CacheDoMetadataInvalidation@@YAJPEAGK@Z
; void __cdecl W3CacheFlushAllCaches(void)
?W3CacheFlushAllCaches@@YAXXZ
; long __cdecl W3CacheInitialize(struct IMSAdminBaseW * __ptr64)
?W3CacheInitialize@@YAJPEAUIMSAdminBaseW@@@Z
; long __cdecl W3CacheRegisterCache(class OBJECT_CACHE * __ptr64)
?W3CacheRegisterCache@@YAJPEAVOBJECT_CACHE@@@Z
; void __cdecl W3CacheTerminate(void)
?W3CacheTerminate@@YAXXZ
; long __cdecl W3CacheUnregisterCache(class OBJECT_CACHE * __ptr64)
?W3CacheUnregisterCache@@YAJPEAVOBJECT_CACHE@@@Z
