; 
; Exports of file W3COMLOG.dll
;
; Autogenerated by gen_exportdef
; Written by Kai Tietz, 2007
;
LIBRARY W3COMLOG.dll
EXPORTS
; public: __cdecl LOGGING::LOGGING(class LOGGING const & __ptr64) __ptr64
??0LOGGING@@QEAA@AEBV0@@Z
; public: __cdecl LOGGING::LOGGING(void) __ptr64
??0LOGGING@@QEAA@XZ
; private: __cdecl LOGGING::~LOGGING(void) __ptr64
??1LOGGING@@AEAA@XZ
; public: class LOGGING & __ptr64 __cdecl LOGGING::operator=(class LOGGING const & __ptr64) __ptr64
??4LOGGING@@QEAAAEAV0@AEBV0@@Z
; public: long __cdecl LOGGING::ActivateLogging(char const * __ptr64,unsigned short const * __ptr64,struct IMSAdminBaseW * __ptr64,int) __ptr64
?ActivateLogging@LOGGING@@QEAAJPEBDPEBGPEAUIMSAdminBaseW@@H@Z
; public: void __cdecl LOGGING::AddRef(void) __ptr64
?AddRef@LOGGING@@QEAAXXZ
; public: static long __cdecl LOGGING::Initialize(void)
?Initialize@LOGGING@@SAJXZ
; public: int __cdecl LOGGING::IsRequiredExtraLoggingFields(void)const  __ptr64
?IsRequiredExtraLoggingFields@LOGGING@@QEBAHXZ
; public: void __cdecl LOGGING::LogInformation(class LOG_CONTEXT * __ptr64) __ptr64
?LogInformation@LOGGING@@QEAAXPEAVLOG_CONTEXT@@@Z
; public: int __cdecl LOGGING::QueryDoCustomLogging(void)const  __ptr64
?QueryDoCustomLogging@LOGGING@@QEBAHXZ
; public: int __cdecl LOGGING::QueryDoUlLogging(void)const  __ptr64
?QueryDoUlLogging@LOGGING@@QEBAHXZ
; public: class MULTISZA const * __ptr64 __cdecl LOGGING::QueryExtraLoggingFields(void)const  __ptr64
?QueryExtraLoggingFields@LOGGING@@QEBAPEBVMULTISZA@@XZ
; public: void __cdecl LOGGING::Release(void) __ptr64
?Release@LOGGING@@QEAAXXZ
; public: static void __cdecl LOGGING::Terminate(void)
?Terminate@LOGGING@@SAXXZ
