; 
; 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
